<?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>226072</bug_id>
          
          <creation_ts>2021-05-21 02:12:55 -0700</creation_ts>
          <short_desc>[JSC] Use DataIC for AccessCase</short_desc>
          <delta_ts>2021-06-09 13:50:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>fujii</cc>
    
    <cc>jbedard</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762332</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-21 02:12:55 -0700</bug_when>
    <thetext>[JSC] Use DataIC for AccessCase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762333</commentid>
    <comment_count>1</comment_count>
      <attachid>429275</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-21 02:13:26 -0700</bug_when>
    <thetext>Created attachment 429275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762523</commentid>
    <comment_count>2</comment_count>
      <attachid>429325</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-21 12:43:32 -0700</bug_when>
    <thetext>Created attachment 429325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762669</commentid>
    <comment_count>3</comment_count>
      <attachid>429325</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-21 16:51:52 -0700</bug_when>
    <thetext>Comment on attachment 429325
Patch

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

&gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:137
&gt; +        $vm.dataLog(
&gt; +            $vm.preciseTime() + &quot;: &quot; + context + &quot;; numberOfOSRExits = &quot; + $vm.numberOfOSRExits() +

The way we&apos;d add WebKit/JSC specific logic to use a plan file run-benchmark uses.
We should probably be applying a patch that modifies _writeMark instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764185</commentid>
    <comment_count>4</comment_count>
      <attachid>429833</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-26 20:15:10 -0700</bug_when>
    <thetext>Created attachment 429833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764582</commentid>
    <comment_count>5</comment_count>
      <attachid>429955</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 16:43:09 -0700</bug_when>
    <thetext>Created attachment 429955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764583</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 16:47:30 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; Comment on attachment 429325 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429325&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:137
&gt; &gt; +        $vm.dataLog(
&gt; &gt; +            $vm.preciseTime() + &quot;: &quot; + context + &quot;; numberOfOSRExits = &quot; + $vm.numberOfOSRExits() +
&gt; 
&gt; The way we&apos;d add WebKit/JSC specific logic to use a plan file run-benchmark
&gt; uses.
&gt; We should probably be applying a patch that modifies _writeMark instead.

This is just for debugging and will not appear in the final (r?) patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764593</commentid>
    <comment_count>7</comment_count>
      <attachid>429959</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 17:13:48 -0700</bug_when>
    <thetext>Created attachment 429959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764594</commentid>
    <comment_count>8</comment_count>
      <attachid>429960</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 17:15:45 -0700</bug_when>
    <thetext>Created attachment 429960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764596</commentid>
    <comment_count>9</comment_count>
      <attachid>429961</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 17:19:08 -0700</bug_when>
    <thetext>Created attachment 429961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764604</commentid>
    <comment_count>10</comment_count>
      <attachid>429963</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 17:29:56 -0700</bug_when>
    <thetext>Created attachment 429963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764626</commentid>
    <comment_count>11</comment_count>
      <attachid>429973</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 18:45:20 -0700</bug_when>
    <thetext>Created attachment 429973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764631</commentid>
    <comment_count>12</comment_count>
      <attachid>429975</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 18:59:21 -0700</bug_when>
    <thetext>Created attachment 429975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764697</commentid>
    <comment_count>13</comment_count>
      <attachid>429992</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 23:32:24 -0700</bug_when>
    <thetext>Created attachment 429992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764699</commentid>
    <comment_count>14</comment_count>
      <attachid>429994</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 23:50:52 -0700</bug_when>
    <thetext>Created attachment 429994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764709</commentid>
    <comment_count>15</comment_count>
      <attachid>429995</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-28 01:14:39 -0700</bug_when>
    <thetext>Created attachment 429995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764713</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-28 02:13:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/78610881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765088</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-29 08:56:18 -0700</bug_when>
    <thetext>1. I should check the structure access while generating code to make the depende t explicit to AccessCase since Structure can be destroyed when CodeBlock is not destroyed yet. (Maybe, Transition case would be affected. And I should ise StructureID in AccessCase instead.)
2. I cleaned up InstanceOf generator and caused the crash now, need to check what’s wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765165</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-29 19:33:08 -0700</bug_when>
    <thetext>Ah, one thing I need to do is resolving the problem with GC-managed cells in AccessCases. It is possible that,

1. Shared JIT Stub holds AccessCases.
2. Shared JIT Stub is not destroyed, but cells in AccessCases are already daed. This can happen because the stub will be destroyed only after CodeBlock is destroyed.
3. We accidentally grab the cells that has the same pointer (while they are different structure IDs), and then we incorrectly use the almost-dying stub since this is still registered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765166</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-29 19:59:44 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #18)
&gt; Ah, one thing I need to do is resolving the problem with GC-managed cells in
&gt; AccessCases. It is possible that,
&gt; 
&gt; 1. Shared JIT Stub holds AccessCases.
&gt; 2. Shared JIT Stub is not destroyed, but cells in AccessCases are already
&gt; daed. This can happen because the stub will be destroyed only after
&gt; CodeBlock is destroyed.
&gt; 3. We accidentally grab the cells that has the same pointer (while they are
&gt; different structure IDs), and then we incorrectly use the almost-dying stub
&gt; since this is still registered.

Make weakReferences to embeddedStructureIDs. And put it in the stub so that we use these embedded IDs as the comparison target.
We should also make AccessCase&apos;s structure StructureID since the actually embedded one is StructureID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765183</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-29 22:29:42 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #19)
&gt; (In reply to Yusuke Suzuki from comment #18)
&gt; &gt; Ah, one thing I need to do is resolving the problem with GC-managed cells in
&gt; &gt; AccessCases. It is possible that,
&gt; &gt; 
&gt; &gt; 1. Shared JIT Stub holds AccessCases.
&gt; &gt; 2. Shared JIT Stub is not destroyed, but cells in AccessCases are already
&gt; &gt; daed. This can happen because the stub will be destroyed only after
&gt; &gt; CodeBlock is destroyed.
&gt; &gt; 3. We accidentally grab the cells that has the same pointer (while they are
&gt; &gt; different structure IDs), and then we incorrectly use the almost-dying stub
&gt; &gt; since this is still registered.
&gt; 
&gt; Make weakReferences to embeddedStructureIDs. And put it in the stub so that
&gt; we use these embedded IDs as the comparison target.
&gt; We should also make AccessCase&apos;s structure StructureID since the actually
&gt; embedded one is StructureID.

Will update the table by marking live ones at CodeBlock::finalizeUnconditionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765348</commentid>
    <comment_count>21</comment_count>
      <attachid>430184</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-31 00:49:39 -0700</bug_when>
    <thetext>Created attachment 430184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765432</commentid>
    <comment_count>22</comment_count>
      <attachid>430206</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-31 11:40:16 -0700</bug_when>
    <thetext>Created attachment 430206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765433</commentid>
    <comment_count>23</comment_count>
      <attachid>430207</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-31 11:57:44 -0700</bug_when>
    <thetext>Created attachment 430207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765445</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-31 14:05:02 -0700</bug_when>
    <thetext>Need to look into instanceof repatching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765513</commentid>
    <comment_count>25</comment_count>
      <attachid>430230</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-31 21:48:29 -0700</bug_when>
    <thetext>Created attachment 430230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765523</commentid>
    <comment_count>26</comment_count>
      <attachid>430234</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-31 23:57:48 -0700</bug_when>
    <thetext>Created attachment 430234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766161</commentid>
    <comment_count>27</comment_count>
      <attachid>430406</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-02 14:32:38 -0700</bug_when>
    <thetext>Created attachment 430406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766238</commentid>
    <comment_count>28</comment_count>
      <attachid>430426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-02 17:40:38 -0700</bug_when>
    <thetext>Created attachment 430426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766522</commentid>
    <comment_count>29</comment_count>
      <attachid>430426</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-03 14:27:51 -0700</bug_when>
    <thetext>Comment on attachment 430426
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:22
&gt; +

Maybe it&apos;s worth calling out some of the calling convention stuff you did?

&gt; Source/JavaScriptCore/assembler/LinkBuffer.h:238
&gt; +        // ASSERT(call.isFlagSet(Call::Linkable));
&gt; +        // ASSERT(!call.isFlagSet(Call::Near));

oops

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1598
&gt; +        if (codeBlock-&gt;useSharedIC())

nit: I think this should be called &quot;useDataICs&quot; since we need to always do this for data ICs, regardless of if this particular PolymorphicAccess gets shared or not

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:2238
&gt; +bool AccessCase::equalInSharing(const AccessCase&amp; lhs, const AccessCase&amp; rhs)

nit: Maybe just &quot;canBeShared&quot; as a name?

&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:2256
&gt; +    if (lhs.m_identifier != rhs.m_identifier)
&gt; +        return false;

if the offsets and structure&apos;s are equal, can&apos;t this be an assert?

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:282
&gt; +    AccessCase(AccessCase&amp;&amp; other)
&gt; +        : m_type(WTFMove(other.m_type))
&gt; +        , m_state(WTFMove(other.m_state))
&gt; +        , m_viaProxy(WTFMove(other.m_viaProxy))
&gt; +        , m_offset(WTFMove(other.m_offset))
&gt; +        , m_structure(WTFMove(other.m_structure))
&gt; +        , m_conditionSet(WTFMove(other.m_conditionSet))
&gt; +        , m_polyProtoAccessChain(WTFMove(other.m_polyProtoAccessChain))
&gt; +        , m_identifier(WTFMove(other.m_identifier))
&gt; +    { }

why does the default version no longer work?

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:387
&gt; +                return a.m_wrapped != b.m_wrapped;

why is this safe compared to ==?

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:456
&gt; +        const FixedVector&lt;RefPtr&lt;AccessCase&gt;&gt;&amp; m_keys;

nit: Why not call this m_cases?

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:474
&gt; +        m_stubs.add(key);

WTFMove(key)?

&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:384
&gt; +void InlineAccess::rewireStubAsJumpInAccessNotUsingInlineCode(CodeBlock* codeBlock, StructureStubInfo&amp; stubInfo, CodeLocationLabel&lt;JITStubRoutinePtrTag&gt; target)

I don&apos;t quite get the significance of this name. We do sometimes replace the inline code.

&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:401
&gt; +    CCallHelpers jit;
&gt; +
&gt; +    auto jump = jit.jump();
&gt; +
&gt; +    // We don&apos;t need a nop sled here because nobody should be jumping into the middle of an IC.
&gt; +    bool needsBranchCompaction = false;
&gt; +    LinkBuffer linkBuffer(jit, stubInfo.start, jit.m_assembler.buffer().codeSize(), LinkBuffer::Profile::InlineCache, JITCompilationMustSucceed, needsBranchCompaction);
&gt; +    RELEASE_ASSERT(linkBuffer.isValid());
&gt; +    linkBuffer.link(jump, target);
&gt; +
&gt; +    FINALIZE_CODE(linkBuffer, NoPtrTag, &quot;InlineAccess: linking constant jump&quot;);

Can this just call resetStubAsJumpInAccess?

&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:417
&gt; +                jit.move(CCallHelpers::TrustedImmPtr(&amp;stubInfo), stubInfo.m_stubInfoGPR);
&gt; +                jit.call(CCallHelpers::Address(stubInfo.m_stubInfoGPR, StructureStubInfo::offsetOfCodePtr()), JITStubRoutinePtrTag);
&gt; +                auto jump = jit.jump();

we&apos;re guaranteed we have room to spit out all this code?

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:364
&gt; +        for (StructureID weakReference : m_stubRoutine-&gt;weakReferences()) {

nit: Since this is no longer generic, can we name &quot;weakReferences()&quot; to &quot;weakStructures&quot;?

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:538
&gt; +    // Getter / Setter relies on stack-pointer adjustment, which is tied to the linked CodeBlock, which makes this code unshareable.

nit: I wouldn&apos;t state this comment as an impossibility. We could share it, but we&apos;d just need to read stack offset from the CodeBlock at runtime via the code we emit.

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:564
&gt; +    if (needsSymbolPropertyCheck || needsStringPropertyCheck || needsInt32PropertyCheck)

I sorta feel like it should just be if stubInfo.hasConstantIdentifier is false, then canBeShared is false?

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:589
&gt; +            // We have no guarantee that stack-pointer is the expected one. This is not a problem if we are not having JS getter / setter calls since stack-pointer is

nit: &quot;if we are not having JS getter / setter calls&quot; =&gt; &quot;if we do not have JS getter / setter calls&quot;

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:590
&gt; +            // callee-save register and it is kept beyond calls. However, our JS executable call does not save stack-pointer. So we are adjusting stack-pointer after

nit: &quot;callee-save register and it is kept beyond calls&quot; =&gt; &quot;a callee-save register in the C calling convention&quot;

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:593
&gt; +            jit.addPtr(CCallHelpers::TrustedImm32(codeBlock-&gt;stackPointerOffset() * sizeof(Register)), GPRInfo::callFrameRegister, CCallHelpers::stackPointerRegister);

I actually don&apos;t get this. We are emitting the same thing after getter/setter call

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:812
&gt; +    if (codeBlock-&gt;useSharedIC() &amp;&amp; canBeShared) {
&gt; +        SharedJITStubSet::Searcher searcher {
&gt; +            stubInfo.baseGPR,
&gt; +            stubInfo.valueGPR,
&gt; +            stubInfo.regs.thisGPR,
&gt; +            stubInfo.m_stubInfoGPR,
&gt; +            stubInfo.usedRegisters,
&gt; +            keys,
&gt; +            weakReferences,
&gt; +        };
&gt; +        stub = vm.m_sharedJITStubs-&gt;find(searcher);
&gt; +        if (stub) {
&gt; +            dataLogLnIf(PolymorphicAccessInternal::verbose, &quot;Found existing code stub &quot;, stub-&gt;code());
&gt; +            return finishCodeGeneration(WTFMove(stub));
&gt; +        }
&gt; +    }

Why do we do this after generating so much JIT code? Why not do it before generating any JIT code?

&gt; Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:193
&gt; +
&gt; +

nit: undo

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:959
&gt; +        appendCallSetResult(CCallHelpers::Address(GPRInfo::nonArgGPR0, address.offset), result);

why is nonArgGPR0 the right register?

&gt; Source/JavaScriptCore/jit/JITCode.h:167
&gt; +        return Options::useSharedICInOptimizingJIT();

have some variant of our tests turn this on so it doesn&apos;t bit rot?

&gt; Source/JavaScriptCore/jit/JITStubRoutine.h:42
&gt; +#if USE(JSVALUE64)
&gt; +using StructureID = uint32_t;
&gt; +#else
&gt; +using StructureID = Structure*;
&gt; +#endif

Why do we need to repeat this?

&gt; Source/JavaScriptCore/runtime/VM.cpp:663
&gt; +#if ENABLE(JIT)
&gt; +    m_sharedJITStubs = nullptr;
&gt; +#endif

Why is this explicitly needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766646</commentid>
    <comment_count>30</comment_count>
      <attachid>430426</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-03 19:26:58 -0700</bug_when>
    <thetext>Comment on attachment 430426
Patch

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

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:430
&gt; +                    const auto&amp; avec = a.m_wrapped-&gt;keys();
&gt; +                    const auto&amp; bvec = b.m_keys;

name nit:
aCases and bCases?

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:436
&gt; +                    for (unsigned index = 0; index &lt; bvec.size(); ++index) {
&gt; +                        if (!AccessCase::equalInSharing(*avec[index], *bvec[index]))
&gt; +                            return false;
&gt; +                    }

This is sensitive to the order. I wonder if we can make it agnostic to the order in which the cases happen. Maybe file a FIXME for that?

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:438
&gt; +                    const auto&amp; aweak = a.m_wrapped-&gt;weakReferences();
&gt; +                    const auto&amp; bweak = b.m_weakReferences;

name nit: aWeak bWeak

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:444
&gt; +                    for (unsigned i = 0, size = aweak.size(); i &lt; size; ++i) {
&gt; +                        if (aweak[i] != bweak[i])
&gt; +                            return false;
&gt; +                    }

this seems sensitive to order. Should we make it so we don&apos;t care about the order?

&gt; Source/JavaScriptCore/bytecode/AccessCase.h:466
&gt; +        static bool equal(const Hash::Key key, AccessCaseJITStubRoutine* stub)

const Hash::Key&amp; instead of const Hash::Key?

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:788
&gt; +        // In ARM64, we do not push anything on stack specially.

maybe also add an ASSERT(isARM64()) to document that this is a requirement right now, so that if/when we do things on x86, we know we have to fix this code.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:959
&gt;&gt; +        appendCallSetResult(CCallHelpers::Address(GPRInfo::nonArgGPR0, address.offset), result);
&gt; 
&gt; why is nonArgGPR0 the right register?

I see, so setupArgumentsForIndirectCall puts the address base into nonArgGPR0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766674</commentid>
    <comment_count>31</comment_count>
      <attachid>430426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-03 22:58:58 -0700</bug_when>
    <thetext>Comment on attachment 430426
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:22
&gt;&gt; +
&gt; 
&gt; Maybe it&apos;s worth calling out some of the calling convention stuff you did?

Sounds good.

&gt;&gt; Source/JavaScriptCore/assembler/LinkBuffer.h:238
&gt;&gt; +        // ASSERT(!call.isFlagSet(Call::Near));
&gt; 
&gt; oops

Oops, this comment-out is not longer necessary. Removed.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:1598
&gt;&gt; +        if (codeBlock-&gt;useSharedIC())
&gt; 
&gt; nit: I think this should be called &quot;useDataICs&quot; since we need to always do this for data ICs, regardless of if this particular PolymorphicAccess gets shared or not

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:2238
&gt;&gt; +bool AccessCase::equalInSharing(const AccessCase&amp; lhs, const AccessCase&amp; rhs)
&gt; 
&gt; nit: Maybe just &quot;canBeShared&quot; as a name?

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:2256
&gt;&gt; +        return false;
&gt; 
&gt; if the offsets and structure&apos;s are equal, can&apos;t this be an assert?

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:282
&gt;&gt; +    { }
&gt; 
&gt; why does the default version no longer work?

This is because AccessCase now inherits ThreadSafeRefCounted. And ThreadSafeRefCounted&apos;s copy/move-constructor is `delete`-ed. This makes `= default` compile error.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:387
&gt;&gt; +                return a.m_wrapped != b.m_wrapped;
&gt; 
&gt; why is this safe compared to ==?

Oops, this is old code. Deleted.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:430
&gt;&gt; +                    const auto&amp; bvec = b.m_keys;
&gt; 
&gt; name nit:
&gt; aCases and bCases?

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:436
&gt;&gt; +                    }
&gt; 
&gt; This is sensitive to the order. I wonder if we can make it agnostic to the order in which the cases happen. Maybe file a FIXME for that?

Yes, but I think in many cases, this would be the same. I&apos;ll put FIXME.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:438
&gt;&gt; +                    const auto&amp; bweak = b.m_weakReferences;
&gt; 
&gt; name nit: aWeak bWeak

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:444
&gt;&gt; +                    }
&gt; 
&gt; this seems sensitive to order. Should we make it so we don&apos;t care about the order?

I think, in reality, this order does not matter. We put StructureIDs here, and they are populated from object-property-condition-set. And that set is ordered by prototype-chain ordering.
So I think there is no case that A and B AccessCases have different ordering weak references while they are the same.
Of course, if we make AccessCase attempt case-insensitive, this can be different, but so far, I think FIXME is enough.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:456
&gt;&gt; +        const FixedVector&lt;RefPtr&lt;AccessCase&gt;&gt;&amp; m_keys;
&gt; 
&gt; nit: Why not call this m_cases?

Originally, it was only keys, but now weakReferences are added. Changed it to m_cases.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:466
&gt;&gt; +        static bool equal(const Hash::Key key, AccessCaseJITStubRoutine* stub)
&gt; 
&gt; const Hash::Key&amp; instead of const Hash::Key?

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.h:474
&gt;&gt; +        m_stubs.add(key);
&gt; 
&gt; WTFMove(key)?

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:384
&gt;&gt; +void InlineAccess::rewireStubAsJumpInAccessNotUsingInlineCode(CodeBlock* codeBlock, StructureStubInfo&amp; stubInfo, CodeLocationLabel&lt;JITStubRoutinePtrTag&gt; target)
&gt; 
&gt; I don&apos;t quite get the significance of this name. We do sometimes replace the inline code.

Changed it to InlineAccess.

&gt;&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:401
&gt;&gt; +    FINALIZE_CODE(linkBuffer, NoPtrTag, &quot;InlineAccess: linking constant jump&quot;);
&gt; 
&gt; Can this just call resetStubAsJumpInAccess?

Not possible since resetStubAsJumpInAccess is resetting a jump to slow-path while it is setting a jump to the target.

&gt;&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:417
&gt;&gt; +                auto jump = jit.jump();
&gt; 
&gt; we&apos;re guaranteed we have room to spit out all this code?

Yes

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:364
&gt;&gt; +        for (StructureID weakReference : m_stubRoutine-&gt;weakReferences()) {
&gt; 
&gt; nit: Since this is no longer generic, can we name &quot;weakReferences()&quot; to &quot;weakStructures&quot;?

Sounds good. Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:538
&gt;&gt; +    // Getter / Setter relies on stack-pointer adjustment, which is tied to the linked CodeBlock, which makes this code unshareable.
&gt; 
&gt; nit: I wouldn&apos;t state this comment as an impossibility. We could share it, but we&apos;d just need to read stack offset from the CodeBlock at runtime via the code we emit.

Yes, but I think the current code is not doing that, and this comment is stating why we can&apos;t share it.
I think this comment is worth keeping. So, when we would like to change them to be shared, we can read this comment, and we can know what is preventing from sharing.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:564
&gt;&gt; +    if (needsSymbolPropertyCheck || needsStringPropertyCheck || needsInt32PropertyCheck)
&gt; 
&gt; I sorta feel like it should just be if stubInfo.hasConstantIdentifier is false, then canBeShared is false?

Yeah, changed.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:589
&gt;&gt; +            // We have no guarantee that stack-pointer is the expected one. This is not a problem if we are not having JS getter / setter calls since stack-pointer is
&gt; 
&gt; nit: &quot;if we are not having JS getter / setter calls&quot; =&gt; &quot;if we do not have JS getter / setter calls&quot;

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:590
&gt;&gt; +            // callee-save register and it is kept beyond calls. However, our JS executable call does not save stack-pointer. So we are adjusting stack-pointer after
&gt; 
&gt; nit: &quot;callee-save register and it is kept beyond calls&quot; =&gt; &quot;a callee-save register in the C calling convention&quot;

Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:593
&gt;&gt; +            jit.addPtr(CCallHelpers::TrustedImm32(codeBlock-&gt;stackPointerOffset() * sizeof(Register)), GPRInfo::callFrameRegister, CCallHelpers::stackPointerRegister);
&gt; 
&gt; I actually don&apos;t get this. We are emitting the same thing after getter/setter call

This is super important. Without that, JetStream2 crashes almost immediately.

The reason is that, unfortunately, our JS calling convention / OSR exit / tail-call etc. does not ensure that stack-pointer is `CCallHelpers::TrustedImm32(codeBlock-&gt;stackPointerOffset() * sizeof(Register)), GPRInfo::callFrameRegister`. When using this IC in baseline JIT, this is possible that SP is not `CCallHelpers::TrustedImm32(codeBlock-&gt;stackPointerOffset() * sizeof(Register)), GPRInfo::callFrameRegister`.
But it is OK: SP is always larger-than-or-equal-to `CCallHelpers::TrustedImm32(codeBlock-&gt;stackPointerOffset() * sizeof(Register)), GPRInfo::callFrameRegister`, and it should work.

However, in this IC case, that does not work well. We tag the return-address with SP. But after calling getter / setter, SP will be adjusted to `CCallHelpers::TrustedImm32(codeBlock-&gt;stackPointerOffset() * sizeof(Register)), GPRInfo::callFrameRegister`, which can be different from the original stack-pointer!
Then, when returning, we see the different stack-pointer, and crash due to PAC failure.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:788
&gt;&gt; +        // In ARM64, we do not push anything on stack specially.
&gt; 
&gt; maybe also add an ASSERT(isARM64()) to document that this is a requirement right now, so that if/when we do things on x86, we know we have to fix this code.

Sounds good. Changed.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:812
&gt;&gt; +    }
&gt; 
&gt; Why do we do this after generating so much JIT code? Why not do it before generating any JIT code?

Because that made code significantly complicated (basically, almost double the same code). We need to collect

1. watchpoints based on the current state of ObjectPropertyConditionSet (and in some cases we collect more)
2. weak-structure IDs collected through emission

If we don&apos;t do that, we need to maintain almost the same code which only collects structure-ids and watchpoints. And this can easily introduce bugs if only one of them is changed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSlowPathGenerator.h:193
&gt;&gt; +
&gt; 
&gt; nit: undo

Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:959
&gt;&gt;&gt; +        appendCallSetResult(CCallHelpers::Address(GPRInfo::nonArgGPR0, address.offset), result);
&gt;&gt; 
&gt;&gt; why is nonArgGPR0 the right register?
&gt; 
&gt; I see, so setupArgumentsForIndirectCall puts the address base into nonArgGPR0?

Yes. nonArgGPR0 is ensured that it is not used for any arguments and it is caller-save register. So, at the point of calling a function, scratching it is OK.

&gt;&gt; Source/JavaScriptCore/jit/JITCode.h:167
&gt;&gt; +        return Options::useSharedICInOptimizingJIT();
&gt; 
&gt; have some variant of our tests turn this on so it doesn&apos;t bit rot?

Sounds good.

&gt;&gt; Source/JavaScriptCore/jit/JITStubRoutine.h:42
&gt;&gt; +#endif
&gt; 
&gt; Why do we need to repeat this?

Because I saw compile-error if we include `Structure.h` here. We need forward declaration of them.

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:663
&gt;&gt; +#endif
&gt; 
&gt; Why is this explicitly needed?

By killing it explicitly, we can ensure that `m_sharedJITStubs` is killed by checking `m_vm.m_sharedJITStubs`. And when shutting down VM, it is possible that,

1. m_vm.m_sharedJITStubs is killed
2. Then, some of JITStubRoutine is destroyed and it was tied to m_vm.m_sharedJITStubs.

So, in the destructor of (2), we can check `if (m_vm.m_sharedJITStubs)` to ensure that we can avoid accessing it if it is already destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766694</commentid>
    <comment_count>32</comment_count>
      <attachid>430426</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-04 00:19:03 -0700</bug_when>
    <thetext>Comment on attachment 430426
Patch

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

&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:413
&gt; +                CCallHelpers jit;

One more suggestion that I just remembered:

I think the JIT code in this patch that overwrites existing code in memory would be a bit cleaner if it uses the new helper I added:
CCallHelpers::emitJITCodeOver API. It handles a lot of the abstraction for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767025</commentid>
    <comment_count>33</comment_count>
      <attachid>430426</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-04 18:20:33 -0700</bug_when>
    <thetext>Comment on attachment 430426
Patch

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

Wow, what a patch.  R=me with mine and Saam&apos;s comments.

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:276
&gt; +        auto myCase = WTFMove(originalCasesToAdd[i]);

I don&apos;t like the use of auto right here.  I think this code will get read a lot, and is subtle, so having this thing&apos;s type would be great here.

&gt; Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h:93
&gt; +class AccessCaseJITStubRoutine : public GCAwareJITStubRoutine {

Is this used to represent a single access case, or a PolymorphicAccess-compiled polymorphic thing with many cases?

If the latter, I suggest picking a different name.  Maybe PolymorphicAccessJITStubRoutine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767885</commentid>
    <comment_count>34</comment_count>
      <attachid>430426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-08 13:33:27 -0700</bug_when>
    <thetext>Comment on attachment 430426
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/AccessCase.cpp:2256
&gt;&gt;&gt; +        return false;
&gt;&gt; 
&gt;&gt; if the offsets and structure&apos;s are equal, can&apos;t this be an assert?
&gt; 
&gt; Changed.

Ah, this was not true. If it is `Miss` IC, then offset is always -1 and the map can be the same while identifier is different.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:276
&gt;&gt; +        auto myCase = WTFMove(originalCasesToAdd[i]);
&gt; 
&gt; I don&apos;t like the use of auto right here.  I think this code will get read a lot, and is subtle, so having this thing&apos;s type would be great here.

Changed it to RefPtr&lt;AccessCase&gt;.

&gt;&gt; Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h:93
&gt;&gt; +class AccessCaseJITStubRoutine : public GCAwareJITStubRoutine {
&gt; 
&gt; Is this used to represent a single access case, or a PolymorphicAccess-compiled polymorphic thing with many cases?
&gt; 
&gt; If the latter, I suggest picking a different name.  Maybe PolymorphicAccessJITStubRoutine.

Yeah, this is code for PolymorphicAccess compiled one. Changed it to PolymorphicAccessJITStubRoutine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767900</commentid>
    <comment_count>35</comment_count>
      <attachid>430887</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-08 14:01:29 -0700</bug_when>
    <thetext>Created attachment 430887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767901</commentid>
    <comment_count>36</comment_count>
      <attachid>430888</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-08 14:07:13 -0700</bug_when>
    <thetext>Created attachment 430888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767902</commentid>
    <comment_count>37</comment_count>
      <attachid>430889</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-08 14:09:22 -0700</bug_when>
    <thetext>Created attachment 430889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768024</commentid>
    <comment_count>38</comment_count>
      <attachid>430934</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-08 19:06:03 -0700</bug_when>
    <thetext>Created attachment 430934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768098</commentid>
    <comment_count>39</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-09 01:22:53 -0700</bug_when>
    <thetext>Waiting for 6 hours and still not getting EWS run :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768134</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-09 04:15:28 -0700</bug_when>
    <thetext>OK looks fine. Failing ones are flaky ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768135</commentid>
    <comment_count>41</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-09 04:17:47 -0700</bug_when>
    <thetext>Committed r278656 (238638@main): &lt;https://commits.webkit.org/238638@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768332</commentid>
    <comment_count>42</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-06-09 13:50:38 -0700</bug_when>
    <thetext>WinCairo clang-cl builds got broken since this change.
  Bug 226850 – clang-cl: JIT.h(966,67): error: no viable conversion from &apos;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::Address&apos; to &apos;FunctionPtr&lt;CFunctionPtrTag&gt;&apos;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429275</attachid>
            <date>2021-05-21 02:13:26 -0700</date>
            <delta_ts>2021-05-21 12:43:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210521021325.patch</filename>
            <type>text/plain</type>
            <size>383543</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZjNlZDA0MzE1MmU3OTRkNjAxYjMyNWFmYzU4YTlmMzU3ODJiMzRlLi5hYzI3ZGY5OTI5NzYxM2Vm
NDRjNGYyOWM3ZWE4MDEyOGNiNDNkYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjggQEAKKzIwMjEtMDUtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS11bmlm
aWVkLXNvdXJjZXMuc2g6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVW5pZmll
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFs
dCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAg
ICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OnNldFBvaW50ZXIpOgorICAgICAgICAoSlNDOjpBUk02
NEFzc2VtYmxlcjo6cmVwYXRjaEludDMyKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6
OnJlbGlua0p1bXApOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVsaW5rQ2FsbCk6
CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFjdCk6CisgICAgICAg
IChKU0M6OkFSTTY0QXNzZW1ibGVyOjpjYWNoZUZsdXNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNNjRFQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0RUFzc2VtYmxlcjo6c2V0UG9p
bnRlcik6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcC4KKyAg
ICAgICAgKiBhc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmg6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxp
emF0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAgICAoSlND
OjpMaW5rQnVmZmVyOjpsb2NhdGlvbk9mKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xsZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmtleSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0
aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNl
Lmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2VLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlS2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklU
U3R1YlNldDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6Oktl
eTo6S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpl
cXVhbCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xh
dG9yOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRy
YW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRl
clRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2lu
dGVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgor
ICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAg
IChKU0M6OkJ5VmFsSW5mbzo6b2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQpOgorICAgICAgICAo
SlNDOjpCeVZhbEluZm86Om9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRKSVREYXRhKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXApOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdh
dGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lz
dGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNj
ZXNzOjphYm91dFRvRGllKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
OgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OkFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZl
UmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyk6CisgICAgICAgICogYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5m
bzo6YWJvdXRUb0RpZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpoYW5kbGVFeGl0Q291bnRzKToKKyAg
ICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
bG93UGF0aElDQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVj
a1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvckNlbGxzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxTZXRSZXN1bHQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Z2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4
dCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdl
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNh
bGwpOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmR1bXAgY29uc3QpOgorICAgICAg
ICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6OlNsb3dQYXRoQ2FsbEtleSk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsS2V5OjppbmRpcmVjdE9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1Bh
dGhDYWxsS2V5Ojp3aXRoQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENh
bGxLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0Vmly
dHVhbENhbGwpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hOb25BcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAg
ICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpjYWxjdWxhdGVQb2tlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpwb2tlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhl
bHBlcnM6OnN0YWNrQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hh
bGxBcmd1bWVudFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50c0ltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VBcmd1bWVudHNB
bGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGQ6OmlzX2ludGVncmFsPENV
UlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRW50cnlJbXBsKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwpOgorICAgICAgICAqIGppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRT
dHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdH
Q0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAg
ICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NB
d2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6YWJvdXRUb0RpZSk6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRv
cl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxs
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQv
SklUQ29kZS5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5
SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5
SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRC
eUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5
SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3Rh
bmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6
SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRH
ZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEdl
dEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgICog
aml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZEZvckFycmF5TW9k
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFu
Y2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4
ZWRfcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Nl
dF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2Jy
YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRC
eVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRf
ZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFs
V2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJy
YXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9k
aXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5
X2lkKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklU
U3R1YlJvdXRpbmU6OmFib3V0VG9EaWUpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6
a2V5cyBjb25zdCk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OnJlYWRQdXRJQ0NhbGxUYXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2FsbCk6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0Qnkp
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpy
ZXBhdGNoQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxl
dGVCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlSW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChK
U0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hl
Y2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3Ip
OgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlE
KToKKyAgICAgICAgKEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hh
YmxlSnVtcCk6CisgICAgICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0U2V0UHJpdmF0ZUJyYW5k
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25z
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjpm
aW5pc2hDcmVhdGlvbik6CisKIDIwMjEtMDUtMTkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFic3RyYWN0U2xvdFZpc2l0b3I6OmNvbnRhaW5zT3BhcXVlUm9vdCgp
IHNob3VsZCBvbmx5IGRlY2xhcmUgZGlkRmluZE9wYXF1ZVJvb3QgaWYgdGhlIHJvb3QgaXMgYWN0
dWFsbHkgZm91bmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDI2NDZlYTk2Mjk1ZTg3Njk5OWIxMjZlOTM1ODk2NmVmMGFlNjM1
ODguLjJjNDkxY2FiMjkzZTdiZWZiMzM4NGY3OWEzZTRjMzM3Nzc5M2JiNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjEtMDUtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRhTG9nLmNwcDoKKyAg
ICAgICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6T3B0aW9uYWw8VDo6dmFsdWUg
Y29uc3QpOgorCiAyMDIxLTA1LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE5hdmlnYXRpb24gVGltaW5nIExl
dmVsIDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmMwODQwYjYxZTA5MzE2ZjM1
ZGQzYzM3MGFlZDFhZDM4YWNlZGVhNC4uNTJhMDZkNTI5MTFiYTliZjdkZjk1YjM0NzFjN2E0NmYy
ZDBkNzcyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MjQsNiArMTgyNCw3
IEBACiAJCUUzMjJFNUEzMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0
NDM1MDA2RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0
NEE4MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNu
aXBwZXRQYXJhbXMuaCAqLzsgfTsKIAkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElu
bGluZXMuaCAqLzsgfTsKKwkJRTMyNTE5NDMyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZpZWRTb3Vy
Y2UxNDYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMyNTE5NDIyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwICovOyB9Owog
CQlFMzI1OTU2NDIxRkRBMkM5MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjU5NTYzMjFG
REEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovOyB9OwogCQlFMzI1
QTM2MDIyMjExNTkwMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNUEzNUYyMjIxMTU4QTAw
NzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLzsgfTsKIAkJRTMyODJCQkIxRkU5
MzBBRjAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJy
b3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTI4OTIsNiArMjg5Myw3IEBACiAJCTBGOUMwM0Q0MUU5NDc2RjAwMENEOTEyNSAvKiBBaXJU
bXBTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyVG1wU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyVG1wU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUNBQkM2MURCNTRBNzYwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZlcmVuY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDsgcGF0
aCA9IGIzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjlDQUJDNzFEQjU0QTc2MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclBhZEludGVyZmVyZW5jZS5oOyBw
YXRoID0gYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjlEMDg4QTI2NDFDQzdFMDA0MUQ3MDEgLyogQXNzZW1ibGVyQ29tbW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzc2VtYmxlckNvbW1vbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAv
KiBEaXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGlzYXNzZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyog
REZHRmx1c2hlZEF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0ZsdXNoZWRBdC5jcHA7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRB
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVzaGVkQXQuaDsgcGF0
aCA9IGRmZy9ERkdGbHVzaGVkQXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUw
NTQsNiArNTA1Niw3IEBACiAJCUUzMjJFNUE0MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0
UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFNuaXBw
ZXRQYXJhbXMuY3BwOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBl
dFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTbmlwcGV0UGFy
YW1zLmg7IHBhdGggPSBmdGwvRlRMU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyNTE5NDIyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZp
ZWRTb3VyY2UxNDYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5p
ZmllZFNvdXJjZTE0Ni5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNDYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEds
b2JhbERhdGFJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4
cEdsb2JhbERhdGFJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjVB
MzVGMjIyMTE1OEEwMDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMyNkM0OTYxRUNCRUY1NzAwQTlBOTA1IC8qIENsYXNzSW5mby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc0luZm8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjg4NCw2ICs2ODg3LDcgQEAKIAkJCQk1MzBBNjZCNzFGQTNFNzdE
MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0My5jcHAgKi8sCiAJCQkJNTMwQTY2QUQxRkEzRTc3
NzAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDQuY3BwICovLAogCQkJCTUzMEE2NkIwMUZBM0U3
N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCAqLywKKwkJCQlFMzI1MTk0MjI2NTYz
OUU1MDA3Q0YzQUIgLyogVW5pZmllZFNvdXJjZTE0Ni5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
ICJ1bmlmaWVkLXNvdXJjZXMiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTg0MjEs
NiArODQyNSw3IEBACiAJCQkJODZBREQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0
ZXJzLmggKi8sCiAJCQkJMEZBNkYzOTYyMENDQjdBNjAwQTAzRENEIC8qIEFzc2VtYmxlckJ1ZmZl
ci5jcHAgKi8sCiAJCQkJOTY4OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZl
ci5oICovLAorCQkJCTBGOUQwODhBMjY0MUNDN0UwMDQxRDcwMSAvKiBBc3NlbWJsZXJDb21tb24u
Y3BwICovLAogCQkJCTQzQzM5MkFBMUMzQkVCMDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24u
aCAqLywKIAkJCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8s
CiAJCQkJNTIzMzU2MjgyMjVFQjhFOTAwMjY4QkQyIC8qIENQVS5jcHAgKi8sCkBAIC05NDU4LDcg
Kzk0NjMsNiBAQAogCQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDTG9vcFN0YWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFj
a0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAv
KiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3
NiAvKiBKU1NldElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5NDQxMTY2NzYzMzIw
MEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0YzNDE4
MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTk2NTcsNyArOTY2MSw2IEBACiAJCQkJMEZEODJFNTcxNDFEQUYx
MDAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyNjE3
RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4g
SGVhZGVycyAqLywKLQkJCQlGRUY1QjQyNzI2MjhBQkQ5MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERG
R09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1
REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC05NzUyLDYgKzk3NTUsNyBAQAogCQkJCTE0NzM0MUQyMURDMDJFMkUwMEFB
MjlCQSAvKiBFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxQzBGRkQxQjE5
M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2MDI5RDkx
RDZFMUU0RjAwMzAyMDREIC8qIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBlY3RhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlv
bkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDAwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBF
eGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY0OTEzNzFENzhGMDFEMDBB
Njk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTc4OCw3ICs5Nzky
LDYgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5RDRDMEQxQzNFMUMxMTAwNkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRh
cmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZU
TEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MjMyNjI4QTBFRTAwMTZF
Nzc2IC8qIEhhc2hNYXBJbXBsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYx
NzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjcxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4
aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzIsNyAr
OTgzNSw2IEBACiAJCQkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRUVENzk0MjQ5MkI4NzAwMDhGNEM5MyAv
KiBGdW5jdGlvbkFsbG93bGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMEQxRENBOTI5
NDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1
QjQyQzI2MjhDQkM4MDAxNkU3NzYgLyogVk1UcmFwc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDA0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDczNDFEODFEQzAyRjk5MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVj
dXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYwRjFBMDE2QjcyQTFBMDA1REY5NUIgLyog
RnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTExLDYgKzk5MTMs
NyBAQAogCQkJCTE0MkUzMTM2MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzlBMDkwODAxRDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBs
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQyMzI2MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1h
cEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OURGQ0JEQjFEODhDNTk2MDA1MjdE
MDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgx
M0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNzdBMURDMjJG
OTU4RDUwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxODQs
NiArMTAxODcsNyBAQAogCQkJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0QkI3RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDA4NzQyMTdDQkU4
RUIwMEMzRTY0MyAvKiBKU01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MjUyNjI4QTg1
MDAwMTZFNzc2IC8qIEpTTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0REVGOTYx
ODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MEIyODZEMUVCOEU2RDUwMDBFQjVEMiAvKiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzAxM0NBOEMxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNr
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjE5LDYgKzEwMjIzLDcgQEAKIAkJCQkxNEQwMUE3NzIx
RkIzNTFGMDBCQzU0RTkgLyogSlNTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5RDlFMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1Nl
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MjkyNjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENzAxODJGNDk5NzAwNTg4ODA3IC8q
IEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFC
MEJFRCAvKiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI3MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI0NywxMiArMTAy
NTIsMTIgQEAKIAkJCQk4NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFM0M2MUIxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFs
dWVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRThDMDMxMjI2NEE2OTExMDAxQTQ0QUQg
LyogU2xvd1BhdGhGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkMwRTE2RjVD
RDAwQjM0NDYwIC8qIEpTVmFsdWVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1MTY3
QkFCRDcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkUzQzYxRDE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3OTVBQzYxODIwQTIzNTVFMDA1MkM3NkMgLyogSlNWaXJ0dWFsTWFj
aGluZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhB
RiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDI3MjYyOEFCRDkwMDE2
RTc3NiAvKiBKU1dlYWtNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5MzEx
NkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzlCRkJCMDIyQUQzQ0RDMDAyM0Y0QzAgLyog
SlNXZWFrT2JqZWN0UmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNTMxLDYgKzEwNTM2LDcgQEAK
IAkJCQlDMjE2MEZFNzE1RjdFOTVFMDA5NDJERkMgLyogU2xvdFZpc2l0b3JJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JN
YWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDlGMkYwMTdBMEFDMDQwMDUxMkU5OCAvKiBT
bG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFOEMwMzEyMjY0QTY5MTEwMDFBNDRB
RCAvKiBTbG93UGF0aEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCNEEzMzFDODRG
MEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzMwNDAwNDBFNkE3NDk0MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFM0YyM0E4MjFFQ0YxM0ZFMDA5NzhEOTkgLyogU25pcHBldC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDU2OCw3ICsxMDU3NCw2IEBACiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8q
IFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk4Njk0M0IxRjhDMEFDQzAwOTIzMkFF
IC8qIFN0cnVjdHVyZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYz
MDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDI1
MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
QUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY2MSw2ICsxMDY2Niw3IEBACiAJCQkJRkUzMDIy
RDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVGNUI0MkMyNjI4Q0JDODAwMTZFNzc2IC8qIFZNVHJhcHNJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Mjg0N0FEQzIxRkZCODY5MDA2MUE5REIgLyogV2FzbUFpcklS
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYg
LyogV2FzbUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQ0E3MzBBMUVBNTMz
RDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc1Myw3ICsx
MDc1OSw2IEBACiAJCQkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFERTgwMjlDMUUwOEYxREUw
MDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQUQyRkNCRjUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBF
eGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUExREI1OUNC
MjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBRDJGQ0JGNzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFCMURCNTlDQjIwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3
NjAsNiArMTE3NjUsNyBAQAogCQkJCTUzMEE2NkMyMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMTQzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkMzMUZBM0U3OEIwMDI2QTU0
NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkM0MUZB
M0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUzMjUxOTQzMjY1NjM5RTUwMDdDRjNBQiAvKiBVbmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBXYXNtQWlySVJHZW5lcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2ggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2gKaW5kZXggODg1MzNmZjc4ZWMxMWQyMzc1
MTJkNDgxZGZkYTEwMjA3MGEwYmRiZC4uMWUzOTAzNDM0MTk4ZjQyZDkxODA3NzcyNjFkYmU4MzZj
YTBmNjQxMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtdW5pZmllZC1zb3VyY2VzLnNoCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaApAQCAtMTQsNyArMTQsNyBAQCBpZiBbIC16ICIk
e0JVSUxEX1NDUklQVFNfRElSfSIgXTsgdGhlbgogICAgIGZpCiBmaQogCi1VbmlmaWVkU291cmNl
Q3BwRmlsZUNvdW50PTE0NQorVW5pZmllZFNvdXJjZUNwcEZpbGVDb3VudD0xNDYKIFVuaWZpZWRT
b3VyY2VNbUZpbGVDb3VudD01CiAKIGlmIFsgJCMgLWVxIDAgXTsgdGhlbgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDNlZWZhMDRkYjUxMzU1MzVlZWZhZGZkNzMxNzY1NDgxM2E2ODY2
YzguLmU2YWE5NDc4NDNmODRlOGVkNzA1ZWE4N2I3YjAwZjYyY2ZhY2I2MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDYgKzQ2LDcgQEAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAog
CiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKIGFzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXIuY3BwCithc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmNwcAogYXNzZW1ibGVyL0NQ
VS5jcHAKIGFzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAogYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVW5pZmllZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVW5pZmllZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOGI0ZjVkODk3ZjZlZTM5Y2I2OTE0MjAyNzM1NDIyYzA5
NTgzMzk1Zi4uZjdmNWY2YTdhZDViNjdkNTgxMmNjMGI0YzVkNTgxZDMyZDM2MWUwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1VuaWZpZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VbmlmaWVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtNTIsNiArNTIsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyYwogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291
cmNlcy9VbmlmaWVkU291cmNlMTQzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0LmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ1LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291
cmNlMTQ2LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTUuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2UxNi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE3LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCmluZGV4IDJj
YzUzYzhjY2RhNWRkM2NhYzE1NmE0YjU5MWY3OWE2ODhiZDc1YmYuLjczZDI2YjI3N2Q5NzFhM2M3
NWQ4ZmM3YmE2ODQ1YjdiM2QwZTUxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKQEAgLTI2MDAsNiArMjYwMCw3IEBAIGNsYXNzIEFS
TTY0QXNzZW1ibGVyIHsKICAgICAgICAgaW50IGluc24gPSBkYXRhQ2FjaGVaZXJvVmlydHVhbEFk
ZHJlc3MoQVJNNjRSZWdpc3RlcnM6OnpyKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRV
cFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAgICAg
IHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CisgICAgICAgIFdU
Rjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHMsIDEpOwog
ICAgICAgICBjYWNoZUZsdXNoKHdoZXJlLCBzaXplb2YoaW50KSk7CiAgICAgfQogCkBAIC0yNjE5
LDYgKzI2MjAsNyBAQCBjbGFzcyBBUk02NEFzc2VtYmxlciB7CiAgICAgICAgIGludCBpbnNuID0g
dW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShmYWxzZSwgc3RhdGljX2Nhc3Q8aW50PihvZmZz
ZXQpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVj
dGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hl
cmUsICZpbnNuLCBzaXplb2YoaW50KSk7CisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQo
JmdfbnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBzLCAxKTsKICAgICAgICAgY2FjaGVGbHVzaCh3aGVy
ZSwgc2l6ZW9mKGludCkpOwogICAgIH0KICAgICAKQEAgLTI2NTAsNiArMjY1Miw3IEBAIGNsYXNz
IEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgICAgIGludCBpbnNuID0gbG9hZFN0b3JlUmVnaXN0
ZXJVbnNpZ25lZEltbWVkaWF0ZShNZW1PcFNpemVfNjQsIGZhbHNlLCBNZW1PcF9MT0FELCBlbmNv
ZGVQb3NpdGl2ZUltbWVkaWF0ZTw2ND4oaW1tMTIpLCBybiwgcmQpOwogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9
PSB3aGVyZSk7CiAgICAgICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwgc2l6
ZW9mKGludCkpOworICAgICAgICAgICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgmZ19udW1iZXJP
ZlJlcGxhY2VXaXRoTG9hZHMsIDEpOwogICAgICAgICAgICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6
ZW9mKGludCkpOwogICAgICAgICB9CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTI2ODUsNiArMjY4
OCw3IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgICAgIGludCBpbnNuID0gYWRk
U3VidHJhY3RJbW1lZGlhdGUoRGF0YXNpemVfNjQsIEFkZE9wX0FERCwgRG9udFNldEZsYWdzLCAw
LCBpbW0xMiAqIHNpemVvZih2b2lkKiksIHJuLCBydCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4od2hlcmUpID09IHdoZXJl
KTsKICAgICAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50
KSk7CisgICAgICAgICAgICBXVEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mUmVwbGFj
ZVdpdGhBZGRyZXNzQ29tcHV0YXRpb25zLCAxKTsKICAgICAgICAgICAgIGNhY2hlRmx1c2god2hl
cmUsIHNpemVvZihpbnQpKTsKICAgICAgICAgfQogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0yNzIx
LDggKzI3MjUsMTAgQEAgY2xhc3MgQVJNNjRBc3NlbWJsZXIgewogICAgICAgICBSRUxFQVNFX0FT
U0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4oYWRkcmVzcykgPT0gYWRk
cmVzcyk7CiAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkoYWRkcmVzcywgYnVmZmVyLCBzaXplb2Yo
aW50KSAqIDMpOwogCi0gICAgICAgIGlmIChmbHVzaCkKKyAgICAgICAgaWYgKGZsdXNoKSB7Cisg
ICAgICAgICAgICBXVEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mU2V0UG9pbnRlcnMs
IDEpOwogICAgICAgICAgICAgY2FjaGVGbHVzaChhZGRyZXNzLCBzaXplb2YoaW50KSAqIDMpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdo
ZXJlLCBpbnQzMl90IHZhbHVlKQpAQCAtMjc0OSw2ICsyNzU1LDcgQEAgY2xhc3MgQVJNNjRBc3Nl
bWJsZXIgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3Ry
dWN0aW9uU2l6ZT4od2hlcmUpID09IHdoZXJlKTsKICAgICAgICAgcGVyZm9ybUpJVE1lbWNweSh3
aGVyZSwgJmJ1ZmZlciwgc2l6ZW9mKGludCkgKiAyKTsKIAorICAgICAgICBXVEY6OmF0b21pY0V4
Y2hhbmdlQWRkKCZnX251bWJlck9mUmVwYXRjaEludDMycywgMSk7CiAgICAgICAgIGNhY2hlRmx1
c2god2hlcmUsIHNpemVvZihpbnQpICogMik7CiAgICAgfQogCkBAIC0yNzkyLDYgKzI3OTksNyBA
QCBjbGFzcyBBUk02NEFzc2VtYmxlciB7CiAgICAgc3RhdGljIHZvaWQgcmVsaW5rSnVtcCh2b2lk
KiBmcm9tLCB2b2lkKiB0bykKICAgICB7CiAgICAgICAgIHJlbGlua0p1bXBPckNhbGw8QnJhbmNo
VHlwZV9KTVA+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50Kj4oZnJvbSksIHRvKTsKKyAgICAgICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgm
Z19udW1iZXJPZlJlbGlua0p1bXBzLCAxKTsKICAgICAgICAgY2FjaGVGbHVzaChmcm9tLCBzaXpl
b2YoaW50KSk7CiAgICAgfQogICAgIApAQCAtMjgwMyw2ICsyODExLDcgQEAgY2xhc3MgQVJNNjRB
c3NlbWJsZXIgewogICAgIHN0YXRpYyB2b2lkIHJlbGlua0NhbGwodm9pZCogZnJvbSwgdm9pZCog
dG8pCiAgICAgewogICAgICAgICByZWxpbmtKdW1wT3JDYWxsPEJyYW5jaFR5cGVfQ0FMTD4ocmVp
bnRlcnByZXRfY2FzdDxpbnQqPihmcm9tKSAtIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
Kj4oZnJvbSkgLSAxLCB0byk7CisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVt
YmVyT2ZSZWxpbmtDYWxscywgMSk7CiAgICAgICAgIGNhY2hlRmx1c2gocmVpbnRlcnByZXRfY2Fz
dDxpbnQqPihmcm9tKSAtIDEsIHNpemVvZihpbnQpKTsKICAgICB9CiAKQEAgLTI4NDYsNiArMjg1
NSw3IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91
bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAg
ICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CiAKKyAgICAg
ICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgmZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0cywgMSk7
CiAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsKICAgICB9CiAKQEAgLTI4
NjAsNiArMjg3MCw3IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVyIHsKIAogICAgIHN0YXRpYyB2b2lk
IGNhY2hlRmx1c2godm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgeworICAgICAgICBXVEY6
OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mQ2FjaGVGbHVzaGVzLCAxKTsKICNpZiBPUyhE
QVJXSU4pCiAgICAgICAgIHN5c19jYWNoZV9jb250cm9sKGtDYWNoZUZ1bmN0aW9uUHJlcGFyZUZv
ckV4ZWN1dGlvbiwgY29kZSwgc2l6ZSk7CiAjZWxpZiBPUyhGVUNIU0lBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEVBc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRFQXNzZW1ibGVyLmgKaW5kZXggMWYwMTBm
Y2U2MTE0YzU0OTVkNzhjOTQ2NzgzMzgwZmU2Nzk3ZDE5MS4uNzI1OGVhZTc0YjM3MDdhNDUzNjlh
Mjk1NzU2M2EzMWFjZDQ0ZTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk02NEVBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTTY0RUFzc2VtYmxlci5oCkBAIC0zOTYsOCArMzk2LDEwIEBAIGNsYXNzIEFSTTY0
RUFzc2VtYmxlciA6IHB1YmxpYyBBUk02NEFzc2VtYmxlciB7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPihhZGRyZXNzKSA9PSBhZGRy
ZXNzKTsKICAgICAgICAgcGVyZm9ybUpJVE1lbWNweShhZGRyZXNzLCBidWZmZXIsIHNpemVvZihp
bnQpICogNCk7CiAKLSAgICAgICAgaWYgKGZsdXNoKQorICAgICAgICBpZiAoZmx1c2gpIHsKKyAg
ICAgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZTZXRQb2ludGVycywg
MSk7CiAgICAgICAgICAgICBjYWNoZUZsdXNoKGFkZHJlc3MsIHNpemVvZihpbnQpICogNCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hl
cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxl
ckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNv
bW1vbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTExNTRlOGIwMWUwYWEwOThhZTM4NmE3NWRjMDYxOTQyZDUx
ZjdjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QXNzZW1ibGVyQ29tbW9uLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkFzc2VtYmxlckNvbW1vbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordWludDY0X3QgZ19udW1iZXJPZkNhY2hlRmx1c2hlczsKK3Vp
bnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHM7Cit1aW50NjRfdCBnX251bWJlck9m
UmVwbGFjZVdpdGhKdW1wczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzOwor
dWludDY0X3QgZ19udW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uczsKK3VpbnQ2
NF90IGdfbnVtYmVyT2ZTZXRQb2ludGVyczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZSZXBhdGNoSW50
MzJzOwordWludDY0X3QgZ19udW1iZXJPZlJlbGlua0p1bXBzOwordWludDY0X3QgZ19udW1iZXJP
ZlJlbGlua0NhbGxzOwordWludDY0X3QgZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0czsKK3VpbnQ2
NF90IGdfbnVtYmVyT2ZOZXdDb2RlRmluYWxpemF0aW9uczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZJ
blBsYWNlRmluYWxpemF0aW9uczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRp
b247Cit1aW50NjRfdCBnX251bWJlck9mU2hhcmVkU3R1YkhpdDsKK3VpbnQ2NF90IGdfbnVtYmVy
T2ZTaGFyZWRTdHViQ3JlYXRpb25JbkJhc2VsaW5lOwordWludDY0X3QgZ19udW1iZXJPZlNoYXJl
ZFN0dWJIaXRJbkJhc2VsaW5lOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKaW5kZXggYTU5NDgy
M2Q2YTRkN2Y1MGE4MTRiMjE2YjA3M2E4Y2YwZjc5MTllYy4uOTU4NjE1NzYwMzUzYTQ4MDVjNjVk
YTljZmRjMDBkY2E2ZjA0ZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5oCkBAIC0yOTYsNCArMjk2LDIxIEBAIGNsYXNzIEFSTTY0
TG9naWNhbEltbWVkaWF0ZSB7CiAgICAgaW50IG1fdmFsdWU7CiB9OwogCitKU19FWFBPUlRfUFJJ
VkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZkNhY2hlRmx1c2hlczsKK0pTX0VYUE9SVF9Q
UklWQVRFIGV4dGVybiB1aW50NjRfdCBnX251bWJlck9mUmVwbGFjZVdpdGhWTUhhbHRzOworSlNf
RVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBz
OworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0
aExvYWRzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBs
YWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbnM7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWlu
dDY0X3QgZ19udW1iZXJPZlNldFBvaW50ZXJzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVp
bnQ2NF90IGdfbnVtYmVyT2ZSZXBhdGNoSW50MzJzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJu
IHVpbnQ2NF90IGdfbnVtYmVyT2ZSZWxpbmtKdW1wczsKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVy
biB1aW50NjRfdCBnX251bWJlck9mUmVsaW5rQ2FsbHM7CitKU19FWFBPUlRfUFJJVkFURSBleHRl
cm4gdWludDY0X3QgZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0czsKK0pTX0VYUE9SVF9QUklWQVRF
IGV4dGVybiB1aW50NjRfdCBnX251bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnM7CitKU19FWFBP
UlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25z
OworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZTaGFyZWRTdHVi
Q3JlYXRpb247CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZlNo
YXJlZFN0dWJIaXQ7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJP
ZlNoYXJlZFN0dWJDcmVhdGlvbkluQmFzZWxpbmU7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4g
dWludDY0X3QgZ19udW1iZXJPZlNoYXJlZFN0dWJIaXRJbkJhc2VsaW5lOworCiB9IC8vIG5hbWVz
cGFjZSBKU0MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmNwcAppbmRleCBiNTJiYmZjYmI4YzUwOGMxN2IzODY1YTJlNjAzMjc3YmYyMDE4NWIwLi44M2Q5
MjgwYThlYTcxZTAwMGIyYTJlNWJiZWQ4MzRjMDE2YWQyYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTQ4MSw2ICs0ODEsMTEgQEAg
dm9pZCBMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKCkKICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAjZW5kaWYKKworICAgIGlmIChtX2V4ZWN1
dGFibGVNZW1vcnkpCisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZO
ZXdDb2RlRmluYWxpemF0aW9ucywgMSk7CisgICAgZWxzZQorICAgICAgICBXVEY6OmF0b21pY0V4
Y2hhbmdlQWRkKCZnX251bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMsIDEpOwogICAgIAogICAg
IHNfcHJvZmlsZUN1bW11bGF0aXZlTGlua2VkU2l6ZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
cHJvZmlsZSldICs9IG1fc2l6ZTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Y2FjaGVGbHVzaChjb2Rl
KCksIG1fc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCmluZGV4IGEyODU3NGY1N2E1N2NkYjY2NzBhM2U0MDdlZDBjNzkyYTRjODgxZDQuLmUxMzI2
NDJjMGFkNDhlYjQ1ZWQxYWMxZThjYjU1MzRiZjc2ODk5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0yMTgsOCArMjE4LDggQEAgY2xhc3Mg
TGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBDb2RlTG9jYXRpb25D
YWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAgICAgewotICAgICAgICBBU1NFUlQoY2Fs
bC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAgICAgICAgQVNTRVJUKCFjYWxsLmlzRmxh
Z1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxs
OjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5l
YXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8dGFnPihnZXRMaW5rZXJBZGRy
ZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGM1ZmY3ODIyNjJl
NzE4NWI4NzUwNDg3MGQ0YjRjOWJjNDkyYTRhYTQuLjNkOGI1Y2Y5Y2RmZjUxOWVjYTVmMWU1NGQ1
M2QyNDBiMDQ5MGI1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5m
by5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9y
cy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
OTY0LDYgKzk2NSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9w
ZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7
CkBAIC0xMDYxLDYgKzEwNjQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9z
dHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAK
QEAgLTExNDQsNiArMTE0OSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBh
bGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApA
QCAtMTIwNSw2ICsxMjEyLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xMzE3LDYgKzEzMjYsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNj
cmF0Y2hHUFIpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpAQCAtMTM5NCw2ICsxNDA1LDgxIEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGUoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBnZW5l
cmF0ZUltcGwoc3RhdGUpOwogfQogCit2b2lkIEFjY2Vzc0Nhc2U6OmNvbGxlY3RJbnZhcmlhbnRz
Rm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29k
ZUJsb2NrKQoreworICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CisKKyAgICBzd2l0Y2ggKG1fdHlw
ZSkgeworICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFyZ3VtZW50
c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4
Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2Fk
OgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVyaWM6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIEdldEdldHRlcjoK
KyAgICBjYXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
R2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21W
YWx1ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBjdXJy
U3RydWN0dXJlOworICAgICAgICAgICAgaWYgKCFoYXNBbHRlcm5hdGVCYXNlKCkpCisgICAgICAg
ICAgICAgICAgY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBhbHRlcm5hdGVCYXNlKCktPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgICAgICBjdXJyU3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlG
b3JSZXBsYWNlbWVudHModm0sIG9mZnNldCgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZm9yIChj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogbV9jb25kaXRpb25TZXQp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOworCisg
ICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVXYXRj
aGFiaWxpdHkpKSB7CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxv
Y2ssIGNvbmRpdGlvbik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZvciBub3csIHdlIG9ubHkgYWxsb3cgZXF1aXZhbGVuY2Ugd2hlbiBpdCdzIHdhdGNo
YWJsZS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQo
KSAhPSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVuY2UpOworCisgICAgICAgIGlmICghY29u
ZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWFzb24gd2h5IHRoaXMgY2Fubm90IGhh
cHBlbiBpcyB0aGF0IHdlIHJlcXVpcmUgdGhhdCBQb2x5bW9ycGhpY0FjY2VzcyBjYWxscworICAg
ICAgICAgICAgLy8gQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoKSBvbmx5IGFmdGVyIGl0IGhhcyB2ZXJp
ZmllZCB0aGF0CisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpjb3VsZFN0aWxsU3VjY2VlZCgp
IHJldHVybmVkIHRydWUuCisKKyAgICAgICAgICAgIGRhdGFMb2coIlRoaXMgY29uZGl0aW9uIGlz
IG5vIGxvbmdlciBtZXQ6ICIsIGNvbmRpdGlvbiwgIlxuIik7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugd2lsbCBl
bWl0IGNvZGUgdGhhdCBoYXMgYSB3ZWFrIHJlZmVyZW5jZSB0aGF0IGlzbid0IG90aGVyd2lzZSBs
aXN0ZWQgYW55d2hlcmUuCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9u
Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5h
cHBlbmQoV3JpdGVCYXJyaWVyPEpTQ2VsbD4odm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSk7Cisg
ICAgfQorfQorCiB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKQEAgLTE0MTcsNyArMTUwMyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3BvbHlQcm90b0FjY2Vzc0NoYWluKTsKIAogICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0
Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246
OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewotICAgICAgICAgICAg
c3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29uZGl0aW9uKTsKKyAgICAgICAgICAgIHN0YXRlLmlu
c3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKQEAgLTE1ODIsNyArMTY2OCwxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIC8v
IFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRoZXIgb3Ig
bm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNpdGUuCi0g
ICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3Rh
dGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsKKyAgICAgICAgUmVnaXN0
ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJN
NjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0
YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogCiAgICAgICAgIGF1dG8gcmVzdG9yZUxpdmVS
ZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsID0gWyZdKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3Bp
bGxTdGF0ZSYgc3BpbGxTdGF0ZSwgYm9vbCBjYWxsSGFzUmV0dXJuVmFsdWUpIHsKICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlOwpAQCAtMTcxMiw2ICsxODAxLDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICNl
bmRpZgogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGds
b2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgIGFjY2Vzcy5jYWxsTGlu
a0luZm8oKS0+ZW1pdFNsb3dQYXRoKHZtLCBqaXQpOworCiAgICAgICAgICAgICBpZiAobV90eXBl
ID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7
CiAgICAgICAgICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKQEAgLTE4NDUsNyArMTkzNSwx
MiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVyQnJhbmNo
KHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZzZXQoKSks
IHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2Vy
dmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOworCisgICAg
ICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBleHRyYVJlZ2lz
dGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgICAgICBhdXRv
IHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisKICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0
aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICBhdXRvIG9w
ZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTg3NSw2ICsxOTcw
LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHVi
SW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGlm
IChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBh
bGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52YWxp
ZEdQUlJlZzsKQEAgLTE5MzMsNiArMjAzMCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0
ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVn
aXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOworICAgICAgICAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1Rv
UHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgICAgICAgICAgICAgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsy
MTMwLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKGJhc2VHUFIpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NF
UlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVk
KCkpOwogICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0g
VHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24pOwpAQCAtMjE5MSw2ICsyMjkyLDI1IEBA
IFR5cGVkQXJyYXlUeXBlIEFjY2Vzc0Nhc2U6OnRvVHlwZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlKQogICAgIH0KIH0KIAorQWNjZXNzQ2FzZUtleSBBY2Nlc3NDYXNlOjprZXkoKSBj
b25zdAoreworICAgIHJldHVybiBBY2Nlc3NDYXNlS2V5IHsKKyAgICAgICAgbV9jb25kaXRpb25T
ZXQsCisgICAgICAgIG1fc3RydWN0dXJlID8gbV9zdHJ1Y3R1cmUtPmlkKCkgOiAwLAorICAgICAg
ICBtX29mZnNldCwKKyAgICAgICAgbV90eXBlLAorICAgICAgICBtX3ZpYVByb3h5LAorICAgIH07
Cit9CisKK3ZvaWQgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQo
KQoreworICAgIGF1dG8gaXRlciA9IG1fdm0ubV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5maW5k
PFNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yPih0aGlzKTsKKyAgICBpZiAoaXRl
ciAhPSBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPm1fc3R1YnMuZW5kKCkpCisgICAgICAgIG1fdm0u
bV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5yZW1vdmUoaXRlcik7CisgICAgSklUU3R1YlJvdXRp
bmU6Om9ic2VydmVaZXJvUmVmQ291bnQoKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lk
IEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXgg
YmRkMWIyMzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uNzA4NmIyYmM1M2E0YTRm
OWE2NWIzMGU1NGUyN2I4MGNkNTNjOTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0yOCwxNCArMjgsMTggQEAKICNpZiBFTkFCTEUoSklUKQog
CiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0
aW5lLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTsKK3N0cnVjdCBBY2Nlc3NDYXNlS2V5OwogCiBERUNMQVJF
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIApAQCAtMjUzLDYg
KzI1Nyw5IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogI2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYpIHsgfQogI2VuZGlmCisKKyAg
ICBBY2Nlc3NDYXNlS2V5IGtleSgpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNG
b3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CiAgICAgCiBw
cm90ZWN0ZWQ6CiAgICAgQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
Jik7CkBAIC0zMTUsNiArMzIyLDE3MyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKK3N0cnVjdCBBY2Nlc3NDYXNlS2V5IHsK
KyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRl
SGFzaChtX2NvbmRpdGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUp
LCBtX3ZpYVByb3h5LCBtX3N0cnVjdHVyZUlELCBtX29mZnNldCk7CisgICAgfQorCisgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY2Nlc3NDYXNlS2V5JiBsaHMsIGNvbnN0IEFjY2Vz
c0Nhc2VLZXkmIHJocykKKyAgICB7CisgICAgICAgIGlmIChsaHMubV9zdHJ1Y3R1cmVJRCAhPSBy
aHMubV9zdHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KGxocy5tX29mZnNldCAhPSByaHMubV9vZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQcm94eSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGxocy5tX2NvbmRpdGlvblNl
dC5zaXplKCkgIT0gcmhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBhdXRvIGxpdGVyID0gbGhzLm1fY29uZGl0aW9uU2V0LmJlZ2lu
KCk7CisgICAgICAgIGF1dG8gcml0ZXIgPSByaHMubV9jb25kaXRpb25TZXQuYmVnaW4oKTsKKyAg
ICAgICAgZm9yICg7IGxpdGVyICE9IGxocy5tX2NvbmRpdGlvblNldC5lbmQoKTsgKytsaXRlciwg
KytyaXRlcikgeworICAgICAgICAgICAgaWYgKCEoKmxpdGVyID09ICpyaXRlcikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IG1fY29uZGl0aW9uU2V0Owor
ICAgIFN0cnVjdHVyZUlEIG1fc3RydWN0dXJlSUQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CisgICAgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSBtX3R5cGU7CisgICAgYm9vbCBtX3ZpYVBy
b3h5OworfTsKKworY2xhc3MgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMg
SklUU3R1YlJvdXRpbmUgeworcHVibGljOgorICAgIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKFZN
JiB2bSwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+JiYga2V5cykKKyAgICAgICAgOiBKSVRTdHViUm91
dGluZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwgbV9rZXlzKFdURk1vdmUo
a2V5cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxBY2Nlc3NDYXNlS2V5Piog
a2V5cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICZtX2tleXM7IH0KKworICAgIHZvaWQgb2JzZXJ2
ZVplcm9SZWZDb3VudCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAgIFZl
Y3RvcjxBY2Nlc3NDYXNlS2V5PiBtX2tleXM7Cit9OworCitjbGFzcyBTaGFyZWRKSVRTdHViU2V0
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsKK3B1Ymxp
YzoKKyAgICBTaGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+JiBrZXlzKQorICAgIHsKKyAgICAg
ICAgSGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAg
ICAgICAgYWRkKGhhc2hlciwga2V5Lmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFz
aCgpOworICAgIH0KKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7Cisg
ICAgICAgICAgICBLZXkoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFz
ZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisg
ICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1f
YmFzZUdQUihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikK
KyAgICAgICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAg
LCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVn
aXN0ZXJzKHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3Jh
cHBlZChiaXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKSkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRT
dHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFw
cGVkCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAg
ICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAg
ICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAg
ICAgICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBhLm1fd3JhcHBlZCAhPSBiLm1fd3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgSklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAg
IEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAg
ICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9H
UFI7CisgICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07
CisKKyAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47
CisKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAx
OworICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVk
LT5rZXlzKCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
S2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09
IGI7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJj
aGVyIHsKKyAgICAgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5
cyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IEhhc2g6OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKmEubV93cmFwcGVkLT5rZXlzKCkgPT0gYi5tX2tleXMKKyAgICAgICAg
ICAgICAgICAgICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAg
ICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAg
ICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYm
IGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAg
JiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAgICAgICAgR1BSUmVn
IG1fdmFsdWVHUFI7CisgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICBHUFJSZWcg
bV9zdHViSW5mb0dQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAg
ICAgICBjb25zdCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mIG1fa2V5czsKKyAgICB9OworCisgICAg
c3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
SklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRKSVRTdHViU2V0OjpoYXNoKCpzdHViLT5rZXlzKCkpOworICAgICAgICB9CisKKyAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGtleSwgSklUU3R1YlJvdXRpbmUqIHN0
dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7
CisgICAgICAgIH0KKyAgICB9OworCisvLyBwcml2YXRlOgorICAgIEhhc2hTZXQ8SGFzaDo6S2V5
LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgK
aW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4NC4uNDJkMDc5NGRk
NjI0MGM2MzgwYzliYTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBzdHJ1Y3QgQnlWYWxJ
bmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlW
YWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
Zk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8s
IG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZC
YWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1f
YmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
IG1fc2xvd09wZXJhdGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGU3NjZlNTRlODFiMWY5YWYyM2Fh
NzBmYzZkOTcxZTAwNzEwZjgzNDMuLjlkYWU3ZmI0ODBiZDU2NDBhNjUwZDA1ZjQ4NTczZTk2OTBk
YWRlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC04NjEsNyArODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUo
SklUKQogICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CiAgICAgICAg
IGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3Mp
IHsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAgICAgICAgICBzdHVi
SW5mby0+YWJvdXRUb0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5mby0+ZGVyZWYoKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE4MDIsNyArMTgwMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpy
ZXNldEpJVERhdGEoKQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAgICBmb3IgKFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAg
ICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1YkluZm8tPmFib3V0
VG9EaWUoKm1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRl
ckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5N2ZmMWNm
ZjdjZjM4MzYuLjFmMWY2NDY5NGUxODc3ZTBhNjBmYWFlZjg2ZDc5MzYxMjgwNTE0NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHAKQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
cwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgIEdQUlJl
ZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYgKzIyNSw4IEBAIHZvaWQg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlLCBjb25zCiAgICAgZm9yIChGUFJSZWcgcmVnIDogZnBTY3JhdGNoKQogICAg
ICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZyk7CiAgICAgcmVnaXN0ZXJzVG9T
cGlsbEZvckNDYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckND
YWxsKCkpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICByZWdpc3Rl
cnNUb1NwaWxsRm9yQ0NhbGwuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAKICAgICBBY2Nlc3ND
YXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRv
cigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmNwcAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2Jh
ZTk2ZmIzMjFhLi41OTQwYzU1MWUzNTNhMjYwNzY2M2Q0ZTk5ZDIxMTZhYmExY2VkNjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAt
MjE2LDYgKzIxNiw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVn
aXN0ZXIoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VUYWdHUFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFn
R1BSKTsKICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwog
ICAgIEdQUlJlZyBzY3JhdGNoID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAg
IGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFs
aWRHUFJSZWc7CkBAIC0zNzksOCArMzgxLDEzIEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0
ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAg
ICByZXR1cm4gbGlua2VkQ29kZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXBJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCiB7CisgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAg
IGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmgKaW5kZXggZjQ5YjM1YjhmMjI2NDA2YzdmYjI2ZmZiYjQ4ODZiMmI4
NDcxZDEyZC4uYzFjMzMyNTNkODMzNmI4YzUwODcxMmI5N2Y5ZjcxOWEwMmZmYzNkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaApAQCAtMTA0LDcg
KzEwNCw3IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFi
bGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMg
Ym9vbCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0
YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5
Kik7Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZv
aWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0
ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRp
YyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0LmgKaW5kZXggNWQ5MDU0NTk3NGYxZWQzN2YyOGNhZjNhMmFlYjM0NmE0OTEw
YTI4My4uNmRhY2NiZjg3MWMwODdhYWJhOTg2MzVjNTAxYTc4YjdmNGZkMTAzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwxNCBAQCBjbGFzcyBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBm
b3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29u
ZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KICAg
ICAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25z
dDsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5
Q29uZGl0aW9uOjpLaW5kKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRj
ZDc0YjljODdlODlhN2QwOWEwMTUuLjg1NTYyYzkxMGE4Yzg2OTg3NDc5N2Q3YjdiMjA1NDViOTAy
YzFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgi
OiIsIG1fY29kZSk7CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0
Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdh
dGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdh
dGNocG9pbnQoCi0gICAgICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5m
bywgY29uZGl0aW9uKTsKKyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3Vy
ZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLCBjb25kaXRpb24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVz
dG9yZVNjcmF0Y2goKQpAQCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6OnJlc3RvcmVTY3JhdGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVk
KCkKIHsKICAgICByZXN0b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVt
cCgpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQo
KTsKKyAgICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAog
Y29uc3QgUmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0Zv
ckNhbGwoKQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAg
ICB9OwogfQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0
ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8g
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0
ZQogewogICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdp
c3RlcnMoKTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKKyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNp
Z25lZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5
dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4
dHJhU3RhY2tQYWRkaW5nKTsKQEAgLTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRK
U0xvYwogICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRj
aEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDUs
NiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0
YXRlLmppdCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRl
ID0KLSAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGpp
dCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFj
ZSk7CiAKICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MjEsMTIg
KzUyMCw0MCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNl
czogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAKKworICAgIGJvb2wgZG9lc0NhbGxz
ID0gZmFsc2U7CisgICAgYm9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBmYWxzZTsKKyAgICBi
b29sIGNhbkJlU2hhcmVkID0gdHJ1ZTsKKyAgICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01hcms7
CisgICAgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+IGtleXM7CisgICAga2V5cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNhc2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7
CisgICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmsp
OworICAgICAgICBpZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50
cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCisgICAgICAgICAgICBoYXNKU0dldHRl
clNldHRlckNhbGwgPSB0cnVlOworI2lmIDAKKyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0g
QWNjZXNzQ2FzZTo6VHJhbnNpdGlvbikKKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7
CisjZW5kaWYKKyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6Q3VzdG9t
VmFsdWVHZXR0ZXIpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworICAgICAgICBp
ZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpDdXN0b21BY2Nlc3NvckdldHRlcikKKyAg
ICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgp
ID09IEFjY2Vzc0Nhc2U6OkN1c3RvbVZhbHVlU2V0dGVyKQorICAgICAgICAgICAgY2FuQmVTaGFy
ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6Q3Vz
dG9tQWNjZXNzb3JTZXR0ZXIpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworICAg
ICAgICBrZXlzLmFwcGVuZChlbnRyeS0+a2V5KCkpOworICAgIH0KKyAgICBzdGF0ZS5tX2hhc0pT
R2V0dGVyU2V0dGVyQ2FsbCA9IGhhc0pTR2V0dGVyU2V0dGVyQ2FsbDsKKyAgICAvLyBHZXR0ZXIg
LyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2ggaXMgdGll
ZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVh
YmxlLgorICAgIGlmIChoYXNKU0dldHRlclNldHRlckNhbGwpCisgICAgICAgIGNhbkJlU2hhcmVk
ID0gZmFsc2U7CisKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdj
YXNlcycgY29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQog
ICAgIC8vIHdvbid0IGNoYW5nZSB0aGF0IHNldCBhbnltb3JlLgogICAgIAogICAgIGJvb2wgYWxs
R3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgPSB0cnVlOwotICAgIGJvb2wgaGFzSlNHZXR0ZXJTZXR0
ZXJDYWxsID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc0ludDMyUHJvcGVydHlDaGVjayA9IGZhbHNl
OwogICAgIGJvb2wgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBu
ZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKQEAgLTU0MiwxMCArNTY5LDk4IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIH0KICAgICAgICAgY29tbWl0KGxvY2tlciwg
dm0sIHN0YXRlLndhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCAqbmV3Q2FzZSk7CiAg
ICAgICAgIGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrICY9IG5ld0Nhc2UtPmd1YXJkZWRCeVN0
cnVjdHVyZUNoZWNrKHN0dWJJbmZvKTsKLSAgICAgICAgaWYgKG5ld0Nhc2UtPnR5cGUoKSA9PSBB
Y2Nlc3NDYXNlOjpHZXR0ZXIgfHwgbmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRl
cikKLSAgICAgICAgICAgIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IHRydWU7CisgICAgICAgIGlm
IChuZXdDYXNlLT51c2VzUG9seVByb3RvKCkpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZh
bHNlOworICAgIH0KKyAgICBpZiAobmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzU3Ry
aW5nUHJvcGVydHlDaGVjayB8fCBuZWVkc0ludDMyUHJvcGVydHlDaGVjaykKKyAgICAgICAgY2Fu
QmVTaGFyZWQgPSBmYWxzZTsKKworICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YjsKKyAg
ICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQp
IHsKKyAgICAgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAg
ICAgICAgICAgICAgICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZv
LnZhbHVlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAga2V5cworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGF1dG8gZW50cnkgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLmZp
bmQ8U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAg
ICAgICAgICAgIGlmIChlbnRyeSAhPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLmVuZCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVy
bmFsOjp2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUVVFUlkgIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmJhc2VHUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8udmFsdWVH
UFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3R1YkluZm8ucmVncy50aGlzR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgIiwgIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiLCB1c2VkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm8udXNlZFJlZ2lzdGVycworICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJHT1QgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVu
dHJ5LT5tX2Jhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZW50cnktPm1fdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fZXh0cmFHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkt
Pm1fc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCB1c2VkOiAiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fdXNlZFJlZ2lzdGVycworICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3R1YiA9
IGVudHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKKyAg
ICBpZiAoc3R1YikgeworICAgICAgICArK2dfbnVtYmVyT2ZTaGFyZWRTdHViSGl0OworICAgICAg
ICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoY29kZUJsb2NrLT5qaXRUeXBlKCkpKQorICAg
ICAgICAgICAgKytnX251bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxpbmU7CisgICAgICAgIG1f
c3R1YlJvdXRpbmUgPSBzdHViOworICAgICAgICBmb3IgKGF1dG8mIGFjY2Vzc0Nhc2UgOiBjYXNl
cykKKyAgICAgICAgICAgIGFjY2Vzc0Nhc2UtPmNvbGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJldXNl
KHN0YXRlLCBjb2RlQmxvY2spOworCisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0
YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVC
YXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAg
aWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRh
TG9nKCJSZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAg
ICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgp
OworCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAg
ICAgICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RT
aXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRl
ZE5ld0NvZGU7CisKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0
S2luZCwgbV9zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfQorCisgICAgQ0NhbGxI
ZWxwZXJzIGppdChjb2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAgICBpZiAo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoc3RhdGUubV9oYXNKU0dldHRl
clNldHRlckNhbGwpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQg
c3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0g
aWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNr
LXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJlZ2lzdGVyIGFuZCBpdCBp
cyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1dGFibGUgY2FsbCBkb2Vz
IG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rpbmcgc3RhY2stcG9pbnRl
ciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzLiBCdXQgdGhp
cyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFjay1wb2ludGVyLCBhbmQg
bWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8gVG8gZW5zdXJlIFBBQy10
YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVyIHRvIHRoZSBhcHByb3By
aWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIH0KKworICAgIHN0
YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJl
c2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAKICAgICBpZiAoY2FzZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5saWtlbHksIGJ1dCB3ZSBt
YWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5qdW1wKCkpOwpAQCAtNzMwLDYgKzg0NSwxMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
YwogICAgICAgICBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcgPSBzdGF0ZS5jYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcoKTsKICAgICB9CiAKKyAgICBpZiAoT3B0aW9u
czo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAg
IC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHku
IFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRo
dW5rIGlzIGNhbGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIGppdC5mYXJKdW1wKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICB9CisKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIExpbmtC
dWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAg
IGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgaWYgKFBvbHlt
b3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03MzksOSArODYwLDEyIEBAIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBzdWNjZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAKLSAgICBsaW5rQnVm
ZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAgIGxpbmtCdWZmZXIu
bGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBBU1NFUlQoc3RhdGUuc3VjY2Vzcy5lbXB0
eSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3Ms
IHN1Y2Nlc3NMYWJlbCk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIH0KICAgICAKICAgICBpZiAoUG9seW1vcnBo
aWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdp
bihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3Jw
aGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwpAQCAtNzQ5LDE4
ICs4NzMsMjIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKICAg
ICAgICAgY29kZUJsb2NrLCBsaW5rQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAg
ICAgIiVzIiwgdG9DU3RyaW5nKCJBY2Nlc3Mgc3R1YiBmb3IgIiwgKmNvZGVCbG9jaywgIiAiLCBz
dHViSW5mby5jb2RlT3JpZ2luLCAiIHdpdGggcmV0dXJuIHBvaW50ICIsIHN1Y2Nlc3NMYWJlbCwg
IjogIiwgbGlzdER1bXAoY2FzZXMpKS5kYXRhKCkpOwotCi0gICAgYm9vbCBkb2VzQ2FsbHMgPSBm
YWxzZTsKLSAgICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01hcms7Ci0gICAgZm9yIChhdXRvJiBl
bnRyeSA6IGNhc2VzKQotICAgICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwg
JmNlbGxzVG9NYXJrKTsKICAgICAKLSAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJv
dXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92
ZShzdGF0ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRs
ZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworICAgICsrZ19udW1iZXJP
ZlNoYXJlZFN0dWJDcmVhdGlvbjsKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoY29k
ZUJsb2NrLT5qaXRUeXBlKCkpKQorICAgICAgICArK2dfbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRp
b25JbkJhc2VsaW5lOworICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShj
b2RlLCBXVEZNb3ZlKGtleXMpLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJr
LCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0
aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CisKKyAgICBp
ZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpCisg
ICAgICAgICAgICB2bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLmFkZChTaGFyZWRKSVRTdHVi
U2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0dWJJ
bmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNlZFJl
Z2lzdGVycywgbV9zdHViUm91dGluZS5nZXQoKSkpOworICAgIH0KKwogICAgIG1fd2F0Y2hwb2lu
dHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZl
cmVuY2VzLmlzRW1wdHkoKSkKICAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9y
PFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7CiAg
ICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFM
b2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJS
ZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CiAgICAgCiAgICAgbV9s
aXN0ID0gV1RGTW92ZShjYXNlcyk7CiAgICAgbV9saXN0LnNocmlua1RvRml0KCk7CkBAIC03NzEs
MTMgKzg5OSwxMyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpy
ZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIGVsc2UKICAgICAgICAg
cmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CiAg
ICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgY29kZS5j
b2RlKCkpOworICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIG1f
c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOwogfQogCi12b2lkIFBvbHltb3JwaGljQWNjZXNz
OjphYm91dFRvRGllKCkKK3ZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoVk0mIHZt
KQogewogICAgIGlmIChtX3N0dWJSb3V0aW5lKQotICAgICAgICBtX3N0dWJSb3V0aW5lLT5hYm91
dFRvRGllKCk7CisgICAgICAgIG1fc3R1YlJvdXRpbmUtPmFib3V0VG9EaWUodm0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjkyMDMyNmRjYzkxNTQ3NGIzZjFlZWI3ZjcyNWU2
YWIzNGFlY2I0MS4uMWUzYTllNzZmZGYyZmU4OTM3MDNjZmVkMWFlZjFmMjczMTc0Nzk1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
b3B0aW1pemF0aW9uIHRvIHRoZW4gYXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBhZ2FpbiBkdXJp
bmcgdGhlIGZpeHBvaW50LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wgcHJv
cGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OwogCi0gICAgdm9pZCBhYm91dFRvRGll
KCk7CisgICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BDKHZvaWQqIHBjKSBjb25zdApAQCAt
MTk2LDYgKzE5Niw3IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICA6
IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1faGFzSlNHZXR0ZXJTZXR0ZXJD
YWxsKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNl
cHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJz
SWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNpdGVJbmRleChm
YWxzZSkKQEAgLTIyNSw4ICsyMjYsOSBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRj
aHBvaW50czsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2Vz
OwogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1faGFz
SlNHZXR0ZXJTZXR0ZXJDYWxsIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50
KENvZGVCbG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAKICAgICB2b2lk
IHJlc3RvcmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgsNyArMjUwLDcg
QEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQm
IGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKIAog
ICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3Qg
UmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBTcGlsbFN0YXRl
IHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29u
c3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdp
c3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBTcGlsbFN0YXRl
Jik7CiAgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3Qg
U3BpbGxTdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAppbmRleCBhZmQ4MzliZWI0MTZiOWJhZGQ2NjhkZGJhZDc1MTM2ZDBhMGRkNzE5Li4xY2FkNTdj
YWI5YjY2Nzc0MGRjYWZhNmJhYWE0ZGI5ZjM2ODlmNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTUyLDYgKzUy
LDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAgICAsIHByb3BlcnR5SXNJbnQzMihmYWxz
ZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2UpCiB7CisgICAgcmVncy50aGlzR1BSID0g
SW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1cmVTdHViSW5m
bygpCkBAIC0xMjAsMTEgKzEyMSwxMSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigp
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWJvdXRUb0RpZSgpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGll
KFZNJiB2bSkKIHsKICAgICBzd2l0Y2ggKG1fY2FjaGVUeXBlKSB7CiAgICAgY2FzZSBDYWNoZVR5
cGU6OlN0dWI6Ci0gICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSgpOworICAgICAgICB1LnN0dWIt
PmFib3V0VG9EaWUodm0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDYWNoZVR5cGU6OlVu
c2V0OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggMjQ2MTliYWQ3
NTI2MGRjOTJjNGE0ZDg5OTc2NmYyM2M5OGNmYzY2NS4uMmQ5OGVlOTU4NmZlZDIwMjU5NTU4ZGVk
ZTNiN2M5OWRlMWQwNzY0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTkxLDcgKzkxLDcgQEAgY2xhc3MgU3RydWN0dXJl
U3R1YkluZm8gewogICAgIHZvaWQgcmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYs
IENvZGVCbG9jayopOwogCiAgICAgdm9pZCBkZXJlZigpOwotICAgIHZvaWQgYWJvdXRUb0RpZSgp
OworICAgIHZvaWQgYWJvdXRUb0RpZShWTSYpOwogCiAgICAgREVDTEFSRV9WSVNJVF9BR0dSRUdB
VEU7CiAKQEAgLTM0NiwxNiArMzQ2LDI0IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAg
ICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9u
OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0
YXJ0TG9jYXRpb247CiAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+IG1fY29kZVB0cjsKKyAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xv
d09wZXJhdGlvbjsKKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlUHRyKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX2NvZGVQdHIpOyB9Cisg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24p
OyB9CisKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwogCi0gICAgR1BSUmVnIGJhc2VH
UFI7Ci0gICAgR1BSUmVnIHZhbHVlR1BSOworICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQ
UlJlZyB9OworICAgIEdQUlJlZyB2YWx1ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICB1bmlv
biB7CiAgICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BS
OwogICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CiAgICAgICAgIEdQUlJlZyBicmFuZEdQUjsK
ICAgICB9IHJlZ3M7CisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7CiAgICAgLy8g
RklYTUU6IFszMi1iaXRzXSBDaGVjayBpZiBTdHJ1Y3R1cmVTdHViSW5mbzo6YmFzZVRhZ0dQUiBp
cyB1c2VkIHNvbWV3aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAppbmRleCA4YWRlYWQ1MGY0NTU2Y2ZmMjVlN2M3Yzk5NzgzMDRkNDE3NzA5NzQ3Li45NjVk
YWYzMGE2OTI2NjRkMDViYTEyZDVhZTY0ZDUxZWVkMDM2NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xNTQsNiArMTU0LDEyIEBAIGNsYXNzIEpJ
VENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAgICAgICAgIG1fY2FsbHMuYXBwZW5k
KENhbGxMaW5rUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZnVuY3Rpb24pKTsKICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uQ2FsbDsKICAgICB9CisKKyAgICBDYWxsIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBDYWxsIGZ1bmN0aW9uQ2FsbCA9IGNh
bGwoYWRkcmVzcywgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2Fs
bDsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAK
aW5kZXggMDkwYjM1OThlMzliOTg0NTE3NGJlNmExMjk0MzlmNGNjNWYyNGRiNy4uNDI4ODM3NzZj
ZTZjNWY3MTEwNWI5N2NlZjZiNmY2YjZlZmYwM2I4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtNDAsNiAr
NDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgaGFuZGxlRXhp
dENvdW50cyhWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhp
dCkKIHsKKyAgICBqaXQuYWRkNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEFz
c2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZnX251bWJlck9mT1NSRXhpdHMpKTsKKyAg
ICAKICAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBub3RpY2UgdGhhdCB3ZSdyZSBmcmVxdWVudGx5IGV4
aXRpbmcKICAgICAgICAgLy8gYXQgYW4gb3BfY2F0Y2ggdGhhdCB3ZSBkaWRuJ3QgY29tcGlsZSBh
biBlbnRyeXBvaW50IGZvciwgYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggOTgxZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAw
MWJlODE2MDEyNi4uZmE0YWRhYmNmYWYwMjI5MGRkNGJmZDcxZDMwYTdmZDhjNzdjZjJlMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApA
QCAtMTg4LDYgKzE4OCw4IEBAIGNsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBs
ZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwogfTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1l
IEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCog
aml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBAIC0yNjMsNiArMjY1LDY2IEBAIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAg
ZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3Vs
dFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVu
dHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRv
cjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVibGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1
bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3Vs
dCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20sIGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVu
dCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAg
ICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Moc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQor
ICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9hcmd1bWVudHMoc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZv
KHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90
Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQgdW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRp
dmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAg
eworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOworICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAgICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVzdWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1
ZSkKKyAgICAgICAgICAgIHRoaXMtPnJlY29yZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0
aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIHN0ZDo6Z2V0PEFyZ3VtZW50c0lu
ZGV4PihtX2FyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy0+
cmVjb3JkQ2FsbChqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3Bl
cmF0aW9uQWRkcmVzcywgZXh0cmFjdFJlc3VsdCh0aGlzLT5tX3Jlc3VsdCksIHN0ZDo6Z2V0PEFy
Z3VtZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24o
aml0KTsKKyAgICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQq
IGppdCkgZmluYWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjpt
YWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4u
Lj4+Ojp2YWx1ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1
bmN0aW9uVHlwZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2Fy
Z3VtZW50czsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFt
ZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9t
LCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJl
ZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRk
cmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0
VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHVi
SW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNw
aWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVz
dWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Ms
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRz
Li4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBz
dHViSW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24s
IE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVz
dWx0LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZiAvLyBFTkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggODgxOWI0YzE1OTI0MjEwZWZlZDVkNWJhOWMyNTZj
ZWQxMmRhNGE4MS4uYTZhYTliZWMwZGU0MjNmMWFiYWViZWMyNjUxNDFlMmZkMjA0ZmJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTEwMjYsMjQgKzEwMjYsMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQo
Tm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBz
dHViSW5mby5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKLSAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1Nw
aWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlw
ZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8o
dGhpcyk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2Up
OwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLmdwcigpOwogICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKQEAgLTEwNTEsNyArMTA1NSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAg
ICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGws
IE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xMDY3LDI3ICsxMDcxLDMxIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
KQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBD
ZWxsVXNlOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlzKTsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3By
KCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLmdwcigpOworICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdw
cigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAK
ICAgICAgICAgYmFzZS51c2UoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0
UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBE
b250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNz
VHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9y
bWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1Yklu
Zm8odGhpcyk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
LQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKwor
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CkBA
IC0xMDk2LDcgKzExMDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZs
dXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAot
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxs
LCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTExMTEsMTQgKzExMTksMTUgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJ
ZChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2Vs
bFVzZSkgeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotCiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCk7CkBAIC0xMTI5LDE5ICsxMTM4LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAKICAgICAgICAgSklURGVsQnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICNlbmRpZgogCiAgICAgICAgIG1faml0LmFk
ZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMTcwLDIyICsxMTgwLDIzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywg
bm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1
bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisg
ICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLmdwcigpOwogICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBr
ZXkuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOwogCisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisKICAgICAgICAgaWYgKG5lZWRz
VHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKQEAgLTExOTUsMTkg
KzEyMDYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCBy
ZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hH
UFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
ICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwpAQCAtMTIzNiw5ICsxMjQ4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxl
dGVCeVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KE5vZGUqIG5vZGUpCiB7CisgICAgR1BSVGVtcG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwog
CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogCkBAIC0xMjQ5LDEzICsxMjYzLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCiAgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVy
cywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MpOworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKLSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAotICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplLAorICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFPcHRp
b25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisKKyAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAogICAgICAgICBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCkpOworICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKIAogICAgIG1faml0LmFkZEluQnlJZChn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNs
b3dQYXRoKSk7CkBAIC0zNTE5LDkgKzM1MzcsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMK
IHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gR2V0
UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9ncmFw
aC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxhdGVT
eW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBHUFJUZW1wb3Jhcnkgc3R1Yklu
Zm8odGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAg
R1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFwaC5j
aGlsZChub2RlLCAxKSk7CisKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENh
bGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3Jp
Z2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMzUzMywyMiArMzU1NywyMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVl
UmVncyBiYXNlLCBKUwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0
LnJlZ3MoKSk7CisgICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQ
Uik7CiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFrZVNs
b3dQYXRoQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKLSAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksCisgICAgYXV0byBtYWtlU2xvd1BhdGhJQ0NhbGwgPSBbJl0oYXV0byBiYXNl
KSB7CisgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICByZXN1bHQu
cmVncygpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAogICAgICAgICAgICAgYmFzZSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CiAgICAgfTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNl
SXNLbm93bkNlbGwKLSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJh
c2UpOworICAgICAgICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlLnBheWxvYWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2Up
OwogCiAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzU2MCwyOCArMzU4NCwz
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUq
IG5vZGUpCiB7CiAgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkg
ewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhp
cyk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGls
ZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3By
KCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29t
cGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRD
b21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlzKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0
ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwog
ICAgICAgICBicmVhazsKQEAgLTM2ODAsMjkgKzM3MDgsMzIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBHUFJUZW1w
b3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworCisgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
Ci0KLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmlu
ZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAogICAgIC8vIHRvIGNoZWNrIGl0IGhl
cmUuCiAgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVm
aW5lKCkgPyBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJl
Y3RQcml2YXRlRmllbGRTZXQ7Ci0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2Rl
OjpzdHJpY3QoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CisgICAgR1BSVGVt
cG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3By
KCk7CiAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAg
ICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3lt
Ym9sKG5vZGUtPmNoaWxkMigpLCBicmFuZEdQUik7CkBAIC0zNzE3LDE1ICszNzQ4LDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQog
CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZh
dGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCkt
PnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNzM2
LDkgKzM3NjgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJy
YW5kKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJy
YW5kKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAt
Mzc1MSwxNSArMzc4NSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0
ZUJyYW5kKE5vZGUqIG5vZGUpCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsK
ICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVC
cmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAorICAgICAgICBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKIAogICAgIG1faml0LmFkZFBy
aXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zODc3LDIxICszOTEyLDIxIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1
bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZG
b3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVn
IHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nh
c2UpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZh
bHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90
eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQ
UiwKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09i
amVjdCB8IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAg
ICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoc2xvd0Nhc2UpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAogICAgICAgICBw
cm90b3R5cGVSZWdzKTsKICAgICAKICAgICBtX2ppdC5hZGRJbnN0YW5jZU9mKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwpAQCAtMzkwMyw2ICszOTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAgICAmJiBub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1Yklu
Zm8odGhpcyk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTEwLDEzICszOTQ2LDE0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIo
dGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyBwcm90b3R5cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAg
ICAgICAgIAotICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMo
bm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCBy
ZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAg
IAogICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAg
ICByZXR1cm47CkBAIC0zOTI2LDEyICszOTYzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgp
LCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7CiAgICAgCisgICAgR1BSVGVtcG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVl
T3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAg
ICAgCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBw
cm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0zOTQ3LDcg
KzM5ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBu
b2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNo
SWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9y
Q2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZvckNl
bGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHViSW5mb0dQ
Uiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAogICAgIGRvbmUu
bGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CkBAIC0xMjk3Nyw0NiArMTMwMTYsNTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRv
SW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlz
KTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHVi
SW5mby5ncHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBu
b2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAg
IGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1
dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAo
KSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogeworICAgIEdQUlRlbXBvcmFyeSBz
dHViSW5mbyh0aGlzKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERp
cmVjdChOb2RlKiBub2RlKQogeworICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlzKTsKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5n
cHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGly
ZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ2
NDgsMTggKzE0NjkzLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlw
ZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChz
cGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hl
ZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgog
ICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KHZhbHVlUmVncywgZmFsc2UpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNjcmF0
Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKQEAgLTE0NjY3LDEwICsxNDcxMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgaWYgKHNsb3dQYXRoVGFy
Z2V0LmlzU2V0KCkpCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICBhdXRvIHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9u
KCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCiAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDk3MTc1
MjI4ZjYyZGE3MzUwMDIxMGVmZDJjZWNjYTk1ODJiNjgwMmQuLjY3OWI3MGI4OTRhOWYwY2ZkMjJi
M2M0MDc0YjcyZTQ4MTkzYjgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTcxOSwxNiArNzE5LDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKIAogICAgIHZvaWQgY29tcGlsZUNoZWNrRGV0YWNoZWQoTm9kZSopOwogCi0gICAgdm9p
ZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Ms
IEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9k
ZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgp
LCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRC
eUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lk
IGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZh
bHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRv
U3BpbGwpOwogICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lk
IGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BS
UmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1
bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2
b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1
bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7
CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1Bh
dGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQ
Uk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJS
ZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAg
dm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJP
ck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQ
UlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBh
eWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlz
dCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwor
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFn
R1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25l
LCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1
bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNv
bnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6
SnVtcExpc3QoKSk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQoTm9kZSop
OwpAQCAtNzQ5LDcgKzc0OSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGdl
bmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgYm9vbCBnZW5lcmljSlNWYWx1ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9
IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSos
IEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyBy
ZXN1bHRHUFQsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CisgICAgdm9pZCBjb21w
aWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFu
Y2VPZihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSopOwpAQCAtOTQ3LDYgKzk0
NywyNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdHlwZW5hbWUgUmVzdWx0UmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVu
YWJsZV9pZl90PAorICAgICAgICBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVz
dWx0LAorICAgIEpJVENvbXBpbGVyOjpDYWxsPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGFkZHJlc3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVy
YXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJl
c3Mub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAg
ICAgICFGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIEpJVENv
bXBpbGVyOjpDYWxsPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFk
ZHJlc3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
Rm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3MsIGFyZ3MuLi4pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRp
b25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CiAgICAgICAgIC8v
IERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVyLgpAQCAtOTg2LDYg
KzEwMDYsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gbV9qaXQu
YXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBw
ZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHBy
ZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdp
bihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICByZXR1cm4gbV9qaXQu
YXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBl
bmRPcGVyYXRpb25DYWxsKGNvbnN0IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gZnVuY3Rp
b24pCiAgICAgewogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CkBAIC0xMDA4LDYg
KzEwMzUsMTQgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gY2FsbDsK
ICAgICB9CiAKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlm
IChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBjYWxsOworICAgIH0K
KwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAg
ICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDI1MjlkZmZmMTE4NzczZTIwMWNkOGEzOWY3ZjczNTBkODM3Y2IwZDguLjVjNTg1
OWE4NDI0YTAwMDg1ODU5MGEzYzI2ZDFiOTM1YmE3OTUyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjA4LDE5
ICsyMDgsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICBKSVRD
b21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIGlmIChzbG93UGF0aFRhcmdldC5pc1Nl
dCgpKQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKLSAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VT
aGFyZWRJQygpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAg
IGlmIChiYXNlVGFnR1BST3JOb25lID09IEludmFsaWRHUFJSZWcpIHsKLSAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJp
YXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksCisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlw
ZSksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZVBheWxvYWRHUFIpLAogICAgICAgICAgICAgaWRlbnRpZmllci5y
YXdCaXRzKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRC
eUlkRnVuY3Rpb24odHlwZSksCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1Zh
bHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwK
KyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiks
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5v
bmUsIGJhc2VQYXlsb2FkR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KIAogICAg
IG1faml0LmFkZEdldEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yNDcsOSArMjQ4LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoYmFzZVRh
Z0dQUk9yTm9uZSA9PSBJbnZhbGlkR1BSUmVnICYmIHRoaXNUYWdHUFIgPT0gSW52YWxpZEdQUlJl
ZykgewotICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgICAg
ICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLAorICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZVBheWxvYWRHUFIpLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUodGhpc1BheWxvYWRHUFIpLAogICAgICAgICAgICAgaWRlbnRpZmllci5yYXdC
aXRzKCkpOwpAQCAtMjU3LDkgKzI1OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWRXaXRoVGhpcygKICAgICAgICAgQVNTRVJUKGJhc2VUYWdHUFJPck5vbmUgIT0gSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgIEFTU0VSVCh0aGlzVGFnR1BSICE9IEludmFsaWRHUFJSZWcpOwog
ICAgICAgICAKLSAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwg
YmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiks
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2Fs
bCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQ
Uk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5
bG9hZEdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRH
ZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yMzU1LDkgKzIzNTYsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncyk7Cisg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1
YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0
QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlUmVncywgcHJvcGVydHlSZWdzKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCBlMTY1YTQ4ODI5YWUwYzAyNGFiYjgyMzZiMDFkN2MxZTAzNTI0ZjI2Li4yOTJmMDg1
ZmExYzM2ZDMxOGEyMWE4ZWQ0MjdlZmFjZTIyYzc2ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE0NywxMiArMTQ3LDEy
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIH0K
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdp
biwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxS
ZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3Rl
cnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdp
biwgYmFzZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwg
bW9kZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3Vs
dC5ncHIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0
eXBlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7
CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsK
QEAgLTE2MCwyNiArMTYwLDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAgIC8v
IFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBu
ZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBm
YWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAg
ICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAg
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQ
UiwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93
UGF0aFRhcmdldCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAor
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24o
dHlwZSksCiAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hl
Y2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYg
c2xvd1BhdGhUYXJnZXQpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIs
IEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0
KQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFu
ZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9z
dHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVz
ZWRSZWdpc3RlcnMoKTsKQEAgLTE4NywyMCArMTg5LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSCiAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgIHVzZWRSZWdp
c3RlcnMuc2V0KHRoaXNHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRH
UFIsIGZhbHNlKTsKKyAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwog
ICAgIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCiAgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRp
ZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQ
Uik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRh
cmdldCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlm
ICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCisgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKICAgICAgICAgRG9udFNw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BS
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkp
OwogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0yNjgx
LDE2ICsyNjg1LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwotCisgICAgICAg
ICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJvcGVydHkp
OworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAorICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworCiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAg
ICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMo
KTsKQEAgLTI3MDEsNyArMjcwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAg
ICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+
cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDExICsyNzE5LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTM5ODQsOSArMzk5MiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogewogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UgJiYgbm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHVi
SW5mbyh0aGlzKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8u
Z3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC0zOTk0
LDE1ICs0MDA1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRo
aXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlz
VmFsdWUuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5n
cHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
QEAgLTQwMTMsNyArNDAyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENl
bGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlk
V2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJl
c3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2Vs
bExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCA3MjAxMmI2YzRlMzRjNzg3OGE4NzRhZmZjNWE1MTQyZDA1MTc5
NzZlLi45N2NiYmVlMzcwNzFhMGY0NDVkMGRkODU5N2JlNjAxYjc2NTE2YjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTcyLDYgKzM5
NzIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKIAogICAgICAgICBSZWZQ
dHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBh
dGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC0zOTkzLDEwICszOTk0LDEx
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBh
cmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJh
bXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gcGFyYW1z
LmdwU2NyYXRjaCgwKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlH
UFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAgICAgICAg
ICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQwMTAsMTMgKzQwMTIsMTYgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BS
LAogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00
MTA0LDYgKzQxMDksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKIAogICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC00MTI0LDEw
ICs0MTMwLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0g
cGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gcGFyYW1z
LmdwU2NyYXRjaCgwKTsKIAogICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NU
eXBlLAotICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQx
NTMsMTMgKzQxNjAsMTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAg
IGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygm
aml0KTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0
ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9w
cmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BS
LCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgIGppdC5qdW1wKCku
bGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTAsNiArNDUy
MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKIAogICAgICAgICAvLyBGSVhNRTogSWYg
dGhpcyBpcyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9s
YXRpbGUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUyODQ4CkBAIC00NTMyLDEwICs0NTQzLDEyIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVyIGNhbGwgSUNzIGdlbmVyYXRlZCBi
eSB0aGUgUHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJ
bmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0
QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhw
YXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21h
TW9kZSwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwg
c3R1YkluZm9HUFIsIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2Rl
LAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAtNDU0NSwxMyArNDU1OCwxNiBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbmVy
YXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJS
ZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkp
LmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOwogCkBAIC01MjMzLDYgKzUyNDksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAKICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50
RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTUyNTMsMTAgKzUyNzAsMTEgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBd
LmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigp
OwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsK
KyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDAp
OwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5l
cmF0b3I+OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwK
LSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJl
c3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNW
YWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJvcGVydHlJc1N0cmluZzsK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9
IHByb3BlcnR5SXNJbnQzMjsKQEAgLTUyNzQsMTMgKzUyOTIsMTYgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxP
cHRpbWl6ZTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5
VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAogICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpA
QCAtNTgzMCw3ICs1ODUxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVy
VGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7Cisg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7CiAKICAgICAgICAg
UmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAg
ICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC01
ODUwLDkgKzU4NzEsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAg
IGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAg
ICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgYXV0
byBzdHViSW5mb0dQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICAgICAgYXV0
byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZS5ncHIoKSAhPSByZXR1cm5HUFIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
LmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGJhc2UuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVy
bkdQUiAhPSBzY3JhdGNoR1BSKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKQEAgLTU4NjgsNyArNTg5MSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
a2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gcGFyYW1zWzJdLmdwcigpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5i
cmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CkBAIC01
ODgwLDE3ICs1OTAzLDE4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiks
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+
OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJh
bXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQs
IEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwotICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAg
cGFyYW1zLmFkZExhdGVQYXRoKApAQCAtNTg5OSwxMSArNTkyMywxMyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdp
biA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BS
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgcmV0dXJuR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIGJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxs
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKIApAQCAtMTIyMjQsOCArMTIyNTAsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRh
ZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC0xMjI0MiwxMCArMTIyNjgsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFy
YW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmll
ciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHBhcmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTIyNTQsMTMgKzEyMjgyLDE2IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtMTI0Njgs
NyArMTI0OTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIocHJvdG90eXBlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOworICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSAzOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJh
aW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAg
ICAgCkBAIC0xMjQ4Miw4ICsxMjUxMyw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDIpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lSnVtcDsKICAg
ICAgICAgICAgICAgICBpZiAoIXZhbHVlSXNDZWxsKSB7CkBAIC0xMjUwNiw3ICsxMjUzOCw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
YXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIs
CisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1
bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLAog
ICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmplY3QpOwogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTI1MTks
MTEgKzEyNTUxLDEzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0g
aml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCByZXN1bHRHUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIHZhbHVlR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlw
ZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTEzOTY4LDYgKzE0MDAy
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRC
eUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5j
ZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxl
IHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91
Z2gsIHNpbmNlIHRoZQpAQCAtMTM5OTYsMTAgKzE0MDMxLDEyIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1z
LCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDEwLDEz
ICsxNDA0NywxNiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlJZEZ1bmN0aW9uKHR5cGUpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRp
b25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJh
bXNbMF0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7
CiAKQEAgLTE0MDQyLDggKzE0MDgyLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1ZSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQog
ICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7
CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhh
bmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CkBAIC0xNDA2NSwxMCArMTQxMDUsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxT
aXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gcGFyYW1z
LmdwU2NyYXRjaCgwKTsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNW
YWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDA3OSwxMyArMTQxMjEs
MTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1
bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
dHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0
aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFd
LmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNb
MV0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4
IDJhZGQ0OTRjNTMyYWFlYThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFl
NzkyNmM2YTA3MTgzNzMxNTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4Owog
CiBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBH
UFJSZWcgcmV0dXJuUmVnaXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0Nh
bGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlciwg
R1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAg
ICwgbV9udW1BcmdzKG51bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lz
dGVyKQpAQCAtNjMsNiArNjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxD
b250ZXh0KAogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVu
dFJlZ2lzdGVycyk7CiAgICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAg
ICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKKyAgICBpZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RD
YWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmls
dGVyKHVzZWRSZWdpc3RlcnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxp
bmdDb252ZW50aW9uUmVnaXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxs
Q29udGV4dDo6flNsb3dQYXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1Bh
dGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGNhbGxUYXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5r
U2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAg
IHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJn
dW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQ
YXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwg
bnVsbHB0ciwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsK
IH0KIAogU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwy
MiBAQCBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xv
d1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGNhbGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtl
eVdpdGhUYXJnZXQoY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQ
YXRoQ2FsbChtX2ppdC5jYWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFk
ZExpbmtUYXNrKAorICAgICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRo
dW5rID0KKyAgICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5r
KHZtLCByZXN1bHQua2V5KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0
LmNhbGwoKSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkp
OworICAgICAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4pCiB7CiAgICAgaWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlm
M2ZhODBjMTJhLi5kNmYyODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1
NCwxNyBAQCBjbGFzcyBTbG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhp
bmd5IHRoYXQgd2lsbCBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0
cyBhbmQgc3VjaC4KIGNsYXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNs
b3dQYXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJz
JiwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0
aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVu
c2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2Fs
bFRhcmdldFJlZ2lzdGVyKTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8g
Tk9URTogVGhlIGNhbGwgdGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBs
aW5rZWQgYnkgdGhlIEpJVCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlz
IG5vIG5lZWQgZm9yIHlvdSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBt
YWtlQ2FsbChWTSYsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7Cisg
ICAgU2xvd1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAog
cHJpdmF0ZToKICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBr
ZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVn
aXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdD
b252ZW50aW9uUmVnaXN0ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9w
ZXJhdGlvbigKIHsKICAgICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQ
YXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1
bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQg
Y29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEs
IHJlc3VsdEdQUiwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2
b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29u
dGV4dC5tYWtlQ2FsbCh2bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAg
U2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4u
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2Fs
bCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRp
b25UYXJnZXQsCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVz
dWx0R1BSLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwg
Y2FsbDsKKyAgICB7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVn
aXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbDx2b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAg
ICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpub25BcmdHUFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4
Y2VwdGlvblRhcmdldCkKKyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRF
eGNlcHRpb25DaGVjayh2bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAg
Vk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBq
aXQsIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BS
UmVnIHJlc3VsdEdQUiwKKyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBp
ZiAoY2FsbFNpdGVJbmRleCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVy
YXRpb24odm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwg
cmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0
ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMm
IGppdCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qq
IGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcg
cmVzdWx0LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9w
ZXJhdGlvbigKKyAgICAgICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0
ZUluZGV4Rm9yQ29kZU9yaWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwg
ZnVuY3Rpb24sCisgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZj
NjIwMzNhODM5MDhlNmZjYzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3
MmJlZjU1MTNlZmU1YWEzOWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsS2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNl
ZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBS
YXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRS
ZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgi
PHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zm
c2V0LCAiLCBpbmRpcmVjdE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJn
ZXQgPSAiLCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwg
YXJndW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGxLZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEz
ODQyYmRkMzNkLi4wY2U2MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUx
LDExICs1MSwxMiBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRo
Q2FsbEtleSgKICAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdp
c3RlcnMsCi0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZz
ZXQsIGludDMyX3QgaW5kaXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNl
dCkKICAgICAgICAgLCBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25Q
dHJUYWc+KCkpCiAgICAgICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVy
cykKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNl
dChpbmRpcmVjdE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBA
IGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVu
dFJlZ2lzdGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldDsgfQorICAgIGludDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGlyZWN0T2Zmc2V0OyB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0
KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1
bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxL
ZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZz
ZXQoKSwgaW5kaXJlY3RPZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtl
eSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDog
bV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zm
c2V0KDApCiAgICAgewogICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZh
bHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZh
bHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4
ICs5MywyMCBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fdXNlZFJlZ2lzdGVycyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYm
IG1fY2FsbFRhcmdldCA9PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zm
c2V0ID09IG90aGVyLm1fb2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIu
bV9vZmZzZXQKKyAgICAgICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRp
cmVjdE9mZnNldDsKICAgICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNo
KG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICBy
ZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2Fs
bFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNl
dDsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwog
ICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lz
dGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAg
IHB0cmRpZmZfdCBtX29mZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQg
eyAwIH07CiB9OwogCiBzdHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggYTU3ODc1OWMwMGZiNDY5Mjg3YTYyMTc2NGFl
MGE2ZGNlOTg0OWViZC4uNjIwNmI4ZjIwMGQ4ZjQzYWQ2MzU5YTc5NjE5MWRmYzY5YzQ1MTM1MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2Vu
ZXJhdGlvblRodW5rR2VuZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIp
OwogICAgIAogICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRj
aCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5v
bkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MSk7CiAKICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5l
cmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRv
dWJsZSk7CiAgICAgfQogICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFy
Z0dQUjAsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXku
YXJndW1lbnRSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXku
YXJndW1lbnRSZWdpc3RlcnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAg
IGRvbnRDbG9iYmVyLnNldChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2Ji
ZXJDaGVjayhqaXQsIFdURk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhl
bHBlcnM6OkNhbGwgY2FsbDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2Fs
bCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0g
aml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5p
bmRpcmVjdE9mZnNldCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIGtleS5vZmZzZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAg
ICAgaml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNl
cnZlZE5vblJldHVybkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNv
bnN0IFMKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcGF0Y2hC
dWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJn
ZXQoKSkKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJG
VEwgc2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmlu
ZGV4IDkzNDE0ZDFmYzdjYmMwZWZlZWM0ZTNiYWY3NzdjN2ZmZWQ3OTEyMDUuLmEwYWM0ODZmNDRm
NWM1YzA4NGQ4NjQ0ZjA0ODExZjA4YzU1YmNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKQEAgLTY1MSw3ICs2NTIsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dFZpcnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAog
ICAgIGFkZExpbmtUYXNrKAogICAgICAgICBbPSwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sICppbmZvKTsKLSAgICAgICAg
ICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1
YWxUaHVuaywgdm0pKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRT
dHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkpOwogICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPih2aXJ0dWFsVGh1bmsuY29kZSgpKSk7CiAgICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjhiMTIxM2Y2ZDI0YzcwYWZiNTAzMzIw
ZWFhNzJkODllN2Q4NmJlOS4uZTkwOTZiNTc3M2YzMjE3MzE2OWU3M2ZhZTM0MTExODg2OTg5N2Vh
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC0yMDcsNyAr
MjA3LDcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAK
ICAgICAvLyBleHRyYUdQUkFyZ3MgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlw
ZXMgcGFzc2VkIGluIHJlZ2lzdGVyIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgogICAgIC8vIGV4
dHJhUG9rZSBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgb24g
dGhlIHN0YWNrLgotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2U+CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KICAgICBzdHJ1Y3QgQXJnQ29sbGVj
dGlvbiB7CiAgICAgICAgIEFyZ0NvbGxlY3Rpb24oKQogICAgICAgICB7CkBAIC0yMTksOCArMjE5
LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAg
ICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucy5maWxsKEludmFsaWRHUFJSZWcpOwogICAgICAgICB9
CiAKLSAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQgYywg
dW5zaWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZz4KLSAgICAgICAg
QXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGc+JiBvdGhlcikK
KyAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQgYywgdW5z
aWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZywgdW5zaWduZWQgaD4K
KyAgICAgICAgQXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGcs
IGg+JiBvdGhlcikKICAgICAgICAgewogICAgICAgICAgICAgZ3ByU291cmNlcyA9IG90aGVyLmdw
clNvdXJjZXM7CiAgICAgICAgICAgICBncHJEZXN0aW5hdGlvbnMgPSBvdGhlci5ncHJEZXN0aW5h
dGlvbnM7CkBAIC0yMzAsNjUgKzIzMCw3NCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zID0gb3RoZXIu
Y3Jvc3NEZXN0aW5hdGlvbnM7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhH
UFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2Vz
W251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGlu
YXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3Vt
ZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVn
QXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAx
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBy
ZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZnByU291cmNlc1tudW1GUFJTb3Vy
Y2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmZwckRlc3RpbmF0aW9uc1tudW1G
UFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVn
IGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAx
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcg
YXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMgKyAxLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlz
KTsKIAogICAgICAgICAgICAgcmVzdWx0LmNyb3NzU291cmNlc1tudW1Dcm9zc1NvdXJjZXNdID0g
YXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NEZXN0aW5hdGlvbnNbbnVtQ3Jvc3NT
b3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyAr
IDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmco
R1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0
cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3Vs
dCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNd
ID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNv
dXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHB1c2hO
b25BcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4gcmVz
dWx0KCp0aGlzKTsKKworICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNl
c10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BS
U291cmNlc10gPSBkZXN0aW5hdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKworICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4g
YWRkR1BSRXh0cmFBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJFeHRyYUFyZygpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4g
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BS
UmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQorICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Mg
KyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMp
OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDE+IGFk
ZFBva2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOworICAgICAgICAg
ICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKICAgICAgICAgfQogCiAjaWYgT1MoV0lORE9X
UykgJiYgQ1BVKFg4Nl82NCkKQEAgLTMzMSwxMiArMzQwLDE0IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1bnNp
Z25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQo
dW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewogICAgICAgICAvLyBDbGFu
ZyBjbGFpbXMgdGhhdCBpdCBjYW5ub3QgZmluZCB0aGUgc3ltYm9sIGZvciBGUFJSZWcvR1BSUmVn
OjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHdoZW4gdGhleSBhcmUgcGFzc2VkIGRpcmVjdGx5
IHRvIHN0ZDo6bWF4Li4uIHNlZW1zIGxpa2UgYSBidWcKICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
czsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKIAorICAgICAgICBVTlVTRURfUEFSQU0obm9u
QXJnR1BScyk7CisKICAgICAgICAgY3VycmVudEdQUkFyZ3VtZW50ICs9IGV4dHJhR1BSQXJnczsK
ICAgICAgICAgY3VycmVudEZQUkFyZ3VtZW50IC09IG51bUNyb3NzU291cmNlczsKICAgICAgICAg
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCkBAIC0zNTAsMTUgKzM2MSwxNSBA
QCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmdUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBw
b2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwg
dW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJB
cmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1
bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25l
ZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1
cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJB
cmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9r
ZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2lnbmVkIHBva2VP
ZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQ
UkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlKTsKICAgICAgICAgcmV0dXJuICEocG9rZU9mZnNldCAmIDEpOwogICAgIH0KIApAQCAt
Mzc2LDggKzM4Nyw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9wdGltaXphdGlv
biB0aW1lIGV4cGxvc2lvbiBhc3NvY2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBpbiByZWN1cnNp
dmUgdGVtcGxhdGVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUs
IHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1h
cnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9N
U1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
UmVnVHlwZSBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVzaW5nIEluZm9UeXBl
ID0gSW5mb1R5cGVGb3JSZWc8UmVnVHlwZT47CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEluZm9UeXBlOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwpAQCAtMzkyLDMxICs0
MDMsMzEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJs
ZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91Ymxl
Iik7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFy
Z3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4u
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1Zh
bHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3Rl
cjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBh
cmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CkBAIC00MjQs
OCArNDM1LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7
CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQ
UykKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJX
ZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKIApAQCAtNDY5
LDI1ICs0ODAsMjUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQgPCBudW1iZXJP
ZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsg
MSwgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkU3RhY2tBcmcoYXJnKS5h
ZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5k
aWYKIAogICAgICAgICAvLyBPdGhlcndpc2UgcGFzcyBGUCBhcmd1bWVudCBvbiBzdGFjay4KLSAg
ICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAgcG9rZUZvckFy
Z3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdz
Li4uKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihDVVJSRU5U
X0FSR1VNRU5UX1RZUEUpIDw9IDQ+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
R1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3Mu
YXJnQ291bnQoYXJnKTsKQEAgLTQ5NywzNCArNTA4LDM0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBh
cmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgcG9rZUFyZ3VtZW50
c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVu
YW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBwb2tlQXJndW1l
bnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJy
ZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQUkluZm86OnJlZ1QwKTsKIAog
ICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50ICsgMSA9PSBudW1BcmdSZWdpc3RlcnMpIHsKLSAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4u
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlICsgMSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDIpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlICsgMik7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdzLi4u
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJS
RU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5
bG9hZCwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0
ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWdu
ZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChwYXlsb2FkLmdwcigp
KTsKQEAgLTU0NCw5ICs1NTUsOSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1i
bHlIZWxwZXJzIHsKICAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIHBheWxvYWQuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1l
PENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVn
cyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2ln
bmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnLnRhZ0dQUigp
KTsKQEAgLTU2OSwxMSArNTgwLDExIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogI2VuZGlmIC8vIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQUykKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxUcnVz
dGVkSW1tLCBBcmc+Ojp2YWx1ZQogICAgICAgICB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPEFyZywg
VHJ1c3RlZEltbT46OnZhbHVlPiAvLyBXZSBoYXZlIHRoaXMgc2luY2UgREZHU3BlY3VsYXRpdmVK
SVQgaGFzIGl0J3Mgb3duIGltcGxlbWVudGF0aW9uIG9mIFRydXN0ZWRJbW1QdHIKLSAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgb25seSBzdXBwb3J0cyBub24t
ZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlIGFyZ3VtZW50cyBzaW5jZSB3ZSBuZXZlciBjYWxsIG9w
ZXJhdGlvbnMgd2l0aCBub24tcmVnaXN0ZXIgdmFsdWVzLgogICAgICAgICAvLyBJZiB3ZSBldmVy
IG5lZWRlZCB0byBzdXBwb3J0IGltbWVkaWF0ZSBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMgd2Ug
d291bGQgbmVlZCB0byBkdXBsaWNhdGUgdGhpcyBsb2dpYyBmb3IgYm90aCB0eXBlcywgd2hpY2gg
c291bmRzCkBAIC01OTEsNDYgKzYwMiw0NiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJs
ZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBBcmc+
Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0
KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW0zMihhcmcpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFi
bGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJn
Pjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPT0g
OCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tNjQoYXJnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+
Ojp2YWx1ZQogICAgICAgICAmJiAoKHN0ZDo6aXNfcG9pbnRlcjxBcmc+Ojp2YWx1ZSAmJiBzdGQ6
OmlzX2NvbnZlcnRpYmxlPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcG9pbnRlcl90
PEFyZz4+KiwgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpCiAgICAgICAgICAgICB8fCBz
dGQ6OmlzX3NhbWU8QXJnLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVlKT4KLSAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgLy8gU3Bl
Y2lhbCBjYXNlIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZSBiZWNhdXNlIGl0J3MgcmVhbGx5IGFu
bm95aW5nIHRvIGRlYWwgd2l0aCBvdGhlcndpc2UuLi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgog
ICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1l
PENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgU3RydWN0dXJlKj46OnZhbHVlCiAgICAgICAgICYmIHN0
ZDo6aXNfc2FtZTxBcmcsIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVlPgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcuZ2V0KCkpLCBhcmdzLi4uKTsKICAgICB9
CkBAIC02MzksOCArNjUwLDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAjdW5kZWYgUkVTVUxUX1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVw
IHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkg
PT0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3MsICJPbmUgbGFzdCBzYW5pdHkgY2hlY2siKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjU1LDMxICs2NjYsNDQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVtRlBS
U291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4o
YXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUZQUlNv
dXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAgfQogCi1wdWJs
aWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFbnRyeUlt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1
c2luZyBGaXJzdEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD47CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19zYW1lPEZpcnN0QXJndW1lbnRUeXBlLCBDYWxsRnJhbWUqPjo6dmFsdWUpIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBm
b3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4u
CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVj
ayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncywgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOwor
ICAgICAgICB9IGVsc2UgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJC
YXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAgICAgICB9Cisg
ICAgfQogCi0jZGVmaW5lIEZJUlNUX0FSR1VNRU5UX1RZUEUgdHlwZW5hbWUgRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPgorcHVibGljOgogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEZJUlNUX0FSR1VN
RU5UX1RZUEUsIENhbGxGcmFtZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdz
KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCiAg
ICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29y
a3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJp
dC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVj
ayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAw
LCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwhc3RkOjppc19zYW1lPEZJUlNUX0FSR1VNRU5UX1RZUEUsIENhbGxGcmFtZSo+
Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChHUFJSZWcgZnVuY3Rpb25HUFIsIEFy
Z3MuLi4gYXJncykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhpcyBv
bmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5n
cyB1cCBmb3IgMzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJCYXNpYyBz
YW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
LCAwLCAwPigpLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3Bl
cmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hO
b25BcmcoZnVuY3Rpb25HUFIsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKICAgICB9
CiAKLSN1bmRlZiBGSVJTVF9BUkdVTUVOVF9UWVBFCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoQWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihB
cmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCkucHVzaE5vbkFyZyhhZGRyZXNz
LmJhc2UsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKKyAgICB9CiAKICAgICB2b2lk
IHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKaW5k
ZXggZjdhYTMyOWZlMjVkMTljNzM3MTg0NzBhZWZmYjNiNGFhZWEwNWRiNi4uMzhkY2Y2MzU3NzAy
YjVhOWU2NDYzNWMzZDA0MjhlOTU0MTE0N2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb25EYXRhLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgpAQCAtMzksOCArNDAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCisgICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBW
ZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiBrZXlzKQogICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkK
KyAgICAsIG1fdm0odm0pCisgICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkKIHsKICAgICB2bS5o
ZWFwLm1faml0U3R1YlJvdXRpbmVzLT5hZGQodGhpcyk7CiB9CkBAIC00OSw2ICs1MiwxMCBAQCBH
Q0F3YXJlSklUU3R1YlJvdXRpbmU6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSB7IH0KIAogdm9p
ZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogeworICAgIGF1
dG8gaXRlciA9IG1fdm0ubV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5maW5kPFNoYXJlZEpJVFN0
dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yPih0aGlzKTsKKyAgICBpZiAoaXRlciAhPSBtX3ZtLm1f
c2hhcmVkSklUU3R1YnMtPm1fc3R1YnMuZW5kKCkpCisgICAgICAgIG1fdm0ubV9zaGFyZWRKSVRT
dHVicy0+bV9zdHVicy5yZW1vdmUoaXRlcik7CisKICAgICBpZiAobV9pc0pldHRpc29uZWQpIHsK
ICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Igd2hlbiB0aGUgc3lzdGVtIHNodXRz
IGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRoZSBKSVQgc3R1YiByb3V0aW5lIHNl
dCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8gZGVsZXRpbmcKQEAgLTc1LDkg
KzgyLDkgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmRlbGV0ZUZyb21HQygpCiB9CiAK
IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYgY29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgVmVjdG9y
PEFjY2Vzc0Nhc2VLZXk+JiYga2V5cywgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBjb25zdCBW
ZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3Mp
Ci0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pCisgICAgOiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpCiAgICAgLCBtX2NlbGxzKGNlbGxz
LnNpemUoKSkKICAgICAsIG1fY2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQog
ewpAQCAtMTA2LDkgKzExMyw5IEBAIHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6
bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRp
bmVXaXRoRXhjZXB0aW9uSGFuZGxlcigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0NlbGwqIG93bmVy
LCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxM
aW5rSW5mb3MsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYgY29kZSwgVk0mIHZtLCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiBrZXlzLCAgY29u
c3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxM
aW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhj
ZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJD
YWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2
bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQorICAgIDogTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxz
LCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogICAgICwgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9u
SGFuZGxlcihjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAsIG1fY29kZU9yaWdpblBvb2woJm1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRs
ZXItPmNvZGVPcmlnaW5zKCkpCkBAIC0xMzEsNyArMTM4LDcgQEAgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGEKICNlbmRpZgogfQogCi12b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyOjphYm91dFRvRGllKCkKK3ZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4
Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUoVk0mKQogewogICAgIG1fY29kZUJsb2NrV2l0aEV4
Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTU0LDYg
KzE2MSw3IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6
Om9ic2VydmVaZXJvUmVmQ291bnQoKQogCiBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0
dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mIGNvZGUsCisgICAgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+JiYga2V5cywKICAgICBW
TSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBib29sIG1ha2VzQ2FsbHMsCkBA
IC0xNjUsMTggKzE3MywxOCBAQCBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKAogICAgIGlmICghbWFrZXNDYWxscykgewogICAgICAgICAvLyBBbGxvY2F0aW5nIENhbGxM
aW5rSW5mb3MgbWVhbnMgd2Ugc2hvdWxkIGhhdmUgY2FsbHMuCiAgICAgICAgIEFTU0VSVChjYWxs
TGlua0luZm9zLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpJVFN0
dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVhYmxl
SklUU3R1YlJvdXRpbmUodm0sIGNvZGUsIFdURk1vdmUoa2V5cykpKTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5k
bGVycy0+aml0VHlwZSgpKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMs
IFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBl
eGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwg
V1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2Rl
QmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgp
KTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29k
ZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29k
ZSwgdm0sIFdURk1vdmUoa2V5cykpOwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywg
V1RGTW92ZShjYWxsTGlua0luZm9zKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4
IDQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQuLmJiZDY4NDUwMGZlZmYx
ZjVjNDQwNjViYzRmMmI0NjVlMzNlODk4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3Bh
Y2UgREZHIHsKIGNsYXNzIENvZGVPcmlnaW5Qb29sOwogfQogCitzdHJ1Y3QgQWNjZXNzQ2FzZUtl
eTsKIGNsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogCkBAIC01
NCwxMiArNTUsMTIgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAvLyBsaXN0IHdoaWNoIGRv
ZXMgbm90IGdldCByZWNsYWltZWQgYWxsIGF0IG9uY2UpLgogY2xhc3MgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKLSAgICBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYsIFZNJik7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIFZlY3RvcjxBY2Nlc3NDYXNl
S2V5PiYmKTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBz
dGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8
SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIFZlY3RvcjxBY2Nlc3NDYXNlS2V5PiYmIGtl
eXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoY29kZSwgdm0pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKSk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDggQEAgY2xhc3MgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAgbWFya1JlcXVp
cmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAKKyAgICBjb25zdCBWZWN0
b3I8QWNjZXNzQ2FzZUtleT4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9rZXlzOyB9
CisKICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOwogICAgIAogcHJvdGVjdGVkOgpAQCAtODEsNiAr
ODQsOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRp
bmUgewogCiAgICAgYm9vbCBtX21heUJlRXhlY3V0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNKZXR0aXNvbmVkIHsgZmFsc2UgfTsKKyAgICBWTSYgbV92bTsKKyAgICBWZWN0b3I8QWNjZXNz
Q2FzZUtleT4gbV9rZXlzOwogfTsKIAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gbWFyayBv
bmUgYWRkaXRpb25hbCBvYmplY3QgZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgpAQCAtODgsNyArOTMs
NyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUg
ewogY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUgewogcHVibGljOgogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Ci0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJh
ZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiwgY29u
c3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5m
bz4mJik7CiAgICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKICAg
ICAKIHByb3RlY3RlZDoKQEAgLTEwOSwxMCArMTE0LDEwIEBAIGNsYXNzIEdDQXdhcmVKSVRTdHVi
Um91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJl
SklUCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKIAot
ICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENv
ZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiwgY29uc3Qg
SlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4m
JiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOwogICAgIH5HQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigpIGZpbmFsOwogCi0gICAgdm9pZCBhYm91
dFRvRGllKCkgZmluYWw7CisgICAgdm9pZCBhYm91dFRvRGllKFZNJikgZmluYWw7CiAgICAgdm9p
ZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMzIsNiArMTM3
LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmlu
YWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIFJlZjxKSVRTdHViUm91dGluZT4gY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAogLy8gICAgVk0mIHZtLAorLy8gICAgVmVjdG9yPEFj
Y2Vzc0Nhc2VLZXk+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBi
b29sIG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQzLDcgKzE0OSw3IEBAIGNsYXNzIEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1h
cmtpbmdHQ0F3YXJlSklUCiAvLyB3YXkuCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklU
U3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAor
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBW
ZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiBrZXlzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJv
b2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJ
bmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRp
b25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxs
U2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3
N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgw
MDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAt
NDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7
IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdU
MAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lz
dGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAo
cmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6
eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0g
QVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0
ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1
ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDk2NTZlNzQwZWVlYjhiOWRjM2RhNjNkNTY1
MzA1Y2Q1YjA4ZGE5MTAuLjY0MDU3MTgyMjMxN2U1MDdlNDVlNDExZmQ5MjQ1M2E4Y2NhMjFjNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTk0MCw2ICs5NDAsMTAgQEAgdm9pZCBK
SVQ6OmxpbmsoKQogICAgICAgICAgICAgICAgIGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAgICAg
bmV4dEhvdFBhdGhUYXJnZXQsCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOworICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgICAgICAgICBi
eVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gc2xv
d1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAg
ICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0
ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IDIyYzFjNjhhYzkxNmZmMjMyMmM4MTgwMzc2NWQ5NGE3MzA2NjkwZWYuLjZmYTZhNmQxNjQ4MWI1
MjhkNjBjZWRmN2U3NjkwMTVmYzExODBlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
MjkzLDYgKzI5MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbkNhbGw7CiAgICAgICAgIH0KIAorICAgICAgICBDYWxsIGFwcGVuZENhbGwoQWRkcmVzcyBm
dW5jdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNhbGwoZnVuY3Rpb24sIE9w
ZXJhdGlvblB0clRhZyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZf
NjQpCiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3Qg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk3
LDM5ICs0MDIsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGlu
dC1jaGVja2VkIGFuZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAg
ICAgLy8gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2Fz
ZXMuIEZhbGwtdGhyb3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdU
MCwgYW5kIGl0IGlzIG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQz
MkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIElu
dDMyU2hhcGUpOyB9Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRD
b250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAg
SnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
OworICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsg
cmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZv
LCBJbnQzMlNoYXBlKTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KTsKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5n
VHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3Qg
ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRMb2Fk
Rm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CiAKICAgICAgICAgLy8gUHJvcGVy
dHkgaXMgaW4gcmVnVDEsIGJhc2UgaXMgaW4gcmVnVDAuIHJlZ1QyIGNvbnRhaW5zIGluZGVjaW5n
IHR5cGUuCiAgICAgICAgIC8vIFRoZSB2YWx1ZSB0byBzdG9yZSBpcyBub3QgeWV0IGxvYWRlZC4g
UHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kCiAgICAgICAgIC8vIHplcm8tZXh0ZW5kZWQuIEJh
c2UgaXMgY2VsbCBjaGVja2VkLiBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4KICAgICAg
ICAgLy8gcmV0dXJucyB0aGUgc2xvdyBjYXNlcy4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5m
bywgSW50MzJTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5m
bywgRG91YmxlU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsK
ICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExp
c3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAg
ICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdT
aGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwo
T3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsK
KyAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlKTsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5
cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlw
ZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEVDTUFNb2RlIGVj
bWFNb2RlKE9wKTsKQEAgLTgzNywxMyArODQyLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKTsK
ICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlmCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlv
bihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQo
Y29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRo
UHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0
YT4KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIEFkZHJlc3MsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbD4KQEAgLTg1Myw2ICs4NjIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4p
OworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1Zh
bHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJl
c3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAgICAgIHN0cnVjdCBpczY0Qml0VHlwZSB7
CkBAIC04NzMsNiArODkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlw
ZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7
CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBl
Pih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90IHVz
ZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJp
dHMuCisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2Vsc2UgLy8gT1Mo
V0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgQXJncy4uLiBhcmdzKQpAQCAt
ODgwLDYgKzkwNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYg
Q1BVKFg4Nl82NCkKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KQEAgLTg5MCw2ICs5MjQsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6
ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFj
cm9Bc3NlbWJsZXI6OkNhbGw+CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShNZXRh
ZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBB
cmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5k
aXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJv
ZmlsZShtZXRhZGF0YSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0
KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzLCBBcmdzLi4uIGFyZ3MpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGJhM2Y5MjI1OTY1MzJjOGEyZTJjNGU3OGRiYzcxYTgz
OGJjNDMwMGYuLmMwODBmOTI4YTBiNjg1YTFkOWI3MmU5NDMwZGRmZDk1ODExZDc5YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMzk5LDkgKzM5OSwxMCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1
c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVnVDApOwpAQCAtNDMyLDggKzQzMywx
NSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICBhdXRvIGRvbmUgPSBqdW1wKCk7CiAKICAg
ICBub3RPYmplY3QubGluayh0aGlzKTsKQEAgLTQ4MSw5ICs0ODksMTAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAg
ICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBs
KCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgp
KSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBHUFJJ
bmZvOjpub25BcmdHUFIwLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVu
ZChnZW4pOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIEpTVmFs
dWVSZWdzIHsgZG9uZUdQUiB9KTsKQEAgLTUwMCw5ICs1MDksMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICAg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
Ci0gICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICgh
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgSlNWYWx1ZVJlZ3MgeyB2YWx1ZUdQUiB9
KTsKQEAgLTUyOCwxNiArNTM4LDIzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKICAg
ICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikpOwot
ICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIp
KTsKIAogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFt
ZXMtPmRvbmUuaW1wbCgpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dl
dEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwogICAgICAgICAKICAgICAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAg
ICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAK
KyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkg
eworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbCA9IGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZG9uZVZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRv
bmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
anVtcCgpKTsKQEAgLTU1Niw4ICs1NzMsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAog
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhH
UFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggODAwNTZhZDVmYjdkYjUw
YTllZmEzYTI2M2JjMGI5YTVhNWIyOTdkNy4uYzczMWUwMTlhMjIwMjUxZDg0YzM4NTE3ZGYzZGI0
NTUzNWJlYjQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cApAQCAtNDA1LDcgKzQwNSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkp
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spLCBuZXh0UmVncyk7CkBAIC01MTMsNyArNTE0LDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAgICAgICAgICAgICBkb25lUmVncywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShtZXRhZGF0YSwgZG9uZVJlZ3MpOwpAQCAtNTQxLDcgKzU0Myw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAg
ICAgICAgICAgcmVzdWx0UmVncywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMo
KSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSwgcmVzdWx0UmVncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmlu
ZGV4IDZmYTcyNDRlZjBhMDhjOWYwNDdhMzIyMDRmNzM3ZDI5Mjg3MTkwNmYuLjNlZDk2MDIxZTcz
OGMyNmUzMmRlYzM0ZjMyZWU3NGExNThhODNjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiBjbGFz
cyBWTTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBI
b3N0Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVKSVQsCi0g
ICAgREZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0Q2FsbFRo
dW5rID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJhc2VsaW5l
SklUID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIxMDEsCiB9
Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7CitzdGF0aWNf
YXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWlu
Z190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9mSklUVHlw
ZSk7CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29k
ZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBmNTJjM2M3NjIxNWFhMzI2ZGRlOWY4OTg1NjI5
OGMzZGU2NDYyMmNlLi4yMGVhMDU3YjIyOTIwMjdiYzQzMTIyM2IxZWVlZTRmMjg4MGY1NjM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
OjpmaW5hbGl6ZSgKIAogSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQorICAg
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQogICAgIDogSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNl
ZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKQEAg
LTc0LDYgKzc0LDcgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKICAgICBt
X3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
dmFsdWVHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy50aGlz
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1
YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFn
R1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHZhbHVl
LnRhZ0dQUigpOwpAQCAtODMsMjcgKzg0LDM2IEBAIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRH
ZW5lcmF0b3IoCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYg
ZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0Lmlz
U2V0KCkpOwotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwg
eyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1Bh
dGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0Lmlz
U2V0KCkpOworICAgICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgfQogfQogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaXplKQogewogICAg
IG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNz
ZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQuanVt
cCgpOwotICAgIHNpemVfdCBqdW1wU2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2Rl
U2l6ZSgpIC0gc3RhcnRTaXplOwotICAgIHNpemVfdCBub3BzVG9FbWl0SW5CeXRlcyA9IGlubGlu
ZUlDU2l6ZSAtIGp1bXBTaXplOwotICAgIGppdC5lbWl0Tm9wcyhub3BzVG9FbWl0SW5CeXRlcyk7
Ci0gICAgQVNTRVJUKGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpIC0gc3RhcnRT
aXplID09IGlubGluZUlDU2l6ZSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsK
KyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNv
ZGVTaXplKCk7CisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKKyAgICAgICAg
c2l6ZV90IGp1bXBTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgLSBz
dGFydFNpemU7CisgICAgICAgIHNpemVfdCBub3BzVG9FbWl0SW5CeXRlcyA9IGlubGluZUlDU2l6
ZSAtIGp1bXBTaXplOworICAgICAgICBqaXQuZW1pdE5vcHMobm9wc1RvRW1pdEluQnl0ZXMpOwor
ICAgICAgICBBU1NFUlQoaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgLSBzdGFy
dFNpemUgPT0gaW5saW5lSUNTaXplKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7
CiB9CiAKIEpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJh
c2UsIHZhbHVlKQorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBz
dHViSW5mb0dQUikKICAgICAsIG1faXNMZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lLnVpZCgpID09
IGNvZGVCbG9jay0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHZhbHVlLnRhZ0dQUigpKTsKQEAgLTEx
Niw4ICsxMjYsOCBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIAogSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKQotICAgIDogSklU
QnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENhY2hl
YWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVy
YXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2FkR1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BS
KCkpOwogCkBAIC0xMzQsOSArMTQ0LDkgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogSklUUHV0QnlJZEdl
bmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoLCAKICAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAg
ICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgOiBK
SVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICAg
ICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7
CkBAIC0xNzEsNyArMTgxLDcgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorSklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwg
R1BSUmVnIHNjcmF0Y2gpCiAgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAg
bV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CkBAIC0xNzksNiArMTg5
LDcgQEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0g
YmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHBy
b3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5w
YXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BS
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVz
dWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIo
KTsKQEAgLTE5MSwxOSArMjAyLDI3IEBAIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZh
bEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQp
CiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0
LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAg
bV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZp
bmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
K3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRo
LCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9q
dW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xv
d1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQp
KTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29k
ZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICBC
YXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKLUpJVERlbEJ5SWRHZW5l
cmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKK0pJVERlbEJ5SWRHZW5lcmF0
b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQog
ICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKQEAgLTIxMSw2ICsyMzAsNyBAQCBKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcgogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBt
X3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJ
bmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTIyMywyMiArMjQzLDMwIEBAIEpJ
VERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yCiB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVs
KCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChP
cHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7Cisg
ICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQu
cGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAot
dm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZp
bmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAg
ICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFs
aXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkgeworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7
CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAu
bV9qdW1wLmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
KyAgICB9CiB9CiAKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRv
cihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwgdXNlZFJl
Z2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIC8vIEZJWE1FOiBXZSBh
cmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4KICAgICBV
TlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI1Miw3ICsyODAsNyBAQCB2b2lkIEpJVElu
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBK
SVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAogICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAorICAgIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJl
ZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQ
UlJlZyBzY3JhdGNoMiwgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0KQogICAgIDogSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IoCiAgICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKQEAgLTI2MCw2
ICsyODgsNyBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KAogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1
ZUdQUiA9IHJlc3VsdDsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3Rv
dHlwZTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQ
UlJlZzsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0y
NzksMjAgKzMwOCwyNyBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yKAogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJ
bmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9qdW1wID0g
aml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9
CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFz
dFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLAotICAgICAgICBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKLSAgICAKLSAg
ICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQYXRoLmxvY2F0aW9uT2Y8Tm9QdHJU
YWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7
CisgICAgICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xv
d1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8t
PnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2Nh
dGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKKyAgICAgICAgZmFzdFBhdGgu
bGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5vUHRyVGFnPihtX3Nsb3dQ
YXRoQmVnaW4pKTsKKyAgICB9CiB9CiAKLUpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZh
bEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCitKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklU
R2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIp
CiAgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNz
VHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQo
cmVzdWx0KQpAQCAtMzAyLDYgKzMzOCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAg
bV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8t
PnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5m
by0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
VGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAtMzEyLDE5ICszNDksMjcgQEAgSklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0g
ICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChPcHRpb25z
Ojp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAg
IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgs
IExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxp
emUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFT
U0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0
UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KG1fc3RhcnQpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBC
YXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1Yklu
Zm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9
IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6
ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgfQogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQorSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJ
bmZvR1BSKQogICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBl
OjpTZXRQcml2YXRlQnJhbmQpOwpAQCAtMzMzLDYgKzM3OCw3IEBAIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYuYnJh
bmRUYWdHUFIgPSBicmFuZC50YWdHUFIoKTsKQEAgLTM0MywxNiArMzg5LDI0IEBAIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsCiB2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQu
bGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAg
aWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
KTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1f
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9
IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwog
fQogCi12b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAg
TGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBM
aW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAg
ICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5s
b2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNs
b3dQYXRoLCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZv
LT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1f
c3RhcnQuaXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0
aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwor
ICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggZDZjYTZlMTZhM2YzMmM2
NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MS4uZjE2ODczYjYwMTMyZTk3YTBkNGY2YWYxYTFjNmFk
OWNlMjE4NjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBKSVRCeUlkR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIAogICAgIEpJVEJ5SWRHZW5l
cmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiBwdWJsaWM6CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKQEAgLTEwNyw3ICsx
MDcsNyBAQCBjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSk7CiAgICAgCiAgICAg
dm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAKQEAgLTEyMSw3ICsxMjEs
NyBAQCBjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdl
bmVyYXRvciB7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCiAgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOworICAgICAgICBK
U1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3Ms
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIH07CkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVD
TUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAKICAgICB2
b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBK
SVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIAog
ICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFi
bGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKTsKIAogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjAxLDcg
KzIwMSw3IEBAIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJh
dG9yIHsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIH07CkBAIC0yMTIsNyArMjEyLDcgQEAgY2xhc3MgSklUSW5zdGFuY2VPZkdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiAgICAgSklU
SW5zdGFuY2VPZkdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1
bHQsCi0gICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHNjcmF0
Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCisgICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3Rv
dHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNo
MiwKICAgICAgICAgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2UpOwogICAgIAog
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwpAQCAtMjMwLDcgKzIz
MCw3IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25z
dAogICAgIHsKQEAgLTI1OCw3ICsyNTgsNyBAQCBjbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogCiAgICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZv
R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCBlNzljZDM2ZWY1
N2Q3YmRjZWNlMTc2OGQwNTg4YWZlZWQ4ODg1MDE1Li4xNzdkYjYwN2IyNjE0NDMwMDEwZTczMjg2
MTM4ZjE0M2Y3YmY5MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApA
QCAtMzMsMTcgKzMzLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAg
ICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudElu
c3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVu
dEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklURG91YmxlOgot
ICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBl
KTsKKyAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFk
VHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHJldHVy
biBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAg
ICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUs
IGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiBl
bWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAg
ICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBl
LCBieVZhbEluZm8pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEy
OCw2ICsxMjgsMTQgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3QKICAgICByZXR1cm4gY2FsbDsK
IH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRhdGVUb3BDYWxs
RnJhbWUoKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5j
dGlvbik7CisgICAgZXhjZXB0aW9uQ2hlY2soKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwogI2lm
IE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJu
VHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogewpAQCAt
MTU3LDYgKzE2NSwxNyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxs
OwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyBmdW5jdGlvbiwgVmly
dHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UK
KyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNl
bmRpZgorICAgIHJldHVybiBjYWxsOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4K
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0
YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgVmlydHVhbFJl
Z2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxOTAsMjAgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CitB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEs
IEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24p
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1
cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEs
IEpTVmFsdWVSZWdzKHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsKKyAgICBlbWl0
U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorICAg
IHJldHVybiBjYWxsOworfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFs
UmVnaXN0ZXIgcmVnKQogewogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBhMzdjYWUzMDNm
OGUyZThiYzNkMDUzOTQ2Mjk0NGRkMTE0ZWRlZjdjLi5iM2U3Nzg4ODJmMzNkZGIzMzUzMzhkNmUw
YmI1MmUzMDQxY2ExZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKQEAgLTE2OSw2ICsxNjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1
bHQKICAgICAgICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAg
ICAgICBHUFJJbmZvOjpub25BcmdHUFIwLAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3Jh
dGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIG1faW5zdGFuY2VPZnMu
YXBwZW5kKGdlbik7CkBAIC0xODYsNyArMTg3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
bnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3Rh
bmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6
ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb248ZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyLCByZWdU
MSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCkBAIC0xNjQwLDcg
KzE2NDgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgIAogICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRz
LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0Lgot
ICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBl
bWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlw
ZSwgbnVsbHB0cik7CiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xNjU1
LDggKzE2NjMsMTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2RlQmxv
Y2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIkJhc2VsaW5l
IGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgp
KTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRU
eXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMp
KTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
YnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVz
c1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVy
bkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNf
ZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0xNjkwLDExICsxNzAzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19l
bnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRB
cnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFy
cmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0
IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9k
ZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dDYXNl
KGJhZFR5cGUpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRT
bG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAg
IExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtMTcyMCw3ICsxNzM0LDE0IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdU
MCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVs
dCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1Qw
LCByZWdUMSwgYnlWYWxJbmZvKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoT3B0aW9uczo6
dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQ7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihieVZhbEluZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbCA9IGNh
bGxPcGVyYXRpb248ZGVjbHR5cGUob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+
KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCByZWdUMCwgcmVnVDEsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAg
ICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0
LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAs
IHJlZ1QxLCBieVZhbEluZm8pOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFs
SW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0g
Y2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApp
bmRleCA0ZGUzODg0ZWFmZThhY2VhZTZjZDZlNzU0Yjg2MTg5OWY3ZDUzYmZkLi5hN2E2OGJkY2Fh
N2EyMTYwMmUzMGU4MjMxODZjN2I5NTkxNzY4N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNjcsNiArMTY3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAg
ICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgcmVnVDcsCiAgICAgICAgIHJlZ1QzLCByZWdU
NCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgbV9p
bnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKQEAgLTExOTksNyArMTIwMCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0CiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHVi
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgp
LCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29k
ZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8
UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQ
dHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMjY3LDYgKzEyNjgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudAogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5z
dHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2Fs
bDsKKyAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eURlZmF1bHQ7CiAgICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggY2VkMTg0MjU1
ZWNiYWU2MDA3MWIxZjI0OThkNDQwZTA0M2YwZmJlOS4uYTliYTU4MDJmMjg2Y2U5MTExYjI5OGI0
OTczODYwMjNkNjBlZmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC05NjQsNyArOTY0LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAg
ICAgaWYgKHJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAv
LyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJu
QWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMp
OworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFs
SW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwog
ICAgIH0KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9
CkBAIC0xMDU2LDcgKzEwNTksMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAo
cmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0
IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7
CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJ
bmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWM7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1
cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
R2VuZXJpYyk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkaXJlY3RQ
dXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZv
LCBlY21hTW9kZSkpOwpAQCAtMTI0MCw3ICsxMjQ2LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6Okdp
dmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAg
YnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRp
b25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
UHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRj
aENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOwogICAgIH0KIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKQEAgLTI1NDEsNyArMjU1MCwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgRW5jb2RlZEpTVmFsdWUsIChKUwog
ICAgICAgICBpZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTAKICAgICAgICAgICAg
IHx8IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAg
IC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgotICAgICAgICAgICAgY3RpUGF0Y2hDYWxs
QnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CisgICAgICAgICAgICBpZiAoT3B0aW9u
czo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
R2VuZXJpYyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjg1ZjQ0YjM5ZmZiOWVmNmRjMzE5MTRk
ZDNkNzgxNzRmYjM1NWJkNy4uMzI1NmUxZTYxNTExN2Q0ZGFkNGUwMzA1MGIzYjEwNDMwMzk2NjNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNs
dWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFt
Lmg+CisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogI2lmIFVT
RShKU1ZBTFVFNjQpCkBAIC03MCwxMSArNzEsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZXN1bHRSZWdzLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgaWYgKGlz
T3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygp
LT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAg
IGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNsb3dDYXNl
KCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdz
KTsKQEAgLTkzLDE0ICs5NywxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogCiAgICAgICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgICAgICsrbV9nZXRCeVZh
bEluZGV4OworICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNb
bV9nZXRCeVZhbEluZGV4KytdOworCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgcHJvZmlsZSwgcmVnVDAsIHJlZ1QxKTsKICNlbHNlCiAgICAgICAgIFZN
JiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOwogICAgICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgQVNTRVJUKEJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTExOCw3
ICsxMjMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHByb2ZpbGUpLCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0
dXJuVmFsdWVHUFIpOwpAQCAtMTgzLDkgKzE5MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3Bl
cnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5
R1BSKSwgcmVzdWx0UmVncywgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBt
X2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTIwMSw4ICsyMTMs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5
VmFsSW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CiAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBA
IC0yMTEsNiArMjIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogI2Vsc2UKICAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0yMjYsNyArMjM4
LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdl
bi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYg
KE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0y
ODYsOSArMzAyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6
OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VT
aGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
LmFwcGVuZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0
aGUgZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJz
LgpAQCAtMzAyLDggKzMyMSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4
XTsKLSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJy
YW5kQWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAK
ICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zMTIsNiArMzMwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnkKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blNldFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7CiAjZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0zMjgs
OSArMzQ3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSk7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZgorCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMzQ3LDkgKzM3MSwxMiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5k
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNl
KCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIApAQCAtMzU3
LDggKzM4NCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0g
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAgICAr
K21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNz
SW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zNjcsNiArMzkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnQKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNoZWNrUHJp
dmF0ZUJyYW5kT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGJyYW5kR1BSKTsKICNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMzgzLDcgKzQx
MCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
T3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAg
Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXpl
KTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAg
ICAgIGNhbGwgPSBhcHBlbmRDYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAKQEAgLTQxNSw4ICs0NDYsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleDsK
ICAgICBpZiAoIXByb3BlcnR5TmFtZUlzSW50ZWdlckNvbnN0YW50KSB7Ci0gICAgICAgIG5vdElu
ZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7Ci0gICAgICAgIGFkZFNsb3dD
YXNlKG5vdEluZGV4KTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gaXNJbnQzMiA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgICAgICAg
ICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJn
ZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0ludDMyLmxpbmsodGhp
cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFi
bGVKdW1wSWZOb3RJbnQocmVnVDEpOworICAgICAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgp
OworICAgICAgICB9CiAgICAgICAgIC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAg
ICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChyZWdUMSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwy
MyArNDY5LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFy
cmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMy
OgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsK
KyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
LCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0g
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5
U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Ci0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJ
QygpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93
Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtNDU3LDcgKzQ5NSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQorSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4
aW5nU2hhcGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsK
QEAgLTQ2NSw3ICs1MDMsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKICAgICAKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgIGlmIChPcHRp
b25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAg
ICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZElt
bTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNz
KCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwg
VHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4
aW5nU2hhcGUpKTsKKwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgb3V0T2ZCb3VuZHMgPSBicmFu
Y2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKTsKQEAgLTUxNSw3ICs1NjIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjpl
bWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTIzLDcgKzU3MCwx
NiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNl
czsKICAgICAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qy
LCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNl
U2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRv
IGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJh
eVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVz
dGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5
U3RvcmFnZVNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0Ojpi
dXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9y
TGVuZ3RoT2Zmc2V0KCkpKSk7CiAKQEAgLTU2OSw3ICs2MjUsNyBAQCBKSVRQdXRCeUlkR2VuZXJh
dG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1
dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5
TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIGVj
bWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFy
cmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxX
cml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4K
QEAgLTU3OCw5ICs2MzQsMTYgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZh
bFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIGRvbmVDYXNl
cy5hcHBlbmQoanVtcCgpKTsKIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
ICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOwotCi0gICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3Bl
cnR5TmFtZS5yYXdCaXRzKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7CisKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
ICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigp
KT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJh
d0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5z
bG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMo
KSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAg
ICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYxOSw2ICs2ODIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8UwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3Qg
PyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRp
bWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwg
cmVnVDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgpKSk7
CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBv
cGVyYXRpb25QdXRCeVZhbE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC02MzgsOCArNzAyLDExIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoZWNtYU1vZGUudmFs
dWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIGF1dG8qIG9wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7Ci0gICAg
Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoQWRk
cmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpKTsK
KyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKGlzRGlyZWN0ID8gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKQEAgLTY5Niw4ICs3NjMsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1
bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBh
dGhKbXApOworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXA7CisgICAgaWYgKE9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIGVs
c2UgeworICAgICAgICBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICAgICAgYWRk
U2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIH0KICAgICAKICAgICBMYWJlbCBkb25lID0gbGFi
ZWwoKTsKICAgICAKQEAgLTcyNCw2ICs3OTYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQog
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtpbmQu
dmFsdWUoKSkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGJ5VmFsSW5m
by0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKIApAQCAtNzQzLDcgKzgxNiwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBD
YWxsIGNhbGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwg
PSBhcHBlbmRDYWxsKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC04NDgsOSArOTI1
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dD
YXNlKCk7CiAgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVn
VDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC04ODEsNiArOTYxLDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2wKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICNlbHNlCiAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC04OTgsMTUgKzk3OSwx
OCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSkpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRp
Y19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtOTU3LDkgKzEwNDEsMTIgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOwogICAgIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9k
ZWxCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVn
cyhyZWdUMCkpOwpAQCAtOTkxLDYgKzEwNzgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8Uwog
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDAsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CiAKQEAgLTEwMDgsMTUgKzEwOTYsMTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQ
Uik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwor
ICAgIENhbGwgY2FsbDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
Y2FsbCA9IGFwcGVuZENhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSkpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1Qw
KTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1Qw
LCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBK
U1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTEwNjks
OSArMTE2MCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdl
bigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAg
bV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0xMDk0LDYg
KzExODgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdU
MCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9
IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTExMCw3ICsxMjA1LDExIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlH
ZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSkpOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTM0LDkgKzEyMzMsMTIgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVz
dWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBHUFJJbmZvOjpub25B
cmdHUFIwLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBp
ZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0
QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0xMTYwLDYgKzEyNjIsNyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25X
aXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplLCByZXN1
bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTE3
Niw3ICsxMjc5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwg
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBw
ZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOworICAgIENhbGwgY2FsbDsK
KyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSkpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIp
OwpAQCAtMTIwOCw5ICsxMzE1LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBH
UFJJbmZvOjpub25BcmdHUFIwLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0xMjM0LDkgKzEz
NDQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVz
dWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
IG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTEy
NjAsNiArMTM3Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygp
KTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0x
Mjc1LDcgKzEzODksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwg
Y2FsbDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFw
cGVuZENhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSkpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIp
OwpAQCAtMTMzNyw2ICsxNDU1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93
aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEsIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTM1NCw3ICsxNDczLDExIEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIp
OwpAQCAtMTQyMCwxMSArMTU0MywxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9k
ZShieXRlY29kZSksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAg
ICAgICBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAg
IAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFk
ZFNsb3dDYXNlKCk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICAvLyBJ
QyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNl
IGlzIGNlbGwuCkBAIC0xNDQ4LDYgKzE1NzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDEsIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTQ2NSw3ICsxNTkxLDEx
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVu
ZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5j
dGlvbigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCkBAIC0xNTIyLDkgKzE2NTIsMTIgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
ICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2luQnlJ
ZHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcp
OwpAQCAtMTU0Niw2ICsxNjc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCByZXN1bHRWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5
dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xNTY0LDcgKzE2OTgsMTEg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uSW5C
eUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSkpOworICAgIGVsc2UKKyAg
ICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJl
c3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTIyOTEsMTcgKzI0MjksMjQgQEAgSklUUHV0
QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwg
UHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMSwgZWNtYU1vZGUo
Ynl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0
aGlzKTsKIAogICAgIC8vIEpJVFB1dEJ5SWRHZW5lcmF0b3Igb25seSBwcmVzZXJ2ZSB0aGUgdmFs
dWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2UgaGF2ZSB0byByZWxvYWQgdGhlIHRhZy4KICAg
ICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwg
Z2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAg
Y2FsbCA9IGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBHUFJJbmZvOjpub25B
cmdHUFIwLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9
IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMu
YXBwZW5kKGp1bXAoKSk7CiAKQEAgLTIzNTMsMjkgKzI0OTgsMjkgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiBi
eVZhbEluZm8KIAogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoK
LSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUp
OworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91YmxlOgotICAgICAg
ICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAg
ICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51
bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOwor
ICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBudWxscHRyKTsKICAgICAgICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dD
YXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAg
ICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgbnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUg
PSB0eXBlZEFycmF5VHlwZUZvckpJVEFycmF5TW9kZShhcnJheU1vZGUpOwogICAgICAgICBpZiAo
aXNJbnQodHlwZSkpCi0gICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIsIHR5
cGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSBCaWdJ
bnQ2NEFycmF5IC8gQmlnVWludDY0QXJyYXkgaW4gSUMKICAgICAgICAgICAgIC8vIEN1cnJlbnRs
eSwgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5IG5ldmVyIGNvbWVzIGhlcmUuCiAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTgz
CiAgICAgICAgICAgICBBU1NFUlQoaXNGbG9hdCh0eXBlKSk7Ci0gICAgICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIHR5cGUp
OworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0yNDAyLDggKzI1NDcsMTQgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8K
ICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJU
YWcsCiAgICAgICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbF9kaXJlY3Qgc3R1YiBmb3IgJXMs
IHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJu
QWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIH0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5B
ZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4o
cmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KSk7CisKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAg
IGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBUaGlzIGZ1
bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVuaXQgKEpJ
VE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0ZWQgc3Bl
Y2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCkBAIC0yNDQyLDggKzI1OTMsMTMgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZh
bEluZm8sIFJldHVybkEKICAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0aCBj
YWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBw
cm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2sp
LmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+
c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lR2VuZXJpYykpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7Cisg
ICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2Rl
KCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNh
bGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJl
c3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgpAQCAtMjQ4MCwxNSArMjYzNiwyMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
cwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5h
bWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gUHV0S2lu
ZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5k
YXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRh
Z2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsK
IAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENh
bGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgaWYg
KE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4
SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZh
bEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5t
X3Nsb3dPcGVyYXRpb24gPSBwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVs
c2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJ
bmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMp
KTsKKyAgICB9CiB9CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90
aGVyIHRyYW5zbGF0aW9uIHVuaXQgKEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qg
b2ZmIHRoZSB0d28gZXhwZWN0ZWQgc3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCiB0ZW1wbGF0
ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFs
PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlm
aWVyKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hl
ZElkPE9wUHV0QnlWYWxEaXJlY3Q+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtp
bmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJs
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI1MDQsNyArMjY2NSwxNiBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMy
KERvdWJsZVNoYXBlKSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJh
bmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICAg
ICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBU
YXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBl
LmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBl
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworCiAgICAgbG9hZFB0
cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRk
cmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAg
bG9hZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCBmcFJl
Z1QwKTsKQEAgLTI1MTMsNyArMjY4Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91Ymxl
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0
dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlw
ZSBleHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjUzMSw3ICsyNzAxLDE2IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1t
MzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7Cisg
ICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9
IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsK
KyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJl
Y3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVj
dGVkU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBz
Y3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJv
cGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSkpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWln
aHQpLCByZXN1bHQpOwpAQCAtMjU0MCw3ICsyNzE5LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFy
cmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
KQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI1NTks
NyArMjczOCwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dD
YXNlczsKIAogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigtQXJyYXlTdG9yYWdlU2hhcGUpLCBpbmRl
eGluZywgc2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBz
Y3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUpKTsKKworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAg
IGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5j
aDMyKEJlbG93T3JFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwg
c2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEFycmF5
U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0yNTcxLDcgKzI3NTksNyBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBQYXRjaGFibGVKdW1wJiBiYWRUeQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6
SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTI1
OTYsNyArMjc4NCwxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJy
YXlUeXBlKHR5cGUpKSk7CisKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAg
ICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBi
cmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJy
YXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlW
YWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
ICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNo
LCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3Jh
dGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBs
b2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9w
ZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVj
aWFsQ2FzZShwcm9maWxlKTsKQEAgLTI2NDcsNyArMjg0NSw3IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTI2NzIsNyArMjg3MCwx
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAg
ICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2Jh
ZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXND
b3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1t
MzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVk
SW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVz
cyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNo
Mik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNj
cmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9m
aWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCmluZGV4IGMyMmM3NzA0Mjg5YWJiMDgyZjlkZGYyMGQ4YzJmZjY2NWRmZDU2
ZTIuLmZmMWQ2OGZmODBhN2RmZmUzYzJmNjkyZjE2ZjAzYTc5NjQwODczMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApA
QCAtMTM1LDcgKzEzNSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLAogICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAg
ICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIHJlc3Vs
dFJlZ3MpOwpAQCAtMTY4LDkgKzE3MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklURGVsQnlWYWxH
ZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywg
cmVzdWx0UmVncywgcmVnVDQpOwotCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1
c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5VmFscy5hcHBlbmQo
Z2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIHJlc3VsdFJlZ3MpOwpAQCAtMjYyLDcgKzI2
NywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChwcm9w
ZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1
ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkpCisgICAgICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgICAgICBtX2dldEJ5VmFs
cy5hcHBlbmQoZ2VuKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0zMDgsNyArMzE2LDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncyk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAg
ICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTM5Niw3ICs0
MDcsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKICAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVt
aXQgd3JpdGUtYmFycmllciBhdCB0aGUgZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJp
ZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgpAQCAtNDM2LDcgKzQ1MCwxMCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRl
QnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAg
YmFzZVJlZ3MsIGJyYW5kUmVncyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1
c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vz
c2VzLmFwcGVuZChnZW4pOwogfQogCkBAIC02NjMsNyArNjgwLDEwIEBAIHZvaWQgSklUOjplbWl0
X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xv
d0Nhc2UoKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwogICAgIAogICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdz
KTsKQEAgLTcwNCw3ICs3MjQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVj
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC03NTEsNyArNzc0
LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQor
ICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwg
cmVzdWx0UmVncyk7CkBAIC03OTQsNyArODIwLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xv
d0Nhc2UoKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0
UmVncyk7CkBAIC04NDEsNyArODcwLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICByZWdUMSwgYnl0
ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRL
aW5kOjpOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
LSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQo
Z2VuKTsKICAgICAKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdy
aXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCkBAIC04ODUsNyArOTE3LDEwIEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNl
KCk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFN0b3JlKGRzdCwgcmVn
VDEsIHJlZ1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApp
bmRleCA4ODE0NjQwZTZhY2NlYWMxYjliMDY4YTQwYzg5NDI4MzQ4NmNkZmFiLi5kOWFjZjk3NjNh
YWY5OWM2ZGIzMmFjMjUzOWUyNGQzNzMxNGUyMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHViUm91dGluZS5oCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorc3RydWN0IEFjY2Vzc0Nhc2VL
ZXk7CisKIC8vIFRoaXMgaXMgYSBiYXNlLWNsYXNzIGZvciBKSVQgc3R1YiByb3V0aW5lcywgYW5k
IGFsc28gdGhlIGNsYXNzIHlvdSB3YW50CiAvLyB0byBpbnN0YW50aWF0ZSBkaXJlY3RseSBpZiB5
b3UgaGF2ZSBhIHJvdXRpbmUgdGhhdCBkb2VzIG5vdCBuZWVkIGFueQogLy8gaGVscCBmcm9tIHRo
ZSBHQy4gSWYgaW4gZG91YnQsIHVzZSBvbmUgb2YgdGhlIG90aGVyIHN0dWIgcm91dGluZXMuIEJ1
dApAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBKSVRTdHViUm91dGluZSB7CiAgICAgfQogICAgIAog
ICAgIHZpcnR1YWwgfkpJVFN0dWJSb3V0aW5lKCk7Ci0gICAgdmlydHVhbCB2b2lkIGFib3V0VG9E
aWUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJvdXRUb0RpZShWTSYpIHsgfQogICAgIAogICAg
IC8vIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpcyBjb3B5YWJsZSwgYnV0IGF0IHRoZSBjb3N0IG9m
IHJlZmVyZW5jZQogICAgIC8vIGNvdW50aW5nIGNodXJuLiBSZXR1cm5pbmcgYSByZWZlcmVuY2Ug
aXMgYSBnb29kIHdheSBvZiByZWR1Y2luZwpAQCAtOTgsNiArMTAwLDggQEAgY2xhc3MgSklUU3R1
YlJvdXRpbmUgewogICAgIC8vIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFr
KFZNJik7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxBY2Nlc3NDYXNlS2V5Pioga2V5cygp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBvYnNlcnZlWmVyb1JlZkNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2ODYy
NzNkZGE4MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4uNDQ3MDU1YmZlOGFiZWZhYTU2ZmU3OGU4
MDY4ZDJjYzY2ODkzMjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENvZGVP
cmlnaW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBv
d25lciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNv
bnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8
dWludDMyX3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2Rl
UmVmLCB2bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSwgeyB9KQog
ICAgICwgbV92YXJpYW50cyhjYXNlcy5zaXplKCkpCiAgICAgLCBtX2Zhc3RDb3VudHMoV1RGTW92
ZShmYXN0Q291bnRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4
IDcwNDY3YjQyOWYyZWExZTdmYTI0ZWFlNzUxMmJhOWFjY2I3ZjBjODYuLjBjOThmZWIxNjgxZDk3
ZjIxNzM0MjM2YzY4MTNlOGMxNmI0YWM1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcApAQCAtNzEsOCArNzEsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCkKK3N0
YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0
aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsKQogeworICAgIGlmIChPcHRpb25zOjp1c2VT
aGFyZWRJQygpKQorICAgICAgICByZXR1cm4gc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uLnJldGFn
Z2VkPENGdW5jdGlvblB0clRhZz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoY29k
ZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6RlRMSklUKSB7CiAgICAgICAgIEZ1bmN0aW9u
UHRyPEpJVFRodW5rUHRyVGFnPiB0YXJnZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJn
ZXQ8SklUVGh1bmtQdHJUYWc+KGNhbGwpOwpAQCAtMTA1LDYgKzEwNywxNSBAQCB2b2lkIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2Fs
bDxKU0ludGVybmFsUAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBuZXdD
YWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpOwogfQogCitzdGF0aWMg
dm9pZCByZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwsIEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYgKE9w
dGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9zbG93T3BlcmF0aW9u
ID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7
CiAgICAgR2l2ZVVwT25DYWNoZSwKICAgICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMTQsMTIgKzIy
NSwxMyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5
KGJhc2VDZWxsKSkgewogICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9
PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmICFPcHRpb25zOjp1c2VT
aGFyZWRJQygpCiAgICAgICAgICAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNl
Q2VsbAogICAgICAgICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlQXJy
YXlMZW5ndGgoc3R1YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKSkgewogCiAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6
Z2VuZXJhdGVBcnJheUxlbmd0aChzdHViSW5mbywganNDYXN0PEpTQXJyYXkqPihiYXNlQ2VsbCkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVu
Y3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
c3R1YkluZm8uaW5pdEFycmF5TGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMjcs
MTAgKzIzOSwxMiBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFy
cmF5TGVuZ3RoLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3Ry
aW5nKGJhc2VDZWxsKSkgewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUo
KSA9PSBDYWNoZVR5cGU6OlVuc2V0ICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdM
ZW5ndGgoc3R1YkluZm8pKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlw
ZSgpID09IENhY2hlVHlwZTo6VW5zZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgIU9wdGlvbnM6
OnVzZVNoYXJlZElDKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0Nh
Y2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9v
bCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0
aChzdHViSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5l
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mby5pbml0U3RyaW5nTGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0yNzcsNiArMjkxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
R2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAg
ICAgICAvLyBPcHRpbWl6ZSBzZWxmIGFjY2Vzcy4KICAgICAgICAgICAgIGlmIChzdHViSW5mby5j
YWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgJiYgIU9wdGlv
bnM6OnVzZVNoYXJlZElDKCkKICAgICAgICAgICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKQogICAgICAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKICAg
ICAgICAgICAgICAgICAmJiAhc2xvdC53YXRjaHBvaW50U2V0KCkKQEAgLTI4Nyw3ICszMDIsNyBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENv
ZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVNl
bGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
cHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkpOwogICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxh
Y2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24o
a2luZCkpOwogICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0R2V0QnlJZFNlbGYobG9j
a2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAg
ICAgICAgICAgICB9CkBAIC00MjUsNyArNDQwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgog
ICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZh
bHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5
TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtNDM5LDcgKzQ1NCw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhCiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAg
IGlmICh0cnlDYWNoZUdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICBy
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKIH0KIAogCkBAIC01MjksNyAr
NTQ0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKICAgICAgICAgICAgIExPR19JQygoSUNF
dmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0p
LCBJZGVudGlmaWVyKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihy
ZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXBJbkFjY2VzcyhzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTQwLDcgKzU1NSw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVl
IGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAg
ICBpZiAodHJ5Q2FjaGVBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
LCBpbmRleCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBv
cGVyYXRpb25HZXRCeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlW
YWxHZW5lcmljKTsKIH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1
bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2luZCBwdXRLaW5kKSAtPiBk
ZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkKQEAgLTY1MSw2ICs2NjYsNyBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIG9sZFN0cnVjdHVyZS0+
ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBD
YWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmICFPcHRpb25zOjp1c2VTaGFy
ZWRJQygpCiAgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vzczo6Y2FuR2VuZXJhdGVT
ZWxmUHJvcGVydHlSZXBsYWNlKHN0dWJJbmZvLCBzbG90LmNhY2hlZE9mZnNldCgpKQogICAgICAg
ICAgICAgICAgICAgICAmJiAhb2xkU3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KCkKICAgICAgICAgICAgICAgICAgICAgJiYgIWlzUHJveHkpIHsKQEAgLTY1OCw3ICs2NzQs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICBib29sIGdl
bmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5UmVw
bGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFNlbGZQYXRjaCwgb2xkU3RydWN0dXJl
LT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRG
dW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShsb2NrZXIs
IGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtODAxLDcgKzgxNyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5j
b2RlKCkpOwogCi0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1
YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29k
ZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vz
cyhzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODE1LDcgKzgzMSw3IEBAIHZvaWQg
cmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1
YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHBy
b3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICBy
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsK
IH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5
U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQpAQCAtODc0LDcgKzg5MCw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNv
ZGUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAg
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlk
KCkpKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhz
dHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5j
b2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODkxLDkgKzkwNyw5IEBAIHZvaWQgcmVw
YXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0
dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZv
T3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3Bl
cnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwp
Ci0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAg
ICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7Cisg
ICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKICAgICB9CiB9
CiAKQEAgLTkyOSw2ICs5NDUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJ
bkJ5SUQoCiAKICAgICAgICAgICAgIC8vIE9wdGltaXplIHNlbGYgYWNjZXNzLgogICAgICAgICAg
ICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5zZXQKKyAgICAgICAg
ICAgICAgICAmJiAhT3B0aW9uczo6dXNlU2hhcmVkSUMoKQogICAgICAgICAgICAgICAgICYmIHNs
b3QuaXNDYWNoZWFibGVWYWx1ZSgpCiAgICAgICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2UKICAgICAgICAgICAgICAgICAmJiAhc2xvdC53YXRjaHBvaW50U2V0KCkKQEAgLTkz
Nyw3ICs5NTQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAg
ICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwg
c2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRJbkJ5
SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCks
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0
ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTkzLDcgKzEwMTAsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5z
bG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2VzcyhzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTAwNyw3ICsx
MDI0LDcgQEAgdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCoKICAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQsIHNs
b3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CiB9CiAKIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTA0MCw3
ICsxMDU3LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRl
QnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kUmVw
bGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVy
dHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTA1NCw3ICsxMDcxLDcgQEAgdm9pZCByZXBhdGNoQ2hlY2tQ
cml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAK
ICAgICBpZiAodHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZU9iamVjdCwgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAg
ICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKApAQCAtMTA5OSw3ICsx
MTE2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5k
KAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRSZXBsYWNlV2l0
aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgp
KTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
KyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEzLDcgKzExMzAsNyBAQCB2b2lkIHJlcGF0
Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwogCiAgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBicmFuZElELCBzdHViSW5mbykgPT0g
R2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFu
ZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJp
Yyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBA
IC0xMTY4LDkgKzExODUsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5z
dGFuY2VPZigKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcCgKLSAg
ICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCi0gICAgICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
KyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgICAgICAg
ICAgc3R1YkluZm8ubV9jb2RlUHRyID0gcmVzdWx0LmNvZGUoKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKAorICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCisgICAgICAgICAgICAgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMTg1LDcgKzEy
MDYsNyBAQCB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKAogewogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAodHJ5Q2FjaGVJbnN0YW5jZU9mKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZhbHVlLCBwcm90b3R5cGVWYWx1ZSwgc3R1Yklu
Zm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5zdGFuY2VPZkdlbmVyaWMpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFuY2VP
ZkdlbmVyaWMpOwogfQogCiBzdGF0aWMgdm9pZCBsaW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+IGNvZGVSZWYpCkBAIC0xMjAyLDcgKzEyMjMsNyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xv
d0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVh
bFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIGxpbmtTbG93UGF0aFRvKHZtLCBjYWxs
TGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdD
QXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxs
TGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVh
bFRodW5rLCB2bSwgeyB9KSk7CiB9CiAKIHN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIo
SlNDZWxsKiBjYWxsZWUpCkBAIC0xMzIwLDcgKzEzNDEsNyBAQCBzdGF0aWMgdm9pZCBsaW5rVmly
dHVhbEZvcihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgcmV2
ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5m
by5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmss
IHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGlu
ZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkpOwogICAgIGNhbGxMaW5rSW5mby5zZXRD
bGVhcmVkQnlWaXJ0dWFsKCk7CiB9CiAKQEAgLTE2MjMsMTQgKzE2NDQsMTQgQEAgdm9pZCBsaW5r
UG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBDYWwKIAogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEdldEJ5S2luZCBraW5kKQogewotICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKLSAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rp
b24oa2luZCkpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCiB2b2lkIHJlc2V0
UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewogICAgIHVzaW5nIEZ1bmN0aW9uVHlwZSA9IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0T3B0aW1pemUpOwotICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0
aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbikuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CisgICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSByZWludGVycHJl
dF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CiAgICAgRnVuY3Rpb25UeXBlIG9wdGltaXplZEZ1bmN0aW9uOwogICAgIGlmICh1bm9wdGltaXpl
ZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGltaXplZEZ1
bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpAQCAtMTY0NywyOCArMTY2
OCwzMiBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAKLSAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3B0aW1pemVkRnVuY3Rpb24pOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3B0
aW1pemVkRnVuY3Rpb24pOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCiB2b2lk
IHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3Jt
YWwpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAg
ICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbHNlCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsK
KyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzZXRQYXRj
aGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7Cisg
ICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlv
bjsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1
YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwor
ICAgIH0KIH0KIAogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRP
cHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Mo
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKIHZvaWQgcmVz
ZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKQEAgLTE2NzgsMTQgKzE3
MDMsMTQgQEAgdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogCiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hl
Y2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKIH0KIAogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwor
ICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Moc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgSlNPYmplY3QqIGNhbGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAKaW5kZXggYTdiMmRiMzhiZmM2MjA3ZTUwZTQyNmJhNjJhYTljMjA1ZWMyZWYzOC4uNDM0
OTJmOWNlNzA1NzU0YmFlNGMzM2JiOWQyZTdjZDk0MDNmYTEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTYwNyw5ICs2MDcsOSBAQCB2b2lkIE9wdGlv
bnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6YWRk
cmVzc09mT3B0aW9uKGZvcmNlT1NSRXhpdFRvTExJbnRJRCkgPT0gICZPcHRpb25zOjpmb3JjZU9T
UkV4aXRUb0xMSW50KCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6YWRk
cmVzc09mT3B0aW9uRGVmYXVsdChmb3JjZU9TUkV4aXRUb0xMSW50SUQpID09ICAmT3B0aW9uczo6
Zm9yY2VPU1JFeGl0VG9MTEludERlZmF1bHQoKSk7CiAKLSNpZm5kZWYgTkRFQlVHCisvLyNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgICAgICBDb25maWc6OmVuYWJsZVJlc3RyaWN0ZWRPcHRpb25zKCk7
Ci0jZW5kaWYKKy8vI2VuZGlmCiAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGVhY2ggb2YgdGhl
IG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlczoKICNkZWZpbmUgSU5JVF9PUFRJT04o
dHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNjcmlwdGlvbl8p
IHsgXAogICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBkZWZhdWx0VmFsdWVfOyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA3ZTc4YWJhNWVk
NzFhNGY1NjNmZjVhZmJmZGUzYWQ2NTUwZWFjMmIzLi41YzRjMWQxZjg2NmEwZGQyMTg2YWU3NGQ0
M2U2NGE2Y2RjZGM1MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKQEAgLTUzNCw2ICs1MzQsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVz
ZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9y
bWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VUb3BMZXZlbEF3YWl0LCB0cnVlLCBOb3Jt
YWwsICJhbGxvdyB0aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxl
LiIpIFwKICAgICB2KEJvb2wsIHZlcmJvc2VFeGVjdXRhYmxlUG9vbEFsbG9jYXRpb24sIGZhbHNl
LCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYXJlZElDLCB0cnVlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBlNzRkYTIyOWMwZTcxOTY3MzZiYzU0NDcyN2IyYmNh
MzJmMmI3NmJiLi43ZGNlNGZjODU2MGU2M2Q2YTYwNzMxMTA0MDhkZmFiMDYwOGQxM2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIK
ICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNs
dWRlICJCaWdJbnRPYmplY3QuaCIKQEAgLTU3MSw2ICs1NzIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3Vj
Y2VzcykKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgaml0U3R1YnMtPnBy
ZWluaXRpYWxpemVFeHRyYUNUSVRodW5rcygqdGhpcyk7CiAjZW5kaWYKKyAgICAgICAgbV9zaGFy
ZWRKSVRTdHVicyA9IG1ha2VVbmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIApAQCAtMTcxNiw0ICsxNzE4LDYgQEAgdm9pZCBWTTo6cmVtb3Zl
TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikK
ICAgICAgICAgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5yZW1vdmUoaXRlcik7CiB9CiAKK3Vp
bnQ2NF90IGdfbnVtYmVyT2ZPU1JFeGl0czsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA3ODIzNTZiZTgxZDdhN2Q2NmM2OTkwNDhlMTBjNmIx
YTA3MTU2NDQyLi4xNGYyOWE3NmZkNTQ3YTczNjRiOTY4OWQ4MjRiZTMyZjExYjgyN2U0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE3NCw2ICsxNzQsNyBAQCBjbGFzcyBSZWdp
c3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAjZW5kaWYKIGNsYXNz
IFNoYWRvd0NoaWNrZW47CitjbGFzcyBTaGFyZWRKSVRTdHViU2V0OwogY2xhc3MgU2NyaXB0RXhl
Y3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNo
ZTsKQEAgLTg0Niw2ICs4NDcsOCBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2lmIEVOQUJMRShG
VExfSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2Vu
ZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJTZXQ+IG1fc2hhcmVkSklUU3R1
YnM7CisKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rp
b24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0xMzA4LDQgKzEzMTEsNiBAQCBleHRlcm4gIkMi
IHZvaWQgc2FuaXRpemVTdGFja0ZvclZNSW1wbChWTSopOwogSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0mKTsKIHZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYpOwog
CitleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZk9TUkV4aXRzOworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBkNjBm
ZWI1MjY3Nzg2NmU4MGQzODViOTI5YzhlNzExMTViNjNkZjZhLi5hNzFlMjExMjUxNDhjNzkzM2I3
M2E2MWVkMmU0ZjQ4ZjQ2ZjYyZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCkBAIC0yNyw5ICsyNywxMSBAQAogI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIK
IAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQXNzZW1ibGVyQ29tbW9u
LmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgorI2luY2x1ZGUgIkRGR1dvcmtsaXN0Lmgi
CiAjaW5jbHVkZSAiRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRE9NSklU
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKQEAgLTQ5LDkgKzUxLDExIEBA
CiAjaW5jbHVkZSAiU25pcHBldFBhcmFtcy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgog
I2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgorI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAi
Vk1JbnNwZWN0b3IuaCIKICNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5oIgogI2luY2x1ZGUgIldh
c21DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJXYXNtV29ya2xpc3QuaCIKICNpbmNsdWRlIDx1
bmljb2RlL3V2ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3
dGYvQ1BVVGltZS5oPgpAQCAtMTk4OSw2ICsxOTkzLDI1IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVXNlSklUKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uSXNHaWdhY2FnZUVuYWJsZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVhYmxlRGljdGlvbmFyeSk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbklzUHJpdmF0ZVN5bWJvbCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkR1bXBXb3JrbGlzdFN0YXRlKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJlY2lzZVRpbWUpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZk9TUkV4aXRzKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZDYWNoZUZs
dXNoZXMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJP
ZlJlcGxhY2VXaXRoVk1IYWx0cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihm
dW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhKdW1wcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhMb2Fkcyk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb25zKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
TnVtYmVyT2ZTZXRQb2ludGVycyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihm
dW5jdGlvbk51bWJlck9mUmVwYXRjaEludDMycyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvbk51bWJlck9mUmVsaW5rSnVtcHMpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlbGlua0NhbGxzKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBhdGNoQ29tcGFjdHMpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZk5ld0NvZGVG
aW5hbGl6YXRpb25zKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
TnVtYmVyT2ZJblBsYWNlRmluYWxpemF0aW9ucyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvbk51bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9uKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb25J
bkJhc2VsaW5lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVt
YmVyT2ZTaGFyZWRTdHViSGl0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1
bmN0aW9uTnVtYmVyT2ZTaGFyZWRTdHViSGl0SW5CYXNlbGluZSk7CiAKIGNvbnN0IENsYXNzSW5m
byBKU0RvbGxhclZNOjpzX2luZm8gPSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNEb2xsYXJWTSkgfTsKIApAQCAtMzU3
Miw2ICszNTk1LDE0MyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc1ByaXZh
dGVTeW1ib2wsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogYwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGFzU3ltYm9sKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT51
aWQoKS5pc1ByaXZhdGUoKSkpOwogfQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25EdW1wV29ya2xpc3RTdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7Cisg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIGRhdGFMb2coIkRGRyBX
b3JrbGlzdDogIiwgcG9pbnRlckR1bXAoREZHOjpleGlzdGluZ0dsb2JhbERGR1dvcmtsaXN0T3JO
dWxsKCkpLCAiXG4iKTsKKyAgICBkYXRhTG9nKCJGVEwgV29ya2xpc3Q6ICIsIHBvaW50ZXJEdW1w
KERGRzo6ZXhpc3RpbmdHbG9iYWxGVExXb3JrbGlzdE9yTnVsbCgpKSwgIlxuIik7CisgICAgZGF0
YUxvZygiV2FzbSBXb3JrbGlzdDogIiwgcG9pbnRlckR1bXAoV2FzbTo6ZXhpc3RpbmdXb3JrbGlz
dE9yTnVsbCgpKSwgIlxuIik7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25QcmVjaXNlVGlt
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
V2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZk9TUkV4aXRzLCAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mT1NS
RXhpdHMpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZD
YWNoZUZsdXNoZXMsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGdfbnVtYmVyT2ZDYWNoZUZsdXNoZXMpKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHMsIChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZSZXBs
YWNlV2l0aFZNSGFsdHMpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
TnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBzLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkK
K3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mUmVwbGFjZVdpdGhKdW1wcykpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoTG9h
ZHMsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGdfbnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb25zLCAoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJl
ck9mUmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb25zKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mU2V0UG9pbnRlcnMsIChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZTZXRQb2ludGVy
cykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGF0
Y2hJbnQzMnMsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZN
QXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGdfbnVtYmVyT2ZSZXBhdGNoSW50MzJzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvbk51bWJlck9mUmVsaW5rSnVtcHMsIChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZSZWxpbmtKdW1wcykp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlbGlua0Nh
bGxzLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihnX251bWJlck9mUmVsaW5rQ2FsbHMpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGZ1bmN0aW9uTnVtYmVyT2ZSZXBhdGNoQ29tcGFjdHMsIChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZSZXBhdGNoQ29tcGFjdHMp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZOZXdDb2Rl
RmluYWxpemF0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZ19udW1iZXJPZk5ld0NvZGVGaW5hbGl6YXRpb25zKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMs
IChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdf
bnVtYmVyT2ZJblBsYWNlRmluYWxpemF0aW9ucykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZlNoYXJlZFN0
dWJDcmVhdGlvbikpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1i
ZXJPZlNoYXJlZFN0dWJIaXQsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZTaGFyZWRTdHViSGl0KSk7Cit9CisKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9uSW5CYXNl
bGluZSwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZ19udW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbkluQmFzZWxpbmUpKTsKK30KKworSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZTaGFyZWRTdHViSGl0SW5CYXNlbGlu
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
Z19udW1iZXJPZlNoYXJlZFN0dWJIaXRJbkJhc2VsaW5lKSk7Cit9CisKIGNvbnN0ZXhwciB1bnNp
Z25lZCBqc0RvbGxhclZNUHJvcGVydHlBdHRyaWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGU7CiAKIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpA
QCAtMzcyNyw2ICszODg3LDI2IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogCiAgICAgYWRkRnVuY3Rpb24odm0sICJpc1ByaXZhdGVTeW1ib2wiLCBmdW5jdGlvbklz
UHJpdmF0ZVN5bWJvbCwgMSk7CiAKKyAgICBhZGRGdW5jdGlvbih2bSwgImR1bXBXb3JrbGlzdFN0
YXRlIiwgZnVuY3Rpb25EdW1wV29ya2xpc3RTdGF0ZSwgMCk7CisgICAgYWRkRnVuY3Rpb24odm0s
ICJwcmVjaXNlVGltZSIsIGZ1bmN0aW9uUHJlY2lzZVRpbWUsIDApOworICAgIGFkZEZ1bmN0aW9u
KHZtLCAibnVtYmVyT2ZPU1JFeGl0cyIsIGZ1bmN0aW9uTnVtYmVyT2ZPU1JFeGl0cywgMCk7Cisg
ICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZkNhY2hlRmx1c2hlcyIsIGZ1bmN0aW9uTnVtYmVy
T2ZDYWNoZUZsdXNoZXMsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZSZXBsYWNl
V2l0aFZNSGFsdHMiLCBmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhWTUhhbHRzLCAwKTsKKyAg
ICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mUmVwbGFjZVdpdGhKdW1wcyIsIGZ1bmN0aW9uTnVt
YmVyT2ZSZXBsYWNlV2l0aEp1bXBzLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9m
UmVwbGFjZVdpdGhMb2FkcyIsIGZ1bmN0aW9uTnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzLCAwKTsK
KyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mUmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRp
b25zIiwgZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9ucywgMCk7
CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlNldFBvaW50ZXJzIiwgZnVuY3Rpb25OdW1i
ZXJPZlNldFBvaW50ZXJzLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mUmVwYXRj
aEludDMycyIsIGZ1bmN0aW9uTnVtYmVyT2ZSZXBhdGNoSW50MzJzLCAwKTsKKyAgICBhZGRGdW5j
dGlvbih2bSwgIm51bWJlck9mUmVsaW5rSnVtcHMiLCBmdW5jdGlvbk51bWJlck9mUmVsaW5rSnVt
cHMsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZSZWxpbmtDYWxscyIsIGZ1bmN0
aW9uTnVtYmVyT2ZSZWxpbmtDYWxscywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJP
ZlJlcGF0Y2hDb21wYWN0cyIsIGZ1bmN0aW9uTnVtYmVyT2ZSZXBhdGNoQ29tcGFjdHMsIDApOwor
ICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZOZXdDb2RlRmluYWxpemF0aW9ucyIsIGZ1bmN0
aW9uTnVtYmVyT2ZOZXdDb2RlRmluYWxpemF0aW9ucywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0s
ICJudW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25zIiwgZnVuY3Rpb25OdW1iZXJPZkluUGxhY2VG
aW5hbGl6YXRpb25zLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mU2hhcmVkU3R1
YkNyZWF0aW9uIiwgZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbiwgMCk7CisgICAg
YWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlNoYXJlZFN0dWJIaXQiLCBmdW5jdGlvbk51bWJlck9m
U2hhcmVkU3R1YkhpdCwgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlNoYXJlZFN0
dWJDcmVhdGlvbkluQmFzZWxpbmUiLCBmdW5jdGlvbk51bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9u
SW5CYXNlbGluZSwgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlNoYXJlZFN0dWJI
aXRJbkJhc2VsaW5lIiwgZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJIaXRJbkJhc2VsaW5lLCAw
KTsKKwogICAgIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3Rh
dHVzU3RydWN0dXJlLnNldCh2bSwgdGhpcywgT2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91
dENvcnJlY3RTbG90U3RhdHVzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwganNO
dWxsKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAppbmRleCAxOTE1MzFmMTAxNmQ5Mzg5NzAzZmRjYmRj
MjI5NGUzYzE5NDYwY2Q0Li44MmU0NWViZWI4MjlkYjM0NzVhNzJiYTdjMzY4NTRkNmM3YWVkMjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9EYXRhTG9nLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
SUQuaD4KICNpbmNsdWRlIDxtdXRleD4KIAotI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDAKKyNk
ZWZpbmUgREFUQV9MT0dfVE9fRklMRSAxCiAKIC8vIFNldCB0byAxIHRvIHVzZSB0aGUgdGVtcCBk
aXJlY3RvcnkgZnJvbSBjb25mc3RyIGluc3RlYWQgb2YgaGFyZGNvZGVkIGRpcmVjdG9yeS4KIC8v
IFRoZSBsYXN0IGNvbXBvbmVudCBvZiBEQVRBX0xPR19GSUxFTkFNRSB3aWxsIHN0aWxsIGJlIHVz
ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93
dGYvT3B0aW9uYWwuaAppbmRleCA2N2FiYTExYWYxOTczYTM5NTFmNWMzM2M1MDZkMjA5ZjdhNmI1
ZmFhLi4wNDQ2YzM1MmU5ZTY1Y2QxNDk3MjczMGE4ZGU0ZWM4ZTM2NzFlZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFs
LmgKQEAgLTY3Myw3ICs2NzMsNyBAQCBjbGFzcyBPcHRpb25hbDxUJj4KICAgfQogCiAgIGNvbnN0
ZXhwciBUJiB2YWx1ZSgpIGNvbnN0IHsKLSAgICBSRUxFQVNFX0FTU0VSVF9VTkRFUl9DT05TVEVY
UFJfQ09OVEVYVChyZWYoKSk7CisgICAgUkVMRUFTRV9BU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NP
TlRFWFQocmVmKTsKICAgICByZXR1cm4gKnJlZjsKICAgfQogCmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ2
NTBkNmRlMDIyOTBjODczNzhlNWQ2YmQwZWQ5M2QwMzRlNjQwODQuLmFiMTI3ZmJlNGMwNTdjZDM1
YjFjMmUyNWFkOWEyYjEwOTQ5MTFhZDkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMjEtMDUtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEpldFN0cmVhbTIvSmV0U3RyZWFtRHJpdmVyLmpz
OgorICAgICAgICAoRHJpdmVyLnByb3RvdHlwZS5hc3luYyBzdGFydCk6CisgICAgICAgIChwcm90
b3R5cGUudXBkYXRlVUlCZWZvcmVSdW4pOgorICAgICAgICAqIEpldFN0cmVhbTIvd2FzbS9IYXNo
U2V0LmpzOgorICAgICAgICAoZG9SdW4uaW50ZWdyYXRlV2FzbUpTLmluc3RhbnRpYXRlQXJyYXlC
dWZmZXIpOgorICAgICAgICAoZG9SdW4uaW50ZWdyYXRlV2FzbUpTLmRvTmF0aXZlV2FzbSk6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanM6CisgICAg
ICAgIChsb2dKU0MpOgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVz
dCk6CisKIDIwMjEtMDUtMTIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTW90aW9uTWFya10gVGVtcG9yYXJpbHkgcmVtb3ZlIHRoZSBmb2N1cyB0
ZXN0CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvSmV0U3RyZWFtRHJp
dmVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL0pldFN0cmVhbURyaXZlci5qcwpp
bmRleCBmODA4Mjk3M2I4YmRmMjMyYWEwYWQ3MWQ5NjQwNzU0YmI1NTNjZTk1Li42ZjhiZjZmNGEz
ODg4ZjVkOWEzZTNlNGNlMmNiOTg2ODMzMGZiNGFhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0pldFN0cmVhbTIvSmV0U3RyZWFtRHJpdmVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
SmV0U3RyZWFtMi9KZXRTdHJlYW1Ecml2ZXIuanMKQEAgLTI3NCw2ICsyNzQsMjcgQEAgYXN5bmMg
c3RhcnQoKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYCR7Y2F0ZWdvcnl9OiAke3Vp
RnJpZW5kbHlOdW1iZXIoZ2VvbWVhbihzY29yZXMpKX1gKTsKIAogICAgICAgICAgICAgY29uc29s
ZS5sb2coIlxuVG90YWwgU2NvcmU6ICIsIHVpRnJpZW5kbHlOdW1iZXIoZ2VvbWVhbihhbGxTY29y
ZXMpKSwgIlxuIik7CisKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKAorICAgICAgICAgICAgJHZt
LnByZWNpc2VUaW1lKCkgKyAiOiBudW1iZXJPZk9TUkV4aXRzID0gIiArICR2bS5udW1iZXJPZk9T
UkV4aXRzKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJlck9mQ2FjaGVGbHVzaGVzID0gIiAr
ICR2bS5udW1iZXJPZkNhY2hlRmx1c2hlcygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1iZXJP
ZlJlcGxhY2VXaXRoVk1IYWx0cyA9ICIgKyAkdm0ubnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHMo
KSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBzID0gIiArICR2
bS5udW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVy
T2ZSZXBsYWNlV2l0aExvYWRzID0gIiArICR2bS5udW1iZXJPZlJlcGxhY2VXaXRoTG9hZHMoKSAr
CisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlv
bnMgPSAiICsKKyAgICAgICAgICAgICAgICAkdm0ubnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJlc3ND
b21wdXRhdGlvbnMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZTZXRQb2ludGVycyA9
ICIgKyAkdm0ubnVtYmVyT2ZTZXRQb2ludGVycygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1i
ZXJPZlJlcGF0Y2hJbnQzMnMgPSAiICsgJHZtLm51bWJlck9mUmVwYXRjaEludDMycygpICsKKyAg
ICAgICAgICAgICAgICAiLCBudW1iZXJPZlJlbGlua0p1bXBzID0gIiArICR2bS5udW1iZXJPZlJl
bGlua0p1bXBzKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJlck9mUmVsaW5rQ2FsbHMgPSAi
ICsgJHZtLm51bWJlck9mUmVsaW5rQ2FsbHMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVy
T2ZSZXBhdGNoQ29tcGFjdHMgPSAiICsgJHZtLm51bWJlck9mUmVwYXRjaENvbXBhY3RzKCkgKwor
ICAgICAgICAgICAgICAgICIsIG51bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnMgPSAiICsgJHZt
Lm51bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVt
YmVyT2ZJblBsYWNlRmluYWxpemF0aW9ucyA9ICIgKyAkdm0ubnVtYmVyT2ZJblBsYWNlRmluYWxp
emF0aW9ucygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlv
biA9ICIgKyAkdm0ubnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb24oKSArCisgICAgICAgICAgICAg
ICAgIiwgbnVtYmVyT2ZTaGFyZWRTdHViSGl0ID0gIiArICR2bS5udW1iZXJPZlNoYXJlZFN0dWJI
aXQoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb25JbkJh
c2VsaW5lID0gIiArICR2bS5udW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbkluQmFzZWxpbmUoKSAr
CisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZTaGFyZWRTdHViSGl0SW5CYXNlbGluZSA9ICIg
KyAkdm0ubnVtYmVyT2ZTaGFyZWRTdHViSGl0SW5CYXNlbGluZSgpICsKKyAgICAgICAgICAgICAg
ICAiLlxuIik7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnJlcG9ydFNjb3JlVG9SdW5CZW5j
aG1hcmtSdW5uZXIoKTsKQEAgLTY1MCw2ICs2NzEsMTAgQEAgZWxzZSBpZiAoaXNEOCkKICAgICBz
Y29yZUlkZW50aWZpZXJzKCkgeyB0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgaW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3NlcyIpOyB9CiAKICAgICB1cGRhdGVVSUJlZm9yZVJ1bigpIHsKKyAgICAgICAg
aWYgKHR5cGVvZiBkdW1wV29ya2xpc3RTdGF0ZSAhPT0gInVuZGVmaW5lZCIKKyAgICAgICAgICAg
ICYmIGR1bXBXb3JrbGlzdFN0YXRlKQorICAgICAgICAgICAgJHZtLmR1bXBXb3JrbGlzdFN0YXRl
KCk7CisgICAgICAgIAogICAgICAgICBpZiAoIWlzSW5Ccm93c2VyKSB7CiAgICAgICAgICAgICBj
b25zb2xlLmxvZyhgUnVubmluZyAke3RoaXMubmFtZX06YCk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIvd2FzbS9IYXNoU2V0Lmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vSGFzaFNldC5qcwppbmRleCA5NTA3
YWJkMTIzMjA3Y2ZmNDYwMDU3MDhmNzQ2MzJmNWQ3NWNlZmU0Li41N2I0MDFhY2ExNjMwOTU5MTY2
NDUxNjIxNDNhY2ZjMzUxYzk3MmM0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS9IYXNoU2V0LmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL0hhc2hTZXQuanMKQEAgLTEsNCArMSw1IEBACiBmdW5jdGlvbiBkb1J1bigpIHsKK2NvbnNv
bGUubG9nKCJoZWxsbyBjb25zb2xlIik7CiBsZXQgX19zdGFydHVwU3RhcnRUaW1lID0gYmVuY2ht
YXJrVGltZSgpOwogdmFyIG1vZHVsZU92ZXJyaWRlcyA9IHt9OwogdmFyIGtleTsKQEAgLTM3MSw2
ICszNzIsNyBAQCBmdW5jdGlvbiBlbmxhcmdlTWVtb3J5KCkgewogIGJ1ZmZlciA9IE1vZHVsZVsi
YnVmZmVyIl07CiB9IGVsc2UgewogIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09ICJvYmplY3Qi
ICYmIHR5cGVvZiBXZWJBc3NlbWJseS5NZW1vcnkgPT09ICJmdW5jdGlvbiIpIHsKKyAgY29uc29s
ZS5sb2coIkFsbG9jYXRpbmcgbWVtb3J5LiBCeXRlcyA9ICIgKyBUT1RBTF9NRU1PUlkpOwogICBN
b2R1bGVbIndhc21NZW1vcnkiXSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoewogICAgImluaXRp
YWwiOiBUT1RBTF9NRU1PUlkgLyBXQVNNX1BBR0VfU0laRSwKICAgICJtYXhpbXVtIjogVE9UQUxf
TUVNT1JZIC8gV0FTTV9QQUdFX1NJWkUKQEAgLTU4Miw2ICs1ODQsNyBAQCBmdW5jdGlvbiByZWNl
aXZlSW5zdGFudGlhdGVkU291cmNlKG91dHB1dCkgewogICB9CiAgIGZ1bmN0aW9uIGluc3RhbnRp
YXRlQXJyYXlCdWZmZXIocmVjZWl2ZXIpIHsKICAgIGdldEJpbmFyeVByb21pc2UoKS50aGVuKChm
dW5jdGlvbihiaW5hcnkpIHsKKyAgICBjb25zb2xlLmxvZygiSW5zdGFudGlhdGluZyIpOwogICAg
IHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShiaW5hcnksIGluZm8pOwogICAgfSkpCiAg
ICAudGhlbigoLi4uYXJncykgPT4gewpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMKaW5kZXggNDdjZWRmYzA5
YTRjNWU3MjE2NmUzODg5YmI2NWU2Mjg2MTZmYjY2Ni4uZTQ2ODcwMjA2NWI5YTkyOGI1YmVjNjE2
YzU2ODYyZWU4Y2VjMTVjNSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCkBAIC0xMjAsMjUgKzEyMCw1
MyBAQCBlbHNlIGlmIChuID09IDEpCiAvLyBUaGlzIGZ1bmN0aW9uIG91Z2h0IGJlIGFzIHNpbXBs
ZSBhcyBwb3NzaWJsZS4gRG9uJ3QgZXZlbiB1c2UgU2ltcGxlUHJvbWlzZS4KIEJlbmNobWFya1J1
bm5lci5wcm90b3R5cGUuX3J1blRlc3QgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgcHJlcGFyZVJl
dHVyblZhbHVlLCBjYWxsYmFjaykKIHsKKyAgICBjb25zdCBkb0pTQ0xvZ2dpbmcgPSB0cnVlOwor
CiAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgIHZhciBub3cgPSB3aW5kb3cucGVyZm9ybWFuY2Ug
JiYgd2luZG93LnBlcmZvcm1hbmNlLm5vdyA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5w
ZXJmb3JtYW5jZS5ub3coKTsgfSA6IERhdGUubm93OwogCiAgICAgdmFyIGNvbnRlbnRXaW5kb3cg
PSBzZWxmLl9mcmFtZS5jb250ZW50V2luZG93OwogICAgIHZhciBjb250ZW50RG9jdW1lbnQgPSBz
ZWxmLl9mcmFtZS5jb250ZW50RG9jdW1lbnQ7CiAKKyAgICBmdW5jdGlvbiBsb2dKU0MoY29udGV4
dCkKKyAgICB7CisgICAgICAgIGlmICghZG9KU0NMb2dnaW5nKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICR2bS5kYXRhTG9nKAorICAgICAgICAgICAgJHZtLnByZWNpc2VUaW1lKCkg
KyAiOiAiICsgY29udGV4dCArICI7IG51bWJlck9mT1NSRXhpdHMgPSAiICsgJHZtLm51bWJlck9m
T1NSRXhpdHMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZDYWNoZUZsdXNoZXMgPSAi
ICsgJHZtLm51bWJlck9mQ2FjaGVGbHVzaGVzKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJl
ck9mUmVwbGFjZVdpdGhWTUhhbHRzID0gIiArICR2bS5udW1iZXJPZlJlcGxhY2VXaXRoVk1IYWx0
cygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMgPSAiICsg
JHZtLm51bWJlck9mUmVwbGFjZVdpdGhKdW1wcygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1i
ZXJPZlJlcGxhY2VXaXRoTG9hZHMgPSAiICsgJHZtLm51bWJlck9mUmVwbGFjZVdpdGhMb2Fkcygp
ICsKKyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9ucyA9ICIgKworICAgICAgICAgICAgICAgICR2bS5udW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9ucygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZlNldFBvaW50ZXJz
ID0gIiArICR2bS5udW1iZXJPZlNldFBvaW50ZXJzKCkgKworICAgICAgICAgICAgICAgICIsIG51
bWJlck9mUmVwYXRjaEludDMycyA9ICIgKyAkdm0ubnVtYmVyT2ZSZXBhdGNoSW50MzJzKCkgKwor
ICAgICAgICAgICAgICAgICIsIG51bWJlck9mUmVsaW5rSnVtcHMgPSAiICsgJHZtLm51bWJlck9m
UmVsaW5rSnVtcHMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZSZWxpbmtDYWxscyA9
ICIgKyAkdm0ubnVtYmVyT2ZSZWxpbmtDYWxscygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1i
ZXJPZlJlcGF0Y2hDb21wYWN0cyA9ICIgKyAkdm0ubnVtYmVyT2ZSZXBhdGNoQ29tcGFjdHMoKSAr
CisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZOZXdDb2RlRmluYWxpemF0aW9ucyA9ICIgKyAk
dm0ubnVtYmVyT2ZOZXdDb2RlRmluYWxpemF0aW9ucygpICsKKyAgICAgICAgICAgICAgICAiLCBu
dW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25zID0gIiArICR2bS5udW1iZXJPZkluUGxhY2VGaW5h
bGl6YXRpb25zKCkgKyAiLlxuIik7CisgICAgfQorCiAgICAgc2VsZi5fd3JpdGVNYXJrKHN1aXRl
Lm5hbWUgKyAnLicgKyB0ZXN0Lm5hbWUgKyAnLXN0YXJ0Jyk7CiAgICAgdmFyIHN0YXJ0VGltZSA9
IG5vdygpOworICAgIGxvZ0pTQygiQWJvdXQgdG8gcnVuIHRlc3Q6ICIgKyBzdWl0ZS5uYW1lICsg
Ii4iICsgdGVzdC5uYW1lKTsKICAgICB0ZXN0LnJ1bihwcmVwYXJlUmV0dXJuVmFsdWUsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCk7CisgICAgbG9nSlNDKCJGaW5pc2hlZCBydW5uaW5n
IHRlc3QiKTsKICAgICB2YXIgZW5kVGltZSA9IG5vdygpOwogICAgIHNlbGYuX3dyaXRlTWFyayhz
dWl0ZS5uYW1lICsgJy4nICsgdGVzdC5uYW1lICsgJy1zeW5jLWVuZCcpOwogCiAgICAgdmFyIHN5
bmNUaW1lID0gZW5kVGltZSAtIHN0YXJ0VGltZTsKIAogICAgIHZhciBzdGFydFRpbWUgPSBub3co
KTsKKyAgICBsb2dKU0MoIkFib3V0IHRvIHNldCB0aW1lb3V0Iik7CiAgICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7CiAgICAgICAgIC8vIFNvbWUgYnJvd3NlcnMgZG9uJ3QgaW1tZWRpYXRlbHkg
dXBkYXRlIHRoZSBsYXlvdXQgZm9yIHBhaW50LgogICAgICAgICAvLyBGb3JjZSB0aGUgbGF5b3V0
IGhlcmUgdG8gZW5zdXJlIHdlJ3JlIG1lYXN1cmluZyB0aGUgbGF5b3V0IHRpbWUuCiAgICAgICAg
IHZhciBoZWlnaHQgPSBzZWxmLl9mcmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS5oZWlnaHQ7CisgICAgICAgIGxvZ0pTQygiRmluaXNoZWQgd29yayBpbiB0
aW1lb3V0IGNhbGxiYWNrIik7CiAgICAgICAgIHZhciBlbmRUaW1lID0gbm93KCk7CiAgICAgICAg
IHNlbGYuX2ZyYW1lLmNvbnRlbnRXaW5kb3cuX3VudXNlZEhlaWdodFZhbHVlID0gaGVpZ2h0OyAv
LyBQcmV2ZW50IGRlYWQgY29kZSBlbGltaW5hdGlvbi4KICAgICAgICAgc2VsZi5fd3JpdGVNYXJr
KHN1aXRlLm5hbWUgKyAnLicgKyB0ZXN0Lm5hbWUgKyAnLWFzeW5jLWVuZCcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429325</attachid>
            <date>2021-05-21 12:43:32 -0700</date>
            <delta_ts>2021-05-26 20:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210521124331.patch</filename>
            <type>text/plain</type>
            <size>383544</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZjNlZDA0MzE1MmU3OTRkNjAxYjMyNWFmYzU4YTlmMzU3ODJiMzRlLi5hYzI3ZGY5OTI5NzYxM2Vm
NDRjNGYyOWM3ZWE4MDEyOGNiNDNkYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjggQEAKKzIwMjEtMDUtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS11bmlm
aWVkLXNvdXJjZXMuc2g6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVW5pZmll
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFs
dCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAg
ICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OnNldFBvaW50ZXIpOgorICAgICAgICAoSlNDOjpBUk02
NEFzc2VtYmxlcjo6cmVwYXRjaEludDMyKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6
OnJlbGlua0p1bXApOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVsaW5rQ2FsbCk6
CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFjdCk6CisgICAgICAg
IChKU0M6OkFSTTY0QXNzZW1ibGVyOjpjYWNoZUZsdXNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNNjRFQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0RUFzc2VtYmxlcjo6c2V0UG9p
bnRlcik6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcC4KKyAg
ICAgICAgKiBhc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmg6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxp
emF0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAgICAoSlND
OjpMaW5rQnVmZmVyOjpsb2NhdGlvbk9mKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xsZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkFj
Y2Vzc0Nhc2U6OmtleSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0
aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNl
Lmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2VLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlS2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklU
U3R1YlNldDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6Oktl
eTo6S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpl
cXVhbCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xh
dG9yOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRy
YW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRl
clRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2lu
dGVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgor
ICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAg
IChKU0M6OkJ5VmFsSW5mbzo6b2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQpOgorICAgICAgICAo
SlNDOjpCeVZhbEluZm86Om9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRKSVREYXRhKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXApOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdh
dGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lz
dGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNj
ZXNzOjphYm91dFRvRGllKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
OgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OkFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZl
UmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyk6CisgICAgICAgICogYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5m
bzo6YWJvdXRUb0RpZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpoYW5kbGVFeGl0Q291bnRzKToKKyAg
ICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
bG93UGF0aElDQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVj
a1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvckNlbGxzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxTZXRSZXN1bHQpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Z2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4
dCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdl
dCBjb25zdCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNh
bGwpOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmR1bXAgY29uc3QpOgorICAgICAg
ICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6OlNsb3dQYXRoQ2FsbEtleSk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsS2V5OjppbmRpcmVjdE9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1Bh
dGhDYWxsS2V5Ojp3aXRoQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENh
bGxLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0Vmly
dHVhbENhbGwpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hOb25BcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAg
ICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpjYWxjdWxhdGVQb2tlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpwb2tlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhl
bHBlcnM6OnN0YWNrQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hh
bGxBcmd1bWVudFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50c0ltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VBcmd1bWVudHNB
bGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGQ6OmlzX2ludGVncmFsPENV
UlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRW50cnlJbXBsKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwpOgorICAgICAgICAqIGppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRT
dHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdH
Q0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAg
ICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NB
d2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6YWJvdXRUb0RpZSk6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRv
cl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxs
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQv
SklUQ29kZS5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5
SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5
SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRC
eUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5
SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3Rh
bmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6
SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRH
ZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEdl
dEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgICog
aml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZEZvckFycmF5TW9k
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFu
Y2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4
ZWRfcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Nl
dF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2Jy
YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRC
eVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRf
ZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1l
V2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFs
V2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJy
YXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9k
aXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5
X2lkKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklU
U3R1YlJvdXRpbmU6OmFib3V0VG9EaWUpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6
a2V5cyBjb25zdCk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OnJlYWRQdXRJQ0NhbGxUYXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2FsbCk6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0Qnkp
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpy
ZXBhdGNoQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6Cisg
ICAgICAgIChKU0M6OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxl
dGVCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlSW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChK
U0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hl
Y2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3Ip
OgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlE
KToKKyAgICAgICAgKEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hh
YmxlSnVtcCk6CisgICAgICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0U2V0UHJpdmF0ZUJyYW5k
KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25z
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjpm
aW5pc2hDcmVhdGlvbik6CisKIDIwMjEtMDUtMTkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFic3RyYWN0U2xvdFZpc2l0b3I6OmNvbnRhaW5zT3BhcXVlUm9vdCgp
IHNob3VsZCBvbmx5IGRlY2xhcmUgZGlkRmluZE9wYXF1ZVJvb3QgaWYgdGhlIHJvb3QgaXMgYWN0
dWFsbHkgZm91bmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDI2NDZlYTk2Mjk1ZTg3Njk5OWIxMjZlOTM1ODk2NmVmMGFlNjM1
ODguLjJjNDkxY2FiMjkzZTdiZWZiMzM4NGY3OWEzZTRjMzM3Nzc5M2JiNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjEtMDUtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9EYXRhTG9nLmNwcDoKKyAg
ICAgICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6T3B0aW9uYWw8VDo6dmFsdWUg
Y29uc3QpOgorCiAyMDIxLTA1LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE5hdmlnYXRpb24gVGltaW5nIExl
dmVsIDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmMwODQwYjYxZTA5MzE2ZjM1
ZGQzYzM3MGFlZDFhZDM4YWNlZGVhNC4uNTJhMDZkNTI5MTFiYTliZjdkZjk1YjM0NzFjN2E0NmYy
ZDBkNzcyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MjQsNiArMTgyNCw3
IEBACiAJCUUzMjJFNUEzMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0
NDM1MDA2RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0
NEE4MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNu
aXBwZXRQYXJhbXMuaCAqLzsgfTsKIAkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElu
bGluZXMuaCAqLzsgfTsKKwkJRTMyNTE5NDMyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZpZWRTb3Vy
Y2UxNDYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMyNTE5NDIyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwICovOyB9Owog
CQlFMzI1OTU2NDIxRkRBMkM5MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjU5NTYzMjFG
REEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovOyB9OwogCQlFMzI1
QTM2MDIyMjExNTkwMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNUEzNUYyMjIxMTU4QTAw
NzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLzsgfTsKIAkJRTMyODJCQkIxRkU5
MzBBRjAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJy
b3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTI4OTIsNiArMjg5Myw3IEBACiAJCTBGOUMwM0Q0MUU5NDc2RjAwMENEOTEyNSAvKiBBaXJU
bXBTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyVG1wU2V0Lmg7IHBh
dGggPSBiMy9haXIvQWlyVG1wU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUNBQkM2MURCNTRBNzYwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZlcmVuY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDsgcGF0
aCA9IGIzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjlDQUJDNzFEQjU0QTc2MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclBhZEludGVyZmVyZW5jZS5oOyBw
YXRoID0gYjMvYWlyL0FpclBhZEludGVyZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjlEMDg4QTI2NDFDQzdFMDA0MUQ3MDEgLyogQXNzZW1ibGVyQ29tbW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzc2VtYmxlckNvbW1vbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAv
KiBEaXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGlzYXNzZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyog
REZHRmx1c2hlZEF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0ZsdXNoZWRBdC5jcHA7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRB
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVzaGVkQXQuaDsgcGF0
aCA9IGRmZy9ERkdGbHVzaGVkQXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUw
NTQsNiArNTA1Niw3IEBACiAJCUUzMjJFNUE0MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0
UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFNuaXBw
ZXRQYXJhbXMuY3BwOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBl
dFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTbmlwcGV0UGFy
YW1zLmg7IHBhdGggPSBmdGwvRlRMU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyNTE5NDIyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZp
ZWRTb3VyY2UxNDYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5p
ZmllZFNvdXJjZTE0Ni5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNDYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEds
b2JhbERhdGFJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4
cEdsb2JhbERhdGFJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjVB
MzVGMjIyMTE1OEEwMDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMyNkM0OTYxRUNCRUY1NzAwQTlBOTA1IC8qIENsYXNzSW5mby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc0luZm8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjg4NCw2ICs2ODg3LDcgQEAKIAkJCQk1MzBBNjZCNzFGQTNFNzdE
MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0My5jcHAgKi8sCiAJCQkJNTMwQTY2QUQxRkEzRTc3
NzAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDQuY3BwICovLAogCQkJCTUzMEE2NkIwMUZBM0U3
N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCAqLywKKwkJCQlFMzI1MTk0MjI2NTYz
OUU1MDA3Q0YzQUIgLyogVW5pZmllZFNvdXJjZTE0Ni5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
ICJ1bmlmaWVkLXNvdXJjZXMiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTg0MjEs
NiArODQyNSw3IEBACiAJCQkJODZBREQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0
ZXJzLmggKi8sCiAJCQkJMEZBNkYzOTYyMENDQjdBNjAwQTAzRENEIC8qIEFzc2VtYmxlckJ1ZmZl
ci5jcHAgKi8sCiAJCQkJOTY4OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZl
ci5oICovLAorCQkJCTBGOUQwODhBMjY0MUNDN0UwMDQxRDcwMSAvKiBBc3NlbWJsZXJDb21tb24u
Y3BwICovLAogCQkJCTQzQzM5MkFBMUMzQkVCMDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24u
aCAqLywKIAkJCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8s
CiAJCQkJNTIzMzU2MjgyMjVFQjhFOTAwMjY4QkQyIC8qIENQVS5jcHAgKi8sCkBAIC05NDU4LDcg
Kzk0NjMsNiBAQAogCQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDTG9vcFN0YWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFj
a0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAv
KiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3
NiAvKiBKU1NldElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5NDQxMTY2NzYzMzIw
MEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0YzNDE4
MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTk2NTcsNyArOTY2MSw2IEBACiAJCQkJMEZEODJFNTcxNDFEQUYx
MDAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyNjE3
RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4g
SGVhZGVycyAqLywKLQkJCQlGRUY1QjQyNzI2MjhBQkQ5MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERG
R09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1
REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC05NzUyLDYgKzk3NTUsNyBAQAogCQkJCTE0NzM0MUQyMURDMDJFMkUwMEFB
MjlCQSAvKiBFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxQzBGRkQxQjE5
M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2MDI5RDkx
RDZFMUU0RjAwMzAyMDREIC8qIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBlY3RhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlv
bkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDAwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBF
eGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY0OTEzNzFENzhGMDFEMDBB
Njk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTc4OCw3ICs5Nzky
LDYgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5RDRDMEQxQzNFMUMxMTAwNkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRh
cmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZU
TEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MjMyNjI4QTBFRTAwMTZF
Nzc2IC8qIEhhc2hNYXBJbXBsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYx
NzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjcxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4
aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzIsNyAr
OTgzNSw2IEBACiAJCQkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRUVENzk0MjQ5MkI4NzAwMDhGNEM5MyAv
KiBGdW5jdGlvbkFsbG93bGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMEQxRENBOTI5
NDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1
QjQyQzI2MjhDQkM4MDAxNkU3NzYgLyogVk1UcmFwc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDA0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDczNDFEODFEQzAyRjk5MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVj
dXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYwRjFBMDE2QjcyQTFBMDA1REY5NUIgLyog
RnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTExLDYgKzk5MTMs
NyBAQAogCQkJCTE0MkUzMTM2MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzlBMDkwODAxRDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBs
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQyMzI2MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1h
cEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OURGQ0JEQjFEODhDNTk2MDA1MjdE
MDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgx
M0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNzdBMURDMjJG
OTU4RDUwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxODQs
NiArMTAxODcsNyBAQAogCQkJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0QkI3RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDA4NzQyMTdDQkU4
RUIwMEMzRTY0MyAvKiBKU01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MjUyNjI4QTg1
MDAwMTZFNzc2IC8qIEpTTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0REVGOTYx
ODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MEIyODZEMUVCOEU2RDUwMDBFQjVEMiAvKiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzAxM0NBOEMxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNr
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjE5LDYgKzEwMjIzLDcgQEAKIAkJCQkxNEQwMUE3NzIx
RkIzNTFGMDBCQzU0RTkgLyogSlNTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5RDlFMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1Nl
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MjkyNjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENzAxODJGNDk5NzAwNTg4ODA3IC8q
IEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFC
MEJFRCAvKiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI3MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI0NywxMiArMTAy
NTIsMTIgQEAKIAkJCQk4NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFM0M2MUIxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFs
dWVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRThDMDMxMjI2NEE2OTExMDAxQTQ0QUQg
LyogU2xvd1BhdGhGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkMwRTE2RjVD
RDAwQjM0NDYwIC8qIEpTVmFsdWVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1MTY3
QkFCRDcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkUzQzYxRDE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3OTVBQzYxODIwQTIzNTVFMDA1MkM3NkMgLyogSlNWaXJ0dWFsTWFj
aGluZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhB
RiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDI3MjYyOEFCRDkwMDE2
RTc3NiAvKiBKU1dlYWtNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5MzEx
NkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzlCRkJCMDIyQUQzQ0RDMDAyM0Y0QzAgLyog
SlNXZWFrT2JqZWN0UmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNTMxLDYgKzEwNTM2LDcgQEAK
IAkJCQlDMjE2MEZFNzE1RjdFOTVFMDA5NDJERkMgLyogU2xvdFZpc2l0b3JJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JN
YWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDlGMkYwMTdBMEFDMDQwMDUxMkU5OCAvKiBT
bG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFOEMwMzEyMjY0QTY5MTEwMDFBNDRB
RCAvKiBTbG93UGF0aEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCNEEzMzFDODRG
MEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzMwNDAwNDBFNkE3NDk0MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFM0YyM0E4MjFFQ0YxM0ZFMDA5NzhEOTkgLyogU25pcHBldC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDU2OCw3ICsxMDU3NCw2IEBACiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8q
IFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk4Njk0M0IxRjhDMEFDQzAwOTIzMkFF
IC8qIFN0cnVjdHVyZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYz
MDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDI1
MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
QUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY2MSw2ICsxMDY2Niw3IEBACiAJCQkJRkUzMDIy
RDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVGNUI0MkMyNjI4Q0JDODAwMTZFNzc2IC8qIFZNVHJhcHNJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Mjg0N0FEQzIxRkZCODY5MDA2MUE5REIgLyogV2FzbUFpcklS
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYg
LyogV2FzbUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQ0E3MzBBMUVBNTMz
RDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc1Myw3ICsx
MDc1OSw2IEBACiAJCQkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFERTgwMjlDMUUwOEYxREUw
MDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQUQyRkNCRjUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBF
eGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUExREI1OUNC
MjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBRDJGQ0JGNzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFCMURCNTlDQjIwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3
NjAsNiArMTE3NjUsNyBAQAogCQkJCTUzMEE2NkMyMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMTQzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkMzMUZBM0U3OEIwMDI2QTU0
NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkM0MUZB
M0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUzMjUxOTQzMjY1NjM5RTUwMDdDRjNBQiAvKiBVbmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBXYXNtQWlySVJHZW5lcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2ggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2gKaW5kZXggODg1MzNmZjc4ZWMxMWQyMzc1
MTJkNDgxZGZkYTEwMjA3MGEwYmRiZC4uMWUzOTAzNDM0MTk4ZjQyZDkxODA3NzcyNjFkYmU4MzZj
YTBmNjQxMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtdW5pZmllZC1zb3VyY2VzLnNoCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaApAQCAtMTQsNyArMTQsNyBAQCBpZiBbIC16ICIk
e0JVSUxEX1NDUklQVFNfRElSfSIgXTsgdGhlbgogICAgIGZpCiBmaQogCi1VbmlmaWVkU291cmNl
Q3BwRmlsZUNvdW50PTE0NQorVW5pZmllZFNvdXJjZUNwcEZpbGVDb3VudD0xNDYKIFVuaWZpZWRT
b3VyY2VNbUZpbGVDb3VudD01CiAKIGlmIFsgJCMgLWVxIDAgXTsgdGhlbgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDNlZWZhMDRkYjUxMzU1MzVlZWZhZGZkNzMxNzY1NDgxM2E2ODY2
YzguLmU2YWE5NDc4NDNmODRlOGVkNzA1ZWE4N2I3YjAwZjYyY2ZhY2I2MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDYgKzQ2LDcgQEAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAog
CiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKIGFzc2VtYmxlci9Bc3NlbWJs
ZXJCdWZmZXIuY3BwCithc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmNwcAogYXNzZW1ibGVyL0NQ
VS5jcHAKIGFzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAogYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVW5pZmllZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVW5pZmllZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOGI0ZjVkODk3ZjZlZTM5Y2I2OTE0MjAyNzM1NDIyYzA5
NTgzMzk1Zi4uZjdmNWY2YTdhZDViNjdkNTgxMmNjMGI0YzVkNTgxZDMyZDM2MWUwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1VuaWZpZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VbmlmaWVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtNTIsNiArNTIsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyYwogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291
cmNlcy9VbmlmaWVkU291cmNlMTQzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0LmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ1LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291
cmNlMTQ2LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTUuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2UxNi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE3LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCmluZGV4IDJj
YzUzYzhjY2RhNWRkM2NhYzE1NmE0YjU5MWY3OWE2ODhiZDc1YmYuLjczZDI2YjI3N2Q5NzFhM2M3
NWQ4ZmM3YmE2ODQ1YjdiM2QwZTUxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKQEAgLTI2MDAsNiArMjYwMCw3IEBAIGNsYXNzIEFS
TTY0QXNzZW1ibGVyIHsKICAgICAgICAgaW50IGluc24gPSBkYXRhQ2FjaGVaZXJvVmlydHVhbEFk
ZHJlc3MoQVJNNjRSZWdpc3RlcnM6OnpyKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRV
cFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAgICAg
IHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CisgICAgICAgIFdU
Rjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHMsIDEpOwog
ICAgICAgICBjYWNoZUZsdXNoKHdoZXJlLCBzaXplb2YoaW50KSk7CiAgICAgfQogCkBAIC0yNjE5
LDYgKzI2MjAsNyBAQCBjbGFzcyBBUk02NEFzc2VtYmxlciB7CiAgICAgICAgIGludCBpbnNuID0g
dW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShmYWxzZSwgc3RhdGljX2Nhc3Q8aW50PihvZmZz
ZXQpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVj
dGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hl
cmUsICZpbnNuLCBzaXplb2YoaW50KSk7CisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQo
JmdfbnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBzLCAxKTsKICAgICAgICAgY2FjaGVGbHVzaCh3aGVy
ZSwgc2l6ZW9mKGludCkpOwogICAgIH0KICAgICAKQEAgLTI2NTAsNiArMjY1Miw3IEBAIGNsYXNz
IEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgICAgIGludCBpbnNuID0gbG9hZFN0b3JlUmVnaXN0
ZXJVbnNpZ25lZEltbWVkaWF0ZShNZW1PcFNpemVfNjQsIGZhbHNlLCBNZW1PcF9MT0FELCBlbmNv
ZGVQb3NpdGl2ZUltbWVkaWF0ZTw2ND4oaW1tMTIpLCBybiwgcmQpOwogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9
PSB3aGVyZSk7CiAgICAgICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwgc2l6
ZW9mKGludCkpOworICAgICAgICAgICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgmZ19udW1iZXJP
ZlJlcGxhY2VXaXRoTG9hZHMsIDEpOwogICAgICAgICAgICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6
ZW9mKGludCkpOwogICAgICAgICB9CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTI2ODUsNiArMjY4
OCw3IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgICAgIGludCBpbnNuID0gYWRk
U3VidHJhY3RJbW1lZGlhdGUoRGF0YXNpemVfNjQsIEFkZE9wX0FERCwgRG9udFNldEZsYWdzLCAw
LCBpbW0xMiAqIHNpemVvZih2b2lkKiksIHJuLCBydCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4od2hlcmUpID09IHdoZXJl
KTsKICAgICAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50
KSk7CisgICAgICAgICAgICBXVEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mUmVwbGFj
ZVdpdGhBZGRyZXNzQ29tcHV0YXRpb25zLCAxKTsKICAgICAgICAgICAgIGNhY2hlRmx1c2god2hl
cmUsIHNpemVvZihpbnQpKTsKICAgICAgICAgfQogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0yNzIx
LDggKzI3MjUsMTAgQEAgY2xhc3MgQVJNNjRBc3NlbWJsZXIgewogICAgICAgICBSRUxFQVNFX0FT
U0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4oYWRkcmVzcykgPT0gYWRk
cmVzcyk7CiAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkoYWRkcmVzcywgYnVmZmVyLCBzaXplb2Yo
aW50KSAqIDMpOwogCi0gICAgICAgIGlmIChmbHVzaCkKKyAgICAgICAgaWYgKGZsdXNoKSB7Cisg
ICAgICAgICAgICBXVEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mU2V0UG9pbnRlcnMs
IDEpOwogICAgICAgICAgICAgY2FjaGVGbHVzaChhZGRyZXNzLCBzaXplb2YoaW50KSAqIDMpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdo
ZXJlLCBpbnQzMl90IHZhbHVlKQpAQCAtMjc0OSw2ICsyNzU1LDcgQEAgY2xhc3MgQVJNNjRBc3Nl
bWJsZXIgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3Ry
dWN0aW9uU2l6ZT4od2hlcmUpID09IHdoZXJlKTsKICAgICAgICAgcGVyZm9ybUpJVE1lbWNweSh3
aGVyZSwgJmJ1ZmZlciwgc2l6ZW9mKGludCkgKiAyKTsKIAorICAgICAgICBXVEY6OmF0b21pY0V4
Y2hhbmdlQWRkKCZnX251bWJlck9mUmVwYXRjaEludDMycywgMSk7CiAgICAgICAgIGNhY2hlRmx1
c2god2hlcmUsIHNpemVvZihpbnQpICogMik7CiAgICAgfQogCkBAIC0yNzkyLDYgKzI3OTksNyBA
QCBjbGFzcyBBUk02NEFzc2VtYmxlciB7CiAgICAgc3RhdGljIHZvaWQgcmVsaW5rSnVtcCh2b2lk
KiBmcm9tLCB2b2lkKiB0bykKICAgICB7CiAgICAgICAgIHJlbGlua0p1bXBPckNhbGw8QnJhbmNo
VHlwZV9KTVA+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50Kj4oZnJvbSksIHRvKTsKKyAgICAgICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgm
Z19udW1iZXJPZlJlbGlua0p1bXBzLCAxKTsKICAgICAgICAgY2FjaGVGbHVzaChmcm9tLCBzaXpl
b2YoaW50KSk7CiAgICAgfQogICAgIApAQCAtMjgwMyw2ICsyODExLDcgQEAgY2xhc3MgQVJNNjRB
c3NlbWJsZXIgewogICAgIHN0YXRpYyB2b2lkIHJlbGlua0NhbGwodm9pZCogZnJvbSwgdm9pZCog
dG8pCiAgICAgewogICAgICAgICByZWxpbmtKdW1wT3JDYWxsPEJyYW5jaFR5cGVfQ0FMTD4ocmVp
bnRlcnByZXRfY2FzdDxpbnQqPihmcm9tKSAtIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
Kj4oZnJvbSkgLSAxLCB0byk7CisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVt
YmVyT2ZSZWxpbmtDYWxscywgMSk7CiAgICAgICAgIGNhY2hlRmx1c2gocmVpbnRlcnByZXRfY2Fz
dDxpbnQqPihmcm9tKSAtIDEsIHNpemVvZihpbnQpKTsKICAgICB9CiAKQEAgLTI4NDYsNiArMjg1
NSw3IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91
bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAg
ICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CiAKKyAgICAg
ICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgmZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0cywgMSk7
CiAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsKICAgICB9CiAKQEAgLTI4
NjAsNiArMjg3MCw3IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVyIHsKIAogICAgIHN0YXRpYyB2b2lk
IGNhY2hlRmx1c2godm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgeworICAgICAgICBXVEY6
OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mQ2FjaGVGbHVzaGVzLCAxKTsKICNpZiBPUyhE
QVJXSU4pCiAgICAgICAgIHN5c19jYWNoZV9jb250cm9sKGtDYWNoZUZ1bmN0aW9uUHJlcGFyZUZv
ckV4ZWN1dGlvbiwgY29kZSwgc2l6ZSk7CiAjZWxpZiBPUyhGVUNIU0lBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEVBc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRFQXNzZW1ibGVyLmgKaW5kZXggMWYwMTBm
Y2U2MTE0YzU0OTVkNzhjOTQ2NzgzMzgwZmU2Nzk3ZDE5MS4uNzI1OGVhZTc0YjM3MDdhNDUzNjlh
Mjk1NzU2M2EzMWFjZDQ0ZTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk02NEVBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTTY0RUFzc2VtYmxlci5oCkBAIC0zOTYsOCArMzk2LDEwIEBAIGNsYXNzIEFSTTY0
RUFzc2VtYmxlciA6IHB1YmxpYyBBUk02NEFzc2VtYmxlciB7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPihhZGRyZXNzKSA9PSBhZGRy
ZXNzKTsKICAgICAgICAgcGVyZm9ybUpJVE1lbWNweShhZGRyZXNzLCBidWZmZXIsIHNpemVvZihp
bnQpICogNCk7CiAKLSAgICAgICAgaWYgKGZsdXNoKQorICAgICAgICBpZiAoZmx1c2gpIHsKKyAg
ICAgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZTZXRQb2ludGVycywg
MSk7CiAgICAgICAgICAgICBjYWNoZUZsdXNoKGFkZHJlc3MsIHNpemVvZihpbnQpICogNCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hl
cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxl
ckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNv
bW1vbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTExNTRlOGIwMWUwYWEwOThhZTM4NmE3NWRjMDYxOTQyZDUx
ZjdjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QXNzZW1ibGVyQ29tbW9uLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkFzc2VtYmxlckNvbW1vbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordWludDY0X3QgZ19udW1iZXJPZkNhY2hlRmx1c2hlczsKK3Vp
bnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHM7Cit1aW50NjRfdCBnX251bWJlck9m
UmVwbGFjZVdpdGhKdW1wczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzOwor
dWludDY0X3QgZ19udW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uczsKK3VpbnQ2
NF90IGdfbnVtYmVyT2ZTZXRQb2ludGVyczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZSZXBhdGNoSW50
MzJzOwordWludDY0X3QgZ19udW1iZXJPZlJlbGlua0p1bXBzOwordWludDY0X3QgZ19udW1iZXJP
ZlJlbGlua0NhbGxzOwordWludDY0X3QgZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0czsKK3VpbnQ2
NF90IGdfbnVtYmVyT2ZOZXdDb2RlRmluYWxpemF0aW9uczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZJ
blBsYWNlRmluYWxpemF0aW9uczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRp
b247Cit1aW50NjRfdCBnX251bWJlck9mU2hhcmVkU3R1YkhpdDsKK3VpbnQ2NF90IGdfbnVtYmVy
T2ZTaGFyZWRTdHViQ3JlYXRpb25JbkJhc2VsaW5lOwordWludDY0X3QgZ19udW1iZXJPZlNoYXJl
ZFN0dWJIaXRJbkJhc2VsaW5lOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKaW5kZXggYTU5NDgy
M2Q2YTRkN2Y1MGE4MTRiMjE2YjA3M2E4Y2YwZjc5MTllYy4uOTU4NjE1NzYwMzUzYTQ4MDVjNjVk
YTljZmRjMDBkY2E2ZjA0ZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5oCkBAIC0yOTYsNCArMjk2LDIxIEBAIGNsYXNzIEFSTTY0
TG9naWNhbEltbWVkaWF0ZSB7CiAgICAgaW50IG1fdmFsdWU7CiB9OwogCitKU19FWFBPUlRfUFJJ
VkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZkNhY2hlRmx1c2hlczsKK0pTX0VYUE9SVF9Q
UklWQVRFIGV4dGVybiB1aW50NjRfdCBnX251bWJlck9mUmVwbGFjZVdpdGhWTUhhbHRzOworSlNf
RVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBz
OworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0
aExvYWRzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBs
YWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbnM7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWlu
dDY0X3QgZ19udW1iZXJPZlNldFBvaW50ZXJzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVp
bnQ2NF90IGdfbnVtYmVyT2ZSZXBhdGNoSW50MzJzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJu
IHVpbnQ2NF90IGdfbnVtYmVyT2ZSZWxpbmtKdW1wczsKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVy
biB1aW50NjRfdCBnX251bWJlck9mUmVsaW5rQ2FsbHM7CitKU19FWFBPUlRfUFJJVkFURSBleHRl
cm4gdWludDY0X3QgZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0czsKK0pTX0VYUE9SVF9QUklWQVRF
IGV4dGVybiB1aW50NjRfdCBnX251bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnM7CitKU19FWFBP
UlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25z
OworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZTaGFyZWRTdHVi
Q3JlYXRpb247CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZlNo
YXJlZFN0dWJIaXQ7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJP
ZlNoYXJlZFN0dWJDcmVhdGlvbkluQmFzZWxpbmU7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4g
dWludDY0X3QgZ19udW1iZXJPZlNoYXJlZFN0dWJIaXRJbkJhc2VsaW5lOworCiB9IC8vIG5hbWVz
cGFjZSBKU0MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmNwcAppbmRleCBiNTJiYmZjYmI4YzUwOGMxN2IzODY1YTJlNjAzMjc3YmYyMDE4NWIwLi44M2Q5
MjgwYThlYTcxZTAwMGIyYTJlNWJiZWQ4MzRjMDE2YWQyYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTQ4MSw2ICs0ODEsMTEgQEAg
dm9pZCBMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKCkKICAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAjZW5kaWYKKworICAgIGlmIChtX2V4ZWN1
dGFibGVNZW1vcnkpCisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZO
ZXdDb2RlRmluYWxpemF0aW9ucywgMSk7CisgICAgZWxzZQorICAgICAgICBXVEY6OmF0b21pY0V4
Y2hhbmdlQWRkKCZnX251bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMsIDEpOwogICAgIAogICAg
IHNfcHJvZmlsZUN1bW11bGF0aXZlTGlua2VkU2l6ZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
cHJvZmlsZSldICs9IG1fc2l6ZTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Y2FjaGVGbHVzaChjb2Rl
KCksIG1fc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCmluZGV4IGEyODU3NGY1N2E1N2NkYjY2NzBhM2U0MDdlZDBjNzkyYTRjODgxZDQuLmUxMzI2
NDJjMGFkNDhlYjQ1ZWQxYWMxZThjYjU1MzRiZjc2ODk5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0yMTgsOCArMjE4LDggQEAgY2xhc3Mg
TGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBDb2RlTG9jYXRpb25D
YWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAgICAgewotICAgICAgICBBU1NFUlQoY2Fs
bC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAgICAgICAgQVNTRVJUKCFjYWxsLmlzRmxh
Z1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxs
OjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5l
YXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8dGFnPihnZXRMaW5rZXJBZGRy
ZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGM1ZmY3ODIyNjJl
NzE4NWI4NzUwNDg3MGQ0YjRjOWJjNDkyYTRhYTQuLjNkOGI1Y2Y5Y2RmZjUxOWVjYTVmMWU1NGQ1
M2QyNDBiMDQ5MGI1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5m
by5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9y
cy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
OTY0LDYgKzk2NSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9w
ZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7
CkBAIC0xMDYxLDYgKzEwNjQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9z
dHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAK
QEAgLTExNDQsNiArMTE0OSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBh
bGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApA
QCAtMTIwNSw2ICsxMjEyLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xMzE3LDYgKzEzMjYsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNj
cmF0Y2hHUFIpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpAQCAtMTM5NCw2ICsxNDA1LDgxIEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGUoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBnZW5l
cmF0ZUltcGwoc3RhdGUpOwogfQogCit2b2lkIEFjY2Vzc0Nhc2U6OmNvbGxlY3RJbnZhcmlhbnRz
Rm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29k
ZUJsb2NrKQoreworICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CisKKyAgICBzd2l0Y2ggKG1fdHlw
ZSkgeworICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFyZ3VtZW50
c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4
Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2Fk
OgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVyaWM6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIEdldEdldHRlcjoK
KyAgICBjYXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
R2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21W
YWx1ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBjdXJy
U3RydWN0dXJlOworICAgICAgICAgICAgaWYgKCFoYXNBbHRlcm5hdGVCYXNlKCkpCisgICAgICAg
ICAgICAgICAgY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBhbHRlcm5hdGVCYXNlKCktPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgICAgICBjdXJyU3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlG
b3JSZXBsYWNlbWVudHModm0sIG9mZnNldCgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZm9yIChj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogbV9jb25kaXRpb25TZXQp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOworCisg
ICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVXYXRj
aGFiaWxpdHkpKSB7CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxv
Y2ssIGNvbmRpdGlvbik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZvciBub3csIHdlIG9ubHkgYWxsb3cgZXF1aXZhbGVuY2Ugd2hlbiBpdCdzIHdhdGNo
YWJsZS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQo
KSAhPSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVuY2UpOworCisgICAgICAgIGlmICghY29u
ZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWFzb24gd2h5IHRoaXMgY2Fubm90IGhh
cHBlbiBpcyB0aGF0IHdlIHJlcXVpcmUgdGhhdCBQb2x5bW9ycGhpY0FjY2VzcyBjYWxscworICAg
ICAgICAgICAgLy8gQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoKSBvbmx5IGFmdGVyIGl0IGhhcyB2ZXJp
ZmllZCB0aGF0CisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpjb3VsZFN0aWxsU3VjY2VlZCgp
IHJldHVybmVkIHRydWUuCisKKyAgICAgICAgICAgIGRhdGFMb2coIlRoaXMgY29uZGl0aW9uIGlz
IG5vIGxvbmdlciBtZXQ6ICIsIGNvbmRpdGlvbiwgIlxuIik7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugd2lsbCBl
bWl0IGNvZGUgdGhhdCBoYXMgYSB3ZWFrIHJlZmVyZW5jZSB0aGF0IGlzbid0IG90aGVyd2lzZSBs
aXN0ZWQgYW55d2hlcmUuCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9u
Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5h
cHBlbmQoV3JpdGVCYXJyaWVyPEpTQ2VsbD4odm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSk7Cisg
ICAgfQorfQorCiB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKQEAgLTE0MTcsNyArMTUwMyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3BvbHlQcm90b0FjY2Vzc0NoYWluKTsKIAogICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0
Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246
OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewotICAgICAgICAgICAg
c3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29uZGl0aW9uKTsKKyAgICAgICAgICAgIHN0YXRlLmlu
c3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKQEAgLTE1ODIsNyArMTY2OCwxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIC8v
IFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRoZXIgb3Ig
bm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNpdGUuCi0g
ICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3Rh
dGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsKKyAgICAgICAgUmVnaXN0
ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJN
NjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0
YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogCiAgICAgICAgIGF1dG8gcmVzdG9yZUxpdmVS
ZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsID0gWyZdKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3Bp
bGxTdGF0ZSYgc3BpbGxTdGF0ZSwgYm9vbCBjYWxsSGFzUmV0dXJuVmFsdWUpIHsKICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlOwpAQCAtMTcxMiw2ICsxODAxLDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICNl
bmRpZgogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGds
b2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgIGFjY2Vzcy5jYWxsTGlu
a0luZm8oKS0+ZW1pdFNsb3dQYXRoKHZtLCBqaXQpOworCiAgICAgICAgICAgICBpZiAobV90eXBl
ID09IEdldHRlcikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7
CiAgICAgICAgICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKQEAgLTE4NDUsNyArMTkzNSwx
MiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVyQnJhbmNo
KHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZzZXQoKSks
IHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2Vy
dmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOworCisgICAg
ICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBleHRyYVJlZ2lz
dGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgICAgICBhdXRv
IHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisKICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0
aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICBhdXRvIG9w
ZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTg3NSw2ICsxOTcw
LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHVi
SW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGlm
IChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBh
bGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52YWxp
ZEdQUlJlZzsKQEAgLTE5MzMsNiArMjAzMCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0
ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVn
aXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOworICAgICAgICAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1Rv
UHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgICAgICAgICAgICAgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsy
MTMwLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKGJhc2VHUFIpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NF
UlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVk
KCkpOwogICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0g
VHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24pOwpAQCAtMjE5MSw2ICsyMjkyLDI1IEBA
IFR5cGVkQXJyYXlUeXBlIEFjY2Vzc0Nhc2U6OnRvVHlwZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlKQogICAgIH0KIH0KIAorQWNjZXNzQ2FzZUtleSBBY2Nlc3NDYXNlOjprZXkoKSBj
b25zdAoreworICAgIHJldHVybiBBY2Nlc3NDYXNlS2V5IHsKKyAgICAgICAgbV9jb25kaXRpb25T
ZXQsCisgICAgICAgIG1fc3RydWN0dXJlID8gbV9zdHJ1Y3R1cmUtPmlkKCkgOiAwLAorICAgICAg
ICBtX29mZnNldCwKKyAgICAgICAgbV90eXBlLAorICAgICAgICBtX3ZpYVByb3h5LAorICAgIH07
Cit9CisKK3ZvaWQgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQo
KQoreworICAgIGF1dG8gaXRlciA9IG1fdm0ubV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5maW5k
PFNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yPih0aGlzKTsKKyAgICBpZiAoaXRl
ciAhPSBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPm1fc3R1YnMuZW5kKCkpCisgICAgICAgIG1fdm0u
bV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5yZW1vdmUoaXRlcik7CisgICAgSklUU3R1YlJvdXRp
bmU6Om9ic2VydmVaZXJvUmVmQ291bnQoKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lk
IEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXgg
YmRkMWIyMzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uNzA4NmIyYmM1M2E0YTRm
OWE2NWIzMGU1NGUyN2I4MGNkNTNjOTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0yOCwxNCArMjgsMTggQEAKICNpZiBFTkFCTEUoSklUKQog
CiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0
aW5lLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3RydWN0
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTsKK3N0cnVjdCBBY2Nlc3NDYXNlS2V5OwogCiBERUNMQVJF
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIApAQCAtMjUzLDYg
KzI1Nyw5IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogI2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYpIHsgfQogI2VuZGlmCisKKyAg
ICBBY2Nlc3NDYXNlS2V5IGtleSgpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNG
b3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CiAgICAgCiBw
cm90ZWN0ZWQ6CiAgICAgQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
Jik7CkBAIC0zMTUsNiArMzIyLDE3MyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKK3N0cnVjdCBBY2Nlc3NDYXNlS2V5IHsK
KyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRl
SGFzaChtX2NvbmRpdGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUp
LCBtX3ZpYVByb3h5LCBtX3N0cnVjdHVyZUlELCBtX29mZnNldCk7CisgICAgfQorCisgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY2Nlc3NDYXNlS2V5JiBsaHMsIGNvbnN0IEFjY2Vz
c0Nhc2VLZXkmIHJocykKKyAgICB7CisgICAgICAgIGlmIChsaHMubV9zdHJ1Y3R1cmVJRCAhPSBy
aHMubV9zdHJ1Y3R1cmVJRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KGxocy5tX29mZnNldCAhPSByaHMubV9vZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQcm94eSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGxocy5tX2NvbmRpdGlvblNl
dC5zaXplKCkgIT0gcmhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBhdXRvIGxpdGVyID0gbGhzLm1fY29uZGl0aW9uU2V0LmJlZ2lu
KCk7CisgICAgICAgIGF1dG8gcml0ZXIgPSByaHMubV9jb25kaXRpb25TZXQuYmVnaW4oKTsKKyAg
ICAgICAgZm9yICg7IGxpdGVyICE9IGxocy5tX2NvbmRpdGlvblNldC5lbmQoKTsgKytsaXRlciwg
KytyaXRlcikgeworICAgICAgICAgICAgaWYgKCEoKmxpdGVyID09ICpyaXRlcikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IG1fY29uZGl0aW9uU2V0Owor
ICAgIFN0cnVjdHVyZUlEIG1fc3RydWN0dXJlSUQ7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CisgICAgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSBtX3R5cGU7CisgICAgYm9vbCBtX3ZpYVBy
b3h5OworfTsKKworY2xhc3MgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMg
SklUU3R1YlJvdXRpbmUgeworcHVibGljOgorICAgIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKFZN
JiB2bSwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+JiYga2V5cykKKyAgICAgICAgOiBKSVRTdHViUm91
dGluZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwgbV9rZXlzKFdURk1vdmUo
a2V5cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxBY2Nlc3NDYXNlS2V5Piog
a2V5cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICZtX2tleXM7IH0KKworICAgIHZvaWQgb2JzZXJ2
ZVplcm9SZWZDb3VudCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAgIFZl
Y3RvcjxBY2Nlc3NDYXNlS2V5PiBtX2tleXM7Cit9OworCitjbGFzcyBTaGFyZWRKSVRTdHViU2V0
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsKK3B1Ymxp
YzoKKyAgICBTaGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+JiBrZXlzKQorICAgIHsKKyAgICAg
ICAgSGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAg
ICAgICAgYWRkKGhhc2hlciwga2V5Lmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFz
aCgpOworICAgIH0KKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7Cisg
ICAgICAgICAgICBLZXkoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFz
ZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisg
ICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1f
YmFzZUdQUihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikK
KyAgICAgICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAg
LCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVn
aXN0ZXJzKHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3Jh
cHBlZChiaXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKSkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRT
dHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFw
cGVkCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAg
ICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAg
ICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAg
ICAgICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBhLm1fd3JhcHBlZCAhPSBiLm1fd3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgSklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAg
IEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAg
ICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9H
UFI7CisgICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07
CisKKyAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47
CisKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAx
OworICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVk
LT5rZXlzKCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
S2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09
IGI7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJj
aGVyIHsKKyAgICAgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5
cyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IEhhc2g6OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKmEubV93cmFwcGVkLT5rZXlzKCkgPT0gYi5tX2tleXMKKyAgICAgICAg
ICAgICAgICAgICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAg
ICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAg
ICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYm
IGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAg
JiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAgICAgICAgR1BSUmVn
IG1fdmFsdWVHUFI7CisgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICBHUFJSZWcg
bV9zdHViSW5mb0dQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAg
ICAgICBjb25zdCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mIG1fa2V5czsKKyAgICB9OworCisgICAg
c3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
SklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRKSVRTdHViU2V0OjpoYXNoKCpzdHViLT5rZXlzKCkpOworICAgICAgICB9CisKKyAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGtleSwgSklUU3R1YlJvdXRpbmUqIHN0
dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7
CisgICAgICAgIH0KKyAgICB9OworCisvLyBwcml2YXRlOgorICAgIEhhc2hTZXQ8SGFzaDo6S2V5
LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgK
aW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4NC4uNDJkMDc5NGRk
NjI0MGM2MzgwYzliYTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBzdHJ1Y3QgQnlWYWxJ
bmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlW
YWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
Zk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8s
IG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZC
YWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1f
YmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
IG1fc2xvd09wZXJhdGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGU3NjZlNTRlODFiMWY5YWYyM2Fh
NzBmYzZkOTcxZTAwNzEwZjgzNDMuLjlkYWU3ZmI0ODBiZDU2NDBhNjUwZDA1ZjQ4NTczZTk2OTBk
YWRlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC04NjEsNyArODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUo
SklUKQogICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CiAgICAgICAg
IGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3Mp
IHsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAgICAgICAgICBzdHVi
SW5mby0+YWJvdXRUb0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5mby0+ZGVyZWYoKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE4MDIsNyArMTgwMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpy
ZXNldEpJVERhdGEoKQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAgICBmb3IgKFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAg
ICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1YkluZm8tPmFib3V0
VG9EaWUoKm1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRl
ckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5N2ZmMWNm
ZjdjZjM4MzYuLjFmMWY2NDY5NGUxODc3ZTBhNjBmYWFlZjg2ZDc5MzYxMjgwNTE0NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5jcHAKQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
cwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgIEdQUlJl
ZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYgKzIyNSw4IEBAIHZvaWQg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlLCBjb25zCiAgICAgZm9yIChGUFJSZWcgcmVnIDogZnBTY3JhdGNoKQogICAg
ICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZyk7CiAgICAgcmVnaXN0ZXJzVG9T
cGlsbEZvckNDYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckND
YWxsKCkpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICByZWdpc3Rl
cnNUb1NwaWxsRm9yQ0NhbGwuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAKICAgICBBY2Nlc3ND
YXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRv
cigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmNwcAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2Jh
ZTk2ZmIzMjFhLi41OTQwYzU1MWUzNTNhMjYwNzY2M2Q0ZTk5ZDIxMTZhYmExY2VkNjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAt
MjE2LDYgKzIxNiw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVn
aXN0ZXIoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VUYWdHUFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFn
R1BSKTsKICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwog
ICAgIEdQUlJlZyBzY3JhdGNoID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAg
IGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFs
aWRHUFJSZWc7CkBAIC0zNzksOCArMzgxLDEzIEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0
ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAg
ICByZXR1cm4gbGlua2VkQ29kZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXBJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCiB7CisgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAg
IGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmgKaW5kZXggZjQ5YjM1YjhmMjI2NDA2YzdmYjI2ZmZiYjQ4ODZiMmI4
NDcxZDEyZC4uYzFjMzMyNTNkODMzNmI4YzUwODcxMmI5N2Y5ZjcxOWEwMmZmYzNkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaApAQCAtMTA0LDcg
KzEwNCw3IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFi
bGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMg
Ym9vbCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0
YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5
Kik7Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZv
aWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0
ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRp
YyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0LmgKaW5kZXggNWQ5MDU0NTk3NGYxZWQzN2YyOGNhZjNhMmFlYjM0NmE0OTEw
YTI4My4uNmRhY2NiZjg3MWMwODdhYWJhOTg2MzVjNTAxYTc4YjdmNGZkMTAzNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwxNCBAQCBjbGFzcyBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBm
b3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29u
ZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KICAg
ICAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25z
dDsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5
Q29uZGl0aW9uOjpLaW5kKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRj
ZDc0YjljODdlODlhN2QwOWEwMTUuLjg1NTYyYzkxMGE4Yzg2OTg3NDc5N2Q3YjdiMjA1NDViOTAy
YzFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgi
OiIsIG1fY29kZSk7CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0
Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdh
dGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdh
dGNocG9pbnQoCi0gICAgICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5m
bywgY29uZGl0aW9uKTsKKyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3Vy
ZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLCBjb25kaXRpb24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVz
dG9yZVNjcmF0Y2goKQpAQCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6OnJlc3RvcmVTY3JhdGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVk
KCkKIHsKICAgICByZXN0b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVt
cCgpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQo
KTsKKyAgICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAog
Y29uc3QgUmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0Zv
ckNhbGwoKQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAg
ICB9OwogfQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0
ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8g
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0
ZQogewogICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdp
c3RlcnMoKTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKKyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNp
Z25lZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5
dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4
dHJhU3RhY2tQYWRkaW5nKTsKQEAgLTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRK
U0xvYwogICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRj
aEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDUs
NiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0
YXRlLmppdCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRl
ID0KLSAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGpp
dCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFj
ZSk7CiAKICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MjEsMTIg
KzUyMCw0MCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNl
czogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAKKworICAgIGJvb2wgZG9lc0NhbGxz
ID0gZmFsc2U7CisgICAgYm9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBmYWxzZTsKKyAgICBi
b29sIGNhbkJlU2hhcmVkID0gdHJ1ZTsKKyAgICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01hcms7
CisgICAgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+IGtleXM7CisgICAga2V5cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNhc2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7
CisgICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmsp
OworICAgICAgICBpZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50
cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCisgICAgICAgICAgICBoYXNKU0dldHRl
clNldHRlckNhbGwgPSB0cnVlOworI2lmIDAKKyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0g
QWNjZXNzQ2FzZTo6VHJhbnNpdGlvbikKKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7
CisjZW5kaWYKKyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6Q3VzdG9t
VmFsdWVHZXR0ZXIpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworICAgICAgICBp
ZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpDdXN0b21BY2Nlc3NvckdldHRlcikKKyAg
ICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgp
ID09IEFjY2Vzc0Nhc2U6OkN1c3RvbVZhbHVlU2V0dGVyKQorICAgICAgICAgICAgY2FuQmVTaGFy
ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6Q3Vz
dG9tQWNjZXNzb3JTZXR0ZXIpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworICAg
ICAgICBrZXlzLmFwcGVuZChlbnRyeS0+a2V5KCkpOworICAgIH0KKyAgICBzdGF0ZS5tX2hhc0pT
R2V0dGVyU2V0dGVyQ2FsbCA9IGhhc0pTR2V0dGVyU2V0dGVyQ2FsbDsKKyAgICAvLyBHZXR0ZXIg
LyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2ggaXMgdGll
ZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVh
YmxlLgorICAgIGlmIChoYXNKU0dldHRlclNldHRlckNhbGwpCisgICAgICAgIGNhbkJlU2hhcmVk
ID0gZmFsc2U7CisKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdj
YXNlcycgY29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQog
ICAgIC8vIHdvbid0IGNoYW5nZSB0aGF0IHNldCBhbnltb3JlLgogICAgIAogICAgIGJvb2wgYWxs
R3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgPSB0cnVlOwotICAgIGJvb2wgaGFzSlNHZXR0ZXJTZXR0
ZXJDYWxsID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc0ludDMyUHJvcGVydHlDaGVjayA9IGZhbHNl
OwogICAgIGJvb2wgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBu
ZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKQEAgLTU0MiwxMCArNTY5LDk4IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIH0KICAgICAgICAgY29tbWl0KGxvY2tlciwg
dm0sIHN0YXRlLndhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCAqbmV3Q2FzZSk7CiAg
ICAgICAgIGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrICY9IG5ld0Nhc2UtPmd1YXJkZWRCeVN0
cnVjdHVyZUNoZWNrKHN0dWJJbmZvKTsKLSAgICAgICAgaWYgKG5ld0Nhc2UtPnR5cGUoKSA9PSBB
Y2Nlc3NDYXNlOjpHZXR0ZXIgfHwgbmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRl
cikKLSAgICAgICAgICAgIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IHRydWU7CisgICAgICAgIGlm
IChuZXdDYXNlLT51c2VzUG9seVByb3RvKCkpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZh
bHNlOworICAgIH0KKyAgICBpZiAobmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzU3Ry
aW5nUHJvcGVydHlDaGVjayB8fCBuZWVkc0ludDMyUHJvcGVydHlDaGVjaykKKyAgICAgICAgY2Fu
QmVTaGFyZWQgPSBmYWxzZTsKKworICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YjsKKyAg
ICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQp
IHsKKyAgICAgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAg
ICAgICAgICAgICAgICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZv
LnZhbHVlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAga2V5cworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGF1dG8gZW50cnkgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLmZp
bmQ8U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAg
ICAgICAgICAgIGlmIChlbnRyeSAhPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLmVuZCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVy
bmFsOjp2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUVVFUlkgIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmJhc2VHUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8udmFsdWVH
UFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc3R1YkluZm8ucmVncy50aGlzR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgIiwgIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiLCB1c2VkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm8udXNlZFJlZ2lzdGVycworICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJHT1QgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVu
dHJ5LT5tX2Jhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZW50cnktPm1fdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fZXh0cmFHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkt
Pm1fc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCB1c2VkOiAiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fdXNlZFJlZ2lzdGVycworICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3R1YiA9
IGVudHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKKyAg
ICBpZiAoc3R1YikgeworICAgICAgICArK2dfbnVtYmVyT2ZTaGFyZWRTdHViSGl0OworICAgICAg
ICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoY29kZUJsb2NrLT5qaXRUeXBlKCkpKQorICAg
ICAgICAgICAgKytnX251bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxpbmU7CisgICAgICAgIG1f
c3R1YlJvdXRpbmUgPSBzdHViOworICAgICAgICBmb3IgKGF1dG8mIGFjY2Vzc0Nhc2UgOiBjYXNl
cykKKyAgICAgICAgICAgIGFjY2Vzc0Nhc2UtPmNvbGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJldXNl
KHN0YXRlLCBjb2RlQmxvY2spOworCisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0
YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVC
YXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAg
aWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRh
TG9nKCJSZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAg
ICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgp
OworCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAg
ICAgICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RT
aXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRl
ZE5ld0NvZGU7CisKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0
S2luZCwgbV9zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfQorCisgICAgQ0NhbGxI
ZWxwZXJzIGppdChjb2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAgICBpZiAo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoc3RhdGUubV9oYXNKU0dldHRl
clNldHRlckNhbGwpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQg
c3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0g
aWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNr
LXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJlZ2lzdGVyIGFuZCBpdCBp
cyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1dGFibGUgY2FsbCBkb2Vz
IG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rpbmcgc3RhY2stcG9pbnRl
ciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzLiBCdXQgdGhp
cyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFjay1wb2ludGVyLCBhbmQg
bWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8gVG8gZW5zdXJlIFBBQy10
YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVyIHRvIHRoZSBhcHByb3By
aWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIH0KKworICAgIHN0
YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJl
c2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAKICAgICBpZiAoY2FzZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5saWtlbHksIGJ1dCB3ZSBt
YWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5qdW1wKCkpOwpAQCAtNzMwLDYgKzg0NSwxMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
YwogICAgICAgICBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcgPSBzdGF0ZS5jYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcoKTsKICAgICB9CiAKKyAgICBpZiAoT3B0aW9u
czo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAg
IC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHku
IFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRo
dW5rIGlzIGNhbGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIGppdC5mYXJKdW1wKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICB9CisKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIExpbmtC
dWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAg
IGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgaWYgKFBvbHlt
b3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03MzksOSArODYwLDEyIEBAIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBzdWNjZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAKLSAgICBsaW5rQnVm
ZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAgIGxpbmtCdWZmZXIu
bGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBBU1NFUlQoc3RhdGUuc3VjY2Vzcy5lbXB0
eSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3Ms
IHN1Y2Nlc3NMYWJlbCk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIH0KICAgICAKICAgICBpZiAoUG9seW1vcnBo
aWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdp
bihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3Jw
aGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwpAQCAtNzQ5LDE4
ICs4NzMsMjIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKICAg
ICAgICAgY29kZUJsb2NrLCBsaW5rQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAg
ICAgIiVzIiwgdG9DU3RyaW5nKCJBY2Nlc3Mgc3R1YiBmb3IgIiwgKmNvZGVCbG9jaywgIiAiLCBz
dHViSW5mby5jb2RlT3JpZ2luLCAiIHdpdGggcmV0dXJuIHBvaW50ICIsIHN1Y2Nlc3NMYWJlbCwg
IjogIiwgbGlzdER1bXAoY2FzZXMpKS5kYXRhKCkpOwotCi0gICAgYm9vbCBkb2VzQ2FsbHMgPSBm
YWxzZTsKLSAgICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01hcms7Ci0gICAgZm9yIChhdXRvJiBl
bnRyeSA6IGNhc2VzKQotICAgICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwg
JmNlbGxzVG9NYXJrKTsKICAgICAKLSAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJv
dXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92
ZShzdGF0ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRs
ZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworICAgICsrZ19udW1iZXJP
ZlNoYXJlZFN0dWJDcmVhdGlvbjsKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoY29k
ZUJsb2NrLT5qaXRUeXBlKCkpKQorICAgICAgICArK2dfbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRp
b25JbkJhc2VsaW5lOworICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShj
b2RlLCBXVEZNb3ZlKGtleXMpLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJr
LCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0
aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CisKKyAgICBp
ZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpCisg
ICAgICAgICAgICB2bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLmFkZChTaGFyZWRKSVRTdHVi
U2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0dWJJ
bmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNlZFJl
Z2lzdGVycywgbV9zdHViUm91dGluZS5nZXQoKSkpOworICAgIH0KKwogICAgIG1fd2F0Y2hwb2lu
dHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZl
cmVuY2VzLmlzRW1wdHkoKSkKICAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9y
PFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7CiAg
ICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFM
b2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCJS
ZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CiAgICAgCiAgICAgbV9s
aXN0ID0gV1RGTW92ZShjYXNlcyk7CiAgICAgbV9saXN0LnNocmlua1RvRml0KCk7CkBAIC03NzEs
MTMgKzg5OSwxMyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpy
ZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIGVsc2UKICAgICAgICAg
cmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CiAg
ICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgY29kZS5j
b2RlKCkpOworICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIG1f
c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOwogfQogCi12b2lkIFBvbHltb3JwaGljQWNjZXNz
OjphYm91dFRvRGllKCkKK3ZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoVk0mIHZt
KQogewogICAgIGlmIChtX3N0dWJSb3V0aW5lKQotICAgICAgICBtX3N0dWJSb3V0aW5lLT5hYm91
dFRvRGllKCk7CisgICAgICAgIG1fc3R1YlJvdXRpbmUtPmFib3V0VG9EaWUodm0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjkyMDMyNmRjYzkxNTQ3NGIzZjFlZWI3ZjcyNWU2
YWIzNGFlY2I0MS4uMWUzYTllNzZmZGYyZmU4OTM3MDNjZmVkMWFlZjFmMjczMTc0Nzk1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
b3B0aW1pemF0aW9uIHRvIHRoZW4gYXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBhZ2FpbiBkdXJp
bmcgdGhlIGZpeHBvaW50LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wgcHJv
cGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OwogCi0gICAgdm9pZCBhYm91dFRvRGll
KCk7CisgICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BDKHZvaWQqIHBjKSBjb25zdApAQCAt
MTk2LDYgKzE5Niw3IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICA6
IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1faGFzSlNHZXR0ZXJTZXR0ZXJD
YWxsKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNl
cHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJz
SWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNpdGVJbmRleChm
YWxzZSkKQEAgLTIyNSw4ICsyMjYsOSBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRj
aHBvaW50czsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2Vz
OwogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1faGFz
SlNHZXR0ZXJTZXR0ZXJDYWxsIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50
KENvZGVCbG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAKICAgICB2b2lk
IHJlc3RvcmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgsNyArMjUwLDcg
QEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQm
IGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKIAog
ICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3Qg
UmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBTcGlsbFN0YXRl
IHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29u
c3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdp
c3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBTcGlsbFN0YXRl
Jik7CiAgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3Qg
U3BpbGxTdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAppbmRleCBhZmQ4MzliZWI0MTZiOWJhZGQ2NjhkZGJhZDc1MTM2ZDBhMGRkNzE5Li4xY2FkNTdj
YWI5YjY2Nzc0MGRjYWZhNmJhYWE0ZGI5ZjM2ODlmNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTUyLDYgKzUy
LDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAgICAsIHByb3BlcnR5SXNJbnQzMihmYWxz
ZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2UpCiB7CisgICAgcmVncy50aGlzR1BSID0g
SW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1cmVTdHViSW5m
bygpCkBAIC0xMjAsMTEgKzEyMSwxMSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigp
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWJvdXRUb0RpZSgpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGll
KFZNJiB2bSkKIHsKICAgICBzd2l0Y2ggKG1fY2FjaGVUeXBlKSB7CiAgICAgY2FzZSBDYWNoZVR5
cGU6OlN0dWI6Ci0gICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSgpOworICAgICAgICB1LnN0dWIt
PmFib3V0VG9EaWUodm0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDYWNoZVR5cGU6OlVu
c2V0OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggMjQ2MTliYWQ3
NTI2MGRjOTJjNGE0ZDg5OTc2NmYyM2M5OGNmYzY2NS4uMmQ5OGVlOTU4NmZlZDIwMjU5NTU4ZGVk
ZTNiN2M5OWRlMWQwNzY0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTkxLDcgKzkxLDcgQEAgY2xhc3MgU3RydWN0dXJl
U3R1YkluZm8gewogICAgIHZvaWQgcmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYs
IENvZGVCbG9jayopOwogCiAgICAgdm9pZCBkZXJlZigpOwotICAgIHZvaWQgYWJvdXRUb0RpZSgp
OworICAgIHZvaWQgYWJvdXRUb0RpZShWTSYpOwogCiAgICAgREVDTEFSRV9WSVNJVF9BR0dSRUdB
VEU7CiAKQEAgLTM0NiwxNiArMzQ2LDI0IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAg
ICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9u
OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0
YXJ0TG9jYXRpb247CiAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+IG1fY29kZVB0cjsKKyAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xv
d09wZXJhdGlvbjsKKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlUHRyKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX2NvZGVQdHIpOyB9Cisg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24p
OyB9CisKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwogCi0gICAgR1BSUmVnIGJhc2VH
UFI7Ci0gICAgR1BSUmVnIHZhbHVlR1BSOworICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQ
UlJlZyB9OworICAgIEdQUlJlZyB2YWx1ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICB1bmlv
biB7CiAgICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BS
OwogICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CiAgICAgICAgIEdQUlJlZyBicmFuZEdQUjsK
ICAgICB9IHJlZ3M7CisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7CiAgICAgLy8g
RklYTUU6IFszMi1iaXRzXSBDaGVjayBpZiBTdHJ1Y3R1cmVTdHViSW5mbzo6YmFzZVRhZ0dQUiBp
cyB1c2VkIHNvbWV3aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAppbmRleCA4YWRlYWQ1MGY0NTU2Y2ZmMjVlN2M3Yzk5NzgzMDRkNDE3NzA5NzQ3Li45NjVk
YWYzMGE2OTI2NjRkMDViYTEyZDVhZTY0ZDUxZWVkMDM2NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xNTQsNiArMTU0LDEyIEBAIGNsYXNzIEpJ
VENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAgICAgICAgIG1fY2FsbHMuYXBwZW5k
KENhbGxMaW5rUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZnVuY3Rpb24pKTsKICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uQ2FsbDsKICAgICB9CisKKyAgICBDYWxsIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBDYWxsIGZ1bmN0aW9uQ2FsbCA9IGNh
bGwoYWRkcmVzcywgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2Fs
bDsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAK
aW5kZXggMDkwYjM1OThlMzliOTg0NTE3NGJlNmExMjk0MzlmNGNjNWYyNGRiNy4uNDI4ODM3NzZj
ZTZjNWY3MTEwNWI5N2NlZjZiNmY2YjZlZmYwM2I4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtNDAsNiAr
NDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgaGFuZGxlRXhp
dENvdW50cyhWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhp
dCkKIHsKKyAgICBqaXQuYWRkNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEFz
c2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZnX251bWJlck9mT1NSRXhpdHMpKTsKKyAg
ICAKICAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBub3RpY2UgdGhhdCB3ZSdyZSBmcmVxdWVudGx5IGV4
aXRpbmcKICAgICAgICAgLy8gYXQgYW4gb3BfY2F0Y2ggdGhhdCB3ZSBkaWRuJ3QgY29tcGlsZSBh
biBlbnRyeXBvaW50IGZvciwgYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggOTgxZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAw
MWJlODE2MDEyNi4uZmE0YWRhYmNmYWYwMjI5MGRkNGJmZDcxZDMwYTdmZDhjNzdjZjJlMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApA
QCAtMTg4LDYgKzE4OCw4IEBAIGNsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBs
ZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwogfTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1l
IEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCog
aml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBAIC0yNjMsNiArMjY1LDY2IEBAIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAg
ZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3Vs
dFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVu
dHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRv
cjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVibGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1
bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3Vs
dCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20sIGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVu
dCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAg
ICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Moc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQor
ICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9hcmd1bWVudHMoc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZv
KHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90
Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQgdW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRp
dmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAg
eworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOworICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAgICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVzdWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1
ZSkKKyAgICAgICAgICAgIHRoaXMtPnJlY29yZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0
aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIHN0ZDo6Z2V0PEFyZ3VtZW50c0lu
ZGV4PihtX2FyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy0+
cmVjb3JkQ2FsbChqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3Bl
cmF0aW9uQWRkcmVzcywgZXh0cmFjdFJlc3VsdCh0aGlzLT5tX3Jlc3VsdCksIHN0ZDo6Z2V0PEFy
Z3VtZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24o
aml0KTsKKyAgICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQq
IGppdCkgZmluYWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjpt
YWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4u
Lj4+Ojp2YWx1ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1
bmN0aW9uVHlwZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2Fy
Z3VtZW50czsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFt
ZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9t
LCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJl
ZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRk
cmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0
VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHVi
SW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNw
aWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVz
dWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Ms
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRz
Li4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBz
dHViSW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24s
IE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVz
dWx0LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZiAvLyBFTkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggODgxOWI0YzE1OTI0MjEwZWZlZDVkNWJhOWMyNTZj
ZWQxMmRhNGE4MS4uYTZhYTliZWMwZGU0MjNmMWFiYWViZWMyNjUxNDFlMmZkMjA0ZmJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTEwMjYsMjQgKzEwMjYsMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQo
Tm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBz
dHViSW5mby5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKLSAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1Nw
aWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlw
ZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8o
dGhpcyk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2Up
OwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLmdwcigpOwogICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKQEAgLTEwNTEsNyArMTA1NSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAg
ICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGws
IE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xMDY3LDI3ICsxMDcxLDMxIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
KQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBD
ZWxsVXNlOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlzKTsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3By
KCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLmdwcigpOworICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdw
cigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAK
ICAgICAgICAgYmFzZS51c2UoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0
UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBE
b250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNz
VHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9y
bWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1Yklu
Zm8odGhpcyk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
LQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKwor
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CkBA
IC0xMDk2LDcgKzExMDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZs
dXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAot
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxs
LCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTExMTEsMTQgKzExMTksMTUgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJ
ZChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2Vs
bFVzZSkgeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotCiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCk7CkBAIC0xMTI5LDE5ICsxMTM4LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAKICAgICAgICAgSklURGVsQnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICNlbmRpZgogCiAgICAgICAgIG1faml0LmFk
ZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMTcwLDIyICsxMTgwLDIzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywg
bm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1
bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisg
ICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLmdwcigpOwogICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBr
ZXkuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOwogCisgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisKICAgICAgICAgaWYgKG5lZWRz
VHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKQEAgLTExOTUsMTkg
KzEyMDYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCBy
ZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hH
UFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
ICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwpAQCAtMTIzNiw5ICsxMjQ4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxl
dGVCeVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KE5vZGUqIG5vZGUpCiB7CisgICAgR1BSVGVtcG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwog
CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogCkBAIC0xMjQ5LDEzICsxMjYzLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCiAgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVy
cywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MpOworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKLSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAotICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplLAorICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFPcHRp
b25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisKKyAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAogICAgICAgICBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCkpOworICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKIAogICAgIG1faml0LmFkZEluQnlJZChn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNs
b3dQYXRoKSk7CkBAIC0zNTE5LDkgKzM1MzcsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMK
IHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gR2V0
UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9ncmFw
aC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxhdGVT
eW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBHUFJUZW1wb3Jhcnkgc3R1Yklu
Zm8odGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAg
R1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFwaC5j
aGlsZChub2RlLCAxKSk7CisKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENh
bGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3Jp
Z2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMzUzMywyMiArMzU1NywyMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVl
UmVncyBiYXNlLCBKUwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0
LnJlZ3MoKSk7CisgICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQ
Uik7CiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFrZVNs
b3dQYXRoQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKLSAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksCisgICAgYXV0byBtYWtlU2xvd1BhdGhJQ0NhbGwgPSBbJl0oYXV0byBiYXNl
KSB7CisgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICByZXN1bHQu
cmVncygpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAogICAgICAgICAgICAgYmFzZSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CiAgICAgfTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNl
SXNLbm93bkNlbGwKLSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJh
c2UpOworICAgICAgICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlLnBheWxvYWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2Up
OwogCiAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzU2MCwyOCArMzU4NCwz
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUq
IG5vZGUpCiB7CiAgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkg
ewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhp
cyk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGls
ZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3By
KCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29t
cGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRD
b21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlzKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0
ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwog
ICAgICAgICBicmVhazsKQEAgLTM2ODAsMjkgKzM3MDgsMzIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBHUFJUZW1w
b3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworCisgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
Ci0KLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmlu
ZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAogICAgIC8vIHRvIGNoZWNrIGl0IGhl
cmUuCiAgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVm
aW5lKCkgPyBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJl
Y3RQcml2YXRlRmllbGRTZXQ7Ci0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2Rl
OjpzdHJpY3QoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CisgICAgR1BSVGVt
cG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3By
KCk7CiAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAg
ICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3lt
Ym9sKG5vZGUtPmNoaWxkMigpLCBicmFuZEdQUik7CkBAIC0zNzE3LDE1ICszNzQ4LDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQog
CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZh
dGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCkt
PnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNzM2
LDkgKzM3NjgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJy
YW5kKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJy
YW5kKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAt
Mzc1MSwxNSArMzc4NSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0
ZUJyYW5kKE5vZGUqIG5vZGUpCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsK
ICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVC
cmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAorICAgICAgICBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKIAogICAgIG1faml0LmFkZFBy
aXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zODc3LDIxICszOTEyLDIxIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1
bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZG
b3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVn
IHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nh
c2UpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZh
bHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90
eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQ
UiwKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09i
amVjdCB8IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAg
ICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoc2xvd0Nhc2UpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAogICAgICAgICBw
cm90b3R5cGVSZWdzKTsKICAgICAKICAgICBtX2ppdC5hZGRJbnN0YW5jZU9mKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwpAQCAtMzkwMyw2ICszOTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAgICAmJiBub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1Yklu
Zm8odGhpcyk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTEwLDEzICszOTQ2LDE0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIo
dGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyBwcm90b3R5cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAg
ICAgICAgIAotICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMo
bm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCBy
ZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAg
IAogICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAg
ICByZXR1cm47CkBAIC0zOTI2LDEyICszOTYzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgp
LCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgREZH
X0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7CiAgICAgCisgICAgR1BSVGVtcG9yYXJ5IHN0dWJJbmZvKHRoaXMpOwogICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVl
T3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAg
ICAgCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8uZ3ByKCk7CiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBw
cm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0zOTQ3LDcg
KzM5ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBu
b2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNo
SWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9y
Q2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZvckNl
bGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHViSW5mb0dQ
Uiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAogICAgIGRvbmUu
bGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CkBAIC0xMjk3Nyw0NiArMTMwMTYsNTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRv
SW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlz
KTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHVi
SW5mby5ncHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBu
b2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAg
IGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1
dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAo
KSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogeworICAgIEdQUlRlbXBvcmFyeSBz
dHViSW5mbyh0aGlzKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERp
cmVjdChOb2RlKiBub2RlKQogeworICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbyh0aGlzKTsKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5n
cHIoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGly
ZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ2
NDgsMTggKzE0NjkzLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlw
ZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChz
cGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hl
ZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgog
ICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KHZhbHVlUmVncywgZmFsc2UpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNjcmF0
Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKQEAgLTE0NjY3LDEwICsxNDcxMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgaWYgKHNsb3dQYXRoVGFy
Z2V0LmlzU2V0KCkpCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICBhdXRvIHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9u
KCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCiAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDk3MTc1
MjI4ZjYyZGE3MzUwMDIxMGVmZDJjZWNjYTk1ODJiNjgwMmQuLjY3OWI3MGI4OTRhOWYwY2ZkMjJi
M2M0MDc0YjcyZTQ4MTkzYjgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTcxOSwxNiArNzE5LDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKIAogICAgIHZvaWQgY29tcGlsZUNoZWNrRGV0YWNoZWQoTm9kZSopOwogCi0gICAgdm9p
ZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Ms
IEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9k
ZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgp
LCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRC
eUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lk
IGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZh
bHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRv
U3BpbGwpOwogICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lk
IGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BS
UmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1
bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2
b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1
bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7
CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1Bh
dGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQ
Uk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJS
ZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAg
dm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJP
ck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQ
UlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBh
eWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlz
dCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwor
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFn
R1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25l
LCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1
bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNv
bnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6
SnVtcExpc3QoKSk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQoTm9kZSop
OwpAQCAtNzQ5LDcgKzc0OSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGdl
bmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgYm9vbCBnZW5lcmljSlNWYWx1ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9
IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSos
IEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyBy
ZXN1bHRHUFQsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CisgICAgdm9pZCBjb21w
aWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFu
Y2VPZihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSopOwpAQCAtOTQ3LDYgKzk0
NywyNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdHlwZW5hbWUgUmVzdWx0UmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVu
YWJsZV9pZl90PAorICAgICAgICBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVz
dWx0LAorICAgIEpJVENvbXBpbGVyOjpDYWxsPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGFkZHJlc3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVy
YXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJl
c3Mub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAg
ICAgICFGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIEpJVENv
bXBpbGVyOjpDYWxsPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFk
ZHJlc3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
Rm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3MsIGFyZ3MuLi4pOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRp
b25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CiAgICAgICAgIC8v
IERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVyLgpAQCAtOTg2LDYg
KzEwMDYsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gbV9qaXQu
YXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBw
ZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHBy
ZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdp
bihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICByZXR1cm4gbV9qaXQu
YXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBl
bmRPcGVyYXRpb25DYWxsKGNvbnN0IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gZnVuY3Rp
b24pCiAgICAgewogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CkBAIC0xMDA4LDYg
KzEwMzUsMTQgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gY2FsbDsK
ICAgICB9CiAKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlm
IChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBjYWxsOworICAgIH0K
KwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAg
ICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCmluZGV4IDI1MjlkZmZmMTE4NzczZTIwMWNkOGEzOWY3ZjczNTBkODM3Y2IwZDguLjVjNTg1
OWE4NDI0YTAwMDg1ODU5MGEzYzI2ZDFiOTM1YmE3OTUyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjA4LDE5
ICsyMDgsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICBKSVRD
b21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIGlmIChzbG93UGF0aFRhcmdldC5pc1Nl
dCgpKQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKLSAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VT
aGFyZWRJQygpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAg
IGlmIChiYXNlVGFnR1BST3JOb25lID09IEludmFsaWRHUFJSZWcpIHsKLSAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJp
YXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksCisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlw
ZSksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZVBheWxvYWRHUFIpLAogICAgICAgICAgICAgaWRlbnRpZmllci5y
YXdCaXRzKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRC
eUlkRnVuY3Rpb24odHlwZSksCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1Zh
bHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwK
KyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiks
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5v
bmUsIGJhc2VQYXlsb2FkR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KIAogICAg
IG1faml0LmFkZEdldEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yNDcsOSArMjQ4LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBpZiAoYmFzZVRh
Z0dQUk9yTm9uZSA9PSBJbnZhbGlkR1BSUmVnICYmIHRoaXNUYWdHUFIgPT0gSW52YWxpZEdQUlJl
ZykgewotICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgICAg
ICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLAorICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZVBheWxvYWRHUFIpLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUodGhpc1BheWxvYWRHUFIpLAogICAgICAgICAgICAgaWRlbnRpZmllci5yYXdC
aXRzKCkpOwpAQCAtMjU3LDkgKzI1OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWRXaXRoVGhpcygKICAgICAgICAgQVNTRVJUKGJhc2VUYWdHUFJPck5vbmUgIT0gSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgIEFTU0VSVCh0aGlzVGFnR1BSICE9IEludmFsaWRHUFJSZWcpOwog
ICAgICAgICAKLSAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwg
YmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiks
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2Fs
bCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQ
Uk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5
bG9hZEdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRH
ZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yMzU1LDkgKzIzNTYsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncyk7Cisg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1
YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0
QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlUmVncywgcHJvcGVydHlSZWdzKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCBlMTY1YTQ4ODI5YWUwYzAyNGFiYjgyMzZiMDFkN2MxZTAzNTI0ZjI2Li4yOTJmMDg1
ZmExYzM2ZDMxOGEyMWE4ZWQ0MjdlZmFjZTIyYzc2ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE0NywxMiArMTQ3LDEy
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIH0K
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdp
biwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxS
ZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3Rl
cnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdp
biwgYmFzZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwg
bW9kZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3Vs
dC5ncHIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0
eXBlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7
CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsK
QEAgLTE2MCwyNiArMTYwLDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAgIC8v
IFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBu
ZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBm
YWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAg
ICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAg
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQ
UiwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93
UGF0aFRhcmdldCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAor
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24o
dHlwZSksCiAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hl
Y2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYg
c2xvd1BhdGhUYXJnZXQpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIs
IEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0
KQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFu
ZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9z
dHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVz
ZWRSZWdpc3RlcnMoKTsKQEAgLTE4NywyMCArMTg5LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSCiAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgIHVzZWRSZWdp
c3RlcnMuc2V0KHRoaXNHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRH
UFIsIGZhbHNlKTsKKyAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwog
ICAgIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCiAgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRp
ZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQ
Uik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRh
cmdldCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlm
ICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCisgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKICAgICAgICAgRG9udFNw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BS
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkp
OwogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0yNjgx
LDE2ICsyNjg1LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwotCisgICAgICAg
ICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJvcGVydHkp
OworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAorICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworCiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAg
ICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMo
KTsKQEAgLTI3MDEsNyArMjcwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAg
ICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+
cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDExICsyNzE5LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTM5ODQsOSArMzk5MiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogewogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UgJiYgbm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHVi
SW5mbyh0aGlzKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gc3R1YkluZm8u
Z3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC0zOTk0
LDE1ICs0MDA1LDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3R1YkluZm8odGhpcyk7CiAgICAgICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRo
aXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlz
VmFsdWUuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBzdHViSW5mby5n
cHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
QEAgLTQwMTMsNyArNDAyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENl
bGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlk
V2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJl
c3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2Vs
bExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAppbmRleCA3MjAxMmI2YzRlMzRjNzg3OGE4NzRhZmZjNWE1MTQyZDA1MTc5
NzZlLi45N2NiYmVlMzcwNzFhMGY0NDVkMGRkODU5N2JlNjAxYjc2NTE2YjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTcyLDYgKzM5
NzIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKIAogICAgICAgICBSZWZQ
dHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBh
dGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC0zOTkzLDEwICszOTk0LDEx
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBh
cmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJh
bXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gcGFyYW1z
LmdwU2NyYXRjaCgwKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlH
UFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAgICAgICAg
ICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQwMTAsMTMgKzQwMTIsMTYgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BS
LAogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00
MTA0LDYgKzQxMDksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKIAogICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC00MTI0LDEw
ICs0MTMwLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0g
cGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gcGFyYW1z
LmdwU2NyYXRjaCgwKTsKIAogICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NU
eXBlLAotICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQx
NTMsMTMgKzQxNjAsMTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAg
IGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygm
aml0KTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0
ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9w
cmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BS
LCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgIGppdC5qdW1wKCku
bGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTAsNiArNDUy
MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKIAogICAgICAgICAvLyBGSVhNRTogSWYg
dGhpcyBpcyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9s
YXRpbGUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUyODQ4CkBAIC00NTMyLDEwICs0NTQzLDEyIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVyIGNhbGwgSUNzIGdlbmVyYXRlZCBi
eSB0aGUgUHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJ
bmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0
QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhw
YXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21h
TW9kZSwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwg
c3R1YkluZm9HUFIsIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2Rl
LAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAtNDU0NSwxMyArNDU1OCwxNiBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbmVy
YXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJS
ZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkp
LmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOwogCkBAIC01MjMzLDYgKzUyNDksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAKICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50
RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTUyNTMsMTAgKzUyNzAsMTEgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBd
LmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigp
OwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsK
KyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDAp
OwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5l
cmF0b3I+OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwK
LSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJl
c3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNW
YWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJvcGVydHlJc1N0cmluZzsK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9
IHByb3BlcnR5SXNJbnQzMjsKQEAgLTUyNzQsMTMgKzUyOTIsMTYgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxP
cHRpbWl6ZTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5
VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAogICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpA
QCAtNTgzMCw3ICs1ODUxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVy
VGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7Cisg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7CiAKICAgICAgICAg
UmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAg
ICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC01
ODUwLDkgKzU4NzEsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAg
IGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAg
ICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgYXV0
byBzdHViSW5mb0dQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICAgICAgYXV0
byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZS5ncHIoKSAhPSByZXR1cm5HUFIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
LmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGJhc2UuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVy
bkdQUiAhPSBzY3JhdGNoR1BSKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKQEAgLTU4NjgsNyArNTg5MSw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
a2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gcGFyYW1zWzJdLmdwcigpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5i
cmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CkBAIC01
ODgwLDE3ICs1OTAzLDE4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiks
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+
OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJh
bXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQs
IEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwotICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAg
cGFyYW1zLmFkZExhdGVQYXRoKApAQCAtNTg5OSwxMSArNTkyMywxMyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdp
biA9IGppdC5sYWJlbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BS
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgcmV0dXJuR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIGJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxs
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKIApAQCAtMTIyMjQsOCArMTIyNTAsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRh
ZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC0xMjI0MiwxMCArMTIyNjgsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFy
YW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmll
ciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHBhcmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTIyNTQsMTMgKzEyMjgyLDE2IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtMTI0Njgs
NyArMTI0OTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIocHJvdG90eXBlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOworICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSAzOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJh
aW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAg
ICAgCkBAIC0xMjQ4Miw4ICsxMjUxMyw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDIpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lSnVtcDsKICAg
ICAgICAgICAgICAgICBpZiAoIXZhbHVlSXNDZWxsKSB7CkBAIC0xMjUwNiw3ICsxMjUzOCw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
YXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIs
CisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1
bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLAog
ICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmplY3QpOwogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTI1MTks
MTEgKzEyNTUxLDEzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0g
aml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCByZXN1bHRHUFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIHZhbHVlR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlw
ZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTEzOTY4LDYgKzE0MDAy
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRC
eUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5j
ZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxl
IHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91
Z2gsIHNpbmNlIHRoZQpAQCAtMTM5OTYsMTAgKzE0MDMxLDEyIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1z
LCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDEwLDEz
ICsxNDA0NywxNiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlJZEZ1bmN0aW9uKHR5cGUpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRp
b25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJh
bXNbMF0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7
CiAKQEAgLTE0MDQyLDggKzE0MDgyLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1ZSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQog
ICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdp
c3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7
CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhh
bmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CkBAIC0xNDA2NSwxMCArMTQxMDUsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxT
aXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gcGFyYW1z
LmdwU2NyYXRjaCgwKTsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNW
YWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDA3OSwxMyArMTQxMjEs
MTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1
bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
dHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0
aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFd
LmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNb
MV0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4
IDJhZGQ0OTRjNTMyYWFlYThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFl
NzkyNmM2YTA3MTgzNzMxNTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4Owog
CiBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBH
UFJSZWcgcmV0dXJuUmVnaXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0Nh
bGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlciwg
R1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAg
ICwgbV9udW1BcmdzKG51bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lz
dGVyKQpAQCAtNjMsNiArNjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxD
b250ZXh0KAogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVu
dFJlZ2lzdGVycyk7CiAgICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAg
ICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKKyAgICBpZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RD
YWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmls
dGVyKHVzZWRSZWdpc3RlcnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxp
bmdDb252ZW50aW9uUmVnaXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxs
Q29udGV4dDo6flNsb3dQYXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1Bh
dGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGNhbGxUYXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5r
U2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAg
IHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJn
dW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQ
YXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwg
bnVsbHB0ciwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsK
IH0KIAogU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwy
MiBAQCBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xv
d1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGNhbGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtl
eVdpdGhUYXJnZXQoY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQ
YXRoQ2FsbChtX2ppdC5jYWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFk
ZExpbmtUYXNrKAorICAgICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRo
dW5rID0KKyAgICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5r
KHZtLCByZXN1bHQua2V5KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0
LmNhbGwoKSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkp
OworICAgICAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4pCiB7CiAgICAgaWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlm
M2ZhODBjMTJhLi5kNmYyODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1
NCwxNyBAQCBjbGFzcyBTbG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhp
bmd5IHRoYXQgd2lsbCBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0
cyBhbmQgc3VjaC4KIGNsYXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNs
b3dQYXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJz
JiwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0
aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVu
c2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2Fs
bFRhcmdldFJlZ2lzdGVyKTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8g
Tk9URTogVGhlIGNhbGwgdGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBs
aW5rZWQgYnkgdGhlIEpJVCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlz
IG5vIG5lZWQgZm9yIHlvdSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBt
YWtlQ2FsbChWTSYsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7Cisg
ICAgU2xvd1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAog
cHJpdmF0ZToKICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBr
ZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVn
aXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdD
b252ZW50aW9uUmVnaXN0ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9w
ZXJhdGlvbigKIHsKICAgICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQ
YXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1
bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQg
Y29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEs
IHJlc3VsdEdQUiwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2
b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29u
dGV4dC5tYWtlQ2FsbCh2bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAg
U2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4u
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2Fs
bCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRp
b25UYXJnZXQsCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVz
dWx0R1BSLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwg
Y2FsbDsKKyAgICB7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVn
aXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbDx2b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAg
ICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpub25BcmdHUFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4
Y2VwdGlvblRhcmdldCkKKyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRF
eGNlcHRpb25DaGVjayh2bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAg
Vk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBq
aXQsIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BS
UmVnIHJlc3VsdEdQUiwKKyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBp
ZiAoY2FsbFNpdGVJbmRleCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVy
YXRpb24odm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwg
cmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0
ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMm
IGppdCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qq
IGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcg
cmVzdWx0LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9w
ZXJhdGlvbigKKyAgICAgICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0
ZUluZGV4Rm9yQ29kZU9yaWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwg
ZnVuY3Rpb24sCisgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZj
NjIwMzNhODM5MDhlNmZjYzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3
MmJlZjU1MTNlZmU1YWEzOWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsS2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNl
ZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBS
YXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRS
ZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgi
PHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zm
c2V0LCAiLCBpbmRpcmVjdE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJn
ZXQgPSAiLCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwg
YXJndW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGxLZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEz
ODQyYmRkMzNkLi4wY2U2MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUx
LDExICs1MSwxMiBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRo
Q2FsbEtleSgKICAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdp
c3RlcnMsCi0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZz
ZXQsIGludDMyX3QgaW5kaXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNl
dCkKICAgICAgICAgLCBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25Q
dHJUYWc+KCkpCiAgICAgICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVy
cykKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNl
dChpbmRpcmVjdE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBA
IGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVu
dFJlZ2lzdGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldDsgfQorICAgIGludDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGlyZWN0T2Zmc2V0OyB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0
KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1
bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxL
ZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZz
ZXQoKSwgaW5kaXJlY3RPZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtl
eSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDog
bV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zm
c2V0KDApCiAgICAgewogICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZh
bHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZh
bHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4
ICs5MywyMCBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fdXNlZFJlZ2lzdGVycyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYm
IG1fY2FsbFRhcmdldCA9PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zm
c2V0ID09IG90aGVyLm1fb2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIu
bV9vZmZzZXQKKyAgICAgICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRp
cmVjdE9mZnNldDsKICAgICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNo
KG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICBy
ZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2Fs
bFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNl
dDsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwog
ICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lz
dGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAg
IHB0cmRpZmZfdCBtX29mZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQg
eyAwIH07CiB9OwogCiBzdHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggYTU3ODc1OWMwMGZiNDY5Mjg3YTYyMTc2NGFl
MGE2ZGNlOTg0OWViZC4uNjIwNmI4ZjIwMGQ4ZjQzYWQ2MzU5YTc5NjE5MWRmYzY5YzQ1MTM1MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2Vu
ZXJhdGlvblRodW5rR2VuZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIp
OwogICAgIAogICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRj
aCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5v
bkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MSk7CiAKICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5l
cmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRv
dWJsZSk7CiAgICAgfQogICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFy
Z0dQUjAsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXku
YXJndW1lbnRSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXku
YXJndW1lbnRSZWdpc3RlcnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAg
IGRvbnRDbG9iYmVyLnNldChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2Ji
ZXJDaGVjayhqaXQsIFdURk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhl
bHBlcnM6OkNhbGwgY2FsbDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2Fs
bCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0g
aml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5p
bmRpcmVjdE9mZnNldCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIGtleS5vZmZzZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAg
ICAgaml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNl
cnZlZE5vblJldHVybkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNv
bnN0IFMKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcGF0Y2hC
dWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJn
ZXQoKSkKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJG
VEwgc2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmlu
ZGV4IDkzNDE0ZDFmYzdjYmMwZWZlZWM0ZTNiYWY3NzdjN2ZmZWQ3OTEyMDUuLmEwYWM0ODZmNDRm
NWM1YzA4NGQ4NjQ0ZjA0ODExZjA4YzU1YmNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKQEAgLTY1MSw3ICs2NTIsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1p
dFZpcnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAog
ICAgIGFkZExpbmtUYXNrKAogICAgICAgICBbPSwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sICppbmZvKTsKLSAgICAgICAg
ICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1
YWxUaHVuaywgdm0pKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRT
dHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkpOwogICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPih2aXJ0dWFsVGh1bmsuY29kZSgpKSk7CiAgICAgICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjhiMTIxM2Y2ZDI0YzcwYWZiNTAzMzIw
ZWFhNzJkODllN2Q4NmJlOS4uZTkwOTZiNTc3M2YzMjE3MzE2OWU3M2ZhZTM0MTExODg2OTg5N2Vh
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC0yMDcsNyAr
MjA3LDcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAK
ICAgICAvLyBleHRyYUdQUkFyZ3MgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlw
ZXMgcGFzc2VkIGluIHJlZ2lzdGVyIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgogICAgIC8vIGV4
dHJhUG9rZSBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgb24g
dGhlIHN0YWNrLgotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2U+CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KICAgICBzdHJ1Y3QgQXJnQ29sbGVj
dGlvbiB7CiAgICAgICAgIEFyZ0NvbGxlY3Rpb24oKQogICAgICAgICB7CkBAIC0yMTksOCArMjE5
LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAg
ICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucy5maWxsKEludmFsaWRHUFJSZWcpOwogICAgICAgICB9
CiAKLSAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQgYywg
dW5zaWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZz4KLSAgICAgICAg
QXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGc+JiBvdGhlcikK
KyAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQgYywgdW5z
aWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZywgdW5zaWduZWQgaD4K
KyAgICAgICAgQXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGcs
IGg+JiBvdGhlcikKICAgICAgICAgewogICAgICAgICAgICAgZ3ByU291cmNlcyA9IG90aGVyLmdw
clNvdXJjZXM7CiAgICAgICAgICAgICBncHJEZXN0aW5hdGlvbnMgPSBvdGhlci5ncHJEZXN0aW5h
dGlvbnM7CkBAIC0yMzAsNjUgKzIzMCw3NCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zID0gb3RoZXIu
Y3Jvc3NEZXN0aW5hdGlvbnM7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhH
UFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2Vz
W251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGlu
YXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3Vt
ZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVn
QXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAx
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBy
ZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZnByU291cmNlc1tudW1GUFJTb3Vy
Y2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmZwckRlc3RpbmF0aW9uc1tudW1G
UFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVn
IGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAx
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcg
YXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMgKyAxLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlz
KTsKIAogICAgICAgICAgICAgcmVzdWx0LmNyb3NzU291cmNlc1tudW1Dcm9zc1NvdXJjZXNdID0g
YXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NEZXN0aW5hdGlvbnNbbnVtQ3Jvc3NT
b3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyAr
IDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmco
R1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0
cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3Vs
dCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNd
ID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNv
dXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHB1c2hO
b25BcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4gcmVz
dWx0KCp0aGlzKTsKKworICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNl
c10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BS
U291cmNlc10gPSBkZXN0aW5hdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKworICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4g
YWRkR1BSRXh0cmFBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJFeHRyYUFyZygpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4g
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BS
UmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQorICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Mg
KyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMp
OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDE+IGFk
ZFBva2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOworICAgICAgICAg
ICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKICAgICAgICAgfQogCiAjaWYgT1MoV0lORE9X
UykgJiYgQ1BVKFg4Nl82NCkKQEAgLTMzMSwxMiArMzQwLDE0IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1bnNp
Z25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQo
dW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewogICAgICAgICAvLyBDbGFu
ZyBjbGFpbXMgdGhhdCBpdCBjYW5ub3QgZmluZCB0aGUgc3ltYm9sIGZvciBGUFJSZWcvR1BSUmVn
OjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHdoZW4gdGhleSBhcmUgcGFzc2VkIGRpcmVjdGx5
IHRvIHN0ZDo6bWF4Li4uIHNlZW1zIGxpa2UgYSBidWcKICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
czsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKIAorICAgICAgICBVTlVTRURfUEFSQU0obm9u
QXJnR1BScyk7CisKICAgICAgICAgY3VycmVudEdQUkFyZ3VtZW50ICs9IGV4dHJhR1BSQXJnczsK
ICAgICAgICAgY3VycmVudEZQUkFyZ3VtZW50IC09IG51bUNyb3NzU291cmNlczsKICAgICAgICAg
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCkBAIC0zNTAsMTUgKzM2MSwxNSBA
QCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmdUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBw
b2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwg
dW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJB
cmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1
bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25l
ZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1
cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJB
cmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9r
ZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2lnbmVkIHBva2VP
ZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQ
UkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlKTsKICAgICAgICAgcmV0dXJuICEocG9rZU9mZnNldCAmIDEpOwogICAgIH0KIApAQCAt
Mzc2LDggKzM4Nyw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9wdGltaXphdGlv
biB0aW1lIGV4cGxvc2lvbiBhc3NvY2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBpbiByZWN1cnNp
dmUgdGVtcGxhdGVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUs
IHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1h
cnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9N
U1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
UmVnVHlwZSBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVzaW5nIEluZm9UeXBl
ID0gSW5mb1R5cGVGb3JSZWc8UmVnVHlwZT47CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEluZm9UeXBlOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwpAQCAtMzkyLDMxICs0
MDMsMzEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJs
ZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91Ymxl
Iik7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFy
Z3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4u
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1Zh
bHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3Rl
cjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBh
cmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CkBAIC00MjQs
OCArNDM1LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7
CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQ
UykKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJX
ZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKIApAQCAtNDY5
LDI1ICs0ODAsMjUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQgPCBudW1iZXJP
ZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsg
MSwgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkU3RhY2tBcmcoYXJnKS5h
ZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5k
aWYKIAogICAgICAgICAvLyBPdGhlcndpc2UgcGFzcyBGUCBhcmd1bWVudCBvbiBzdGFjay4KLSAg
ICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAgcG9rZUZvckFy
Z3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdz
Li4uKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihDVVJSRU5U
X0FSR1VNRU5UX1RZUEUpIDw9IDQ+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
R1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3Mu
YXJnQ291bnQoYXJnKTsKQEAgLTQ5NywzNCArNTA4LDM0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBh
cmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgcG9rZUFyZ3VtZW50
c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVu
YW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBwb2tlQXJndW1l
bnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJy
ZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQUkluZm86OnJlZ1QwKTsKIAog
ICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50ICsgMSA9PSBudW1BcmdSZWdpc3RlcnMpIHsKLSAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4u
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlICsgMSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDIpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlICsgMik7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdzLi4u
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJS
RU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5
bG9hZCwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0
ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWdu
ZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChwYXlsb2FkLmdwcigp
KTsKQEAgLTU0NCw5ICs1NTUsOSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1i
bHlIZWxwZXJzIHsKICAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIHBheWxvYWQuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1l
PENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVn
cyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2ln
bmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnLnRhZ0dQUigp
KTsKQEAgLTU2OSwxMSArNTgwLDExIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogI2VuZGlmIC8vIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQUykKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxUcnVz
dGVkSW1tLCBBcmc+Ojp2YWx1ZQogICAgICAgICB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPEFyZywg
VHJ1c3RlZEltbT46OnZhbHVlPiAvLyBXZSBoYXZlIHRoaXMgc2luY2UgREZHU3BlY3VsYXRpdmVK
SVQgaGFzIGl0J3Mgb3duIGltcGxlbWVudGF0aW9uIG9mIFRydXN0ZWRJbW1QdHIKLSAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgb25seSBzdXBwb3J0cyBub24t
ZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlIGFyZ3VtZW50cyBzaW5jZSB3ZSBuZXZlciBjYWxsIG9w
ZXJhdGlvbnMgd2l0aCBub24tcmVnaXN0ZXIgdmFsdWVzLgogICAgICAgICAvLyBJZiB3ZSBldmVy
IG5lZWRlZCB0byBzdXBwb3J0IGltbWVkaWF0ZSBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMgd2Ug
d291bGQgbmVlZCB0byBkdXBsaWNhdGUgdGhpcyBsb2dpYyBmb3IgYm90aCB0eXBlcywgd2hpY2gg
c291bmRzCkBAIC01OTEsNDYgKzYwMiw0NiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJs
ZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBBcmc+
Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0
KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW0zMihhcmcpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFi
bGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJn
Pjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPT0g
OCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tNjQoYXJnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+
Ojp2YWx1ZQogICAgICAgICAmJiAoKHN0ZDo6aXNfcG9pbnRlcjxBcmc+Ojp2YWx1ZSAmJiBzdGQ6
OmlzX2NvbnZlcnRpYmxlPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcG9pbnRlcl90
PEFyZz4+KiwgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpCiAgICAgICAgICAgICB8fCBz
dGQ6OmlzX3NhbWU8QXJnLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVlKT4KLSAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgLy8gU3Bl
Y2lhbCBjYXNlIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZSBiZWNhdXNlIGl0J3MgcmVhbGx5IGFu
bm95aW5nIHRvIGRlYWwgd2l0aCBvdGhlcndpc2UuLi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgog
ICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1l
PENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgU3RydWN0dXJlKj46OnZhbHVlCiAgICAgICAgICYmIHN0
ZDo6aXNfc2FtZTxBcmcsIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVlPgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcuZ2V0KCkpLCBhcmdzLi4uKTsKICAgICB9
CkBAIC02MzksOCArNjUwLDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAjdW5kZWYgUkVTVUxUX1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVw
IHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkg
PT0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3MsICJPbmUgbGFzdCBzYW5pdHkgY2hlY2siKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjU1LDMxICs2NjYsNDQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVtRlBS
U291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4o
YXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUZQUlNv
dXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAgfQogCi1wdWJs
aWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFbnRyeUlt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1
c2luZyBGaXJzdEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD47CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19zYW1lPEZpcnN0QXJndW1lbnRUeXBlLCBDYWxsRnJhbWUqPjo6dmFsdWUpIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBm
b3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4u
CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVj
ayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncywgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOwor
ICAgICAgICB9IGVsc2UgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJC
YXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAgICAgICB9Cisg
ICAgfQogCi0jZGVmaW5lIEZJUlNUX0FSR1VNRU5UX1RZUEUgdHlwZW5hbWUgRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPgorcHVibGljOgogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEZJUlNUX0FSR1VN
RU5UX1RZUEUsIENhbGxGcmFtZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdz
KQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCiAg
ICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29y
a3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJp
dC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVj
ayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAw
LCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwhc3RkOjppc19zYW1lPEZJUlNUX0FSR1VNRU5UX1RZUEUsIENhbGxGcmFtZSo+
Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChHUFJSZWcgZnVuY3Rpb25HUFIsIEFy
Z3MuLi4gYXJncykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhpcyBv
bmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5n
cyB1cCBmb3IgMzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJCYXNpYyBz
YW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
LCAwLCAwPigpLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3Bl
cmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hO
b25BcmcoZnVuY3Rpb25HUFIsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKICAgICB9
CiAKLSN1bmRlZiBGSVJTVF9BUkdVTUVOVF9UWVBFCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoQWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihB
cmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCkucHVzaE5vbkFyZyhhZGRyZXNz
LmJhc2UsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKKyAgICB9CiAKICAgICB2b2lk
IHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKaW5k
ZXggZjdhYTMyOWZlMjVkMTljNzM3MTg0NzBhZWZmYjNiNGFhZWEwNWRiNi4uMzhkY2Y2MzU3NzAy
YjVhOWU2NDYzNWMzZDA0MjhlOTU0MTE0N2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb25EYXRhLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgpAQCAtMzksOCArNDAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCisgICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBW
ZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiBrZXlzKQogICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkK
KyAgICAsIG1fdm0odm0pCisgICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkKIHsKICAgICB2bS5o
ZWFwLm1faml0U3R1YlJvdXRpbmVzLT5hZGQodGhpcyk7CiB9CkBAIC00OSw2ICs1MiwxMCBAQCBH
Q0F3YXJlSklUU3R1YlJvdXRpbmU6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSB7IH0KIAogdm9p
ZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogeworICAgIGF1
dG8gaXRlciA9IG1fdm0ubV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5maW5kPFNoYXJlZEpJVFN0
dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yPih0aGlzKTsKKyAgICBpZiAoaXRlciAhPSBtX3ZtLm1f
c2hhcmVkSklUU3R1YnMtPm1fc3R1YnMuZW5kKCkpCisgICAgICAgIG1fdm0ubV9zaGFyZWRKSVRT
dHVicy0+bV9zdHVicy5yZW1vdmUoaXRlcik7CisKICAgICBpZiAobV9pc0pldHRpc29uZWQpIHsK
ICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Igd2hlbiB0aGUgc3lzdGVtIHNodXRz
IGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRoZSBKSVQgc3R1YiByb3V0aW5lIHNl
dCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8gZGVsZXRpbmcKQEAgLTc1LDkg
KzgyLDkgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmRlbGV0ZUZyb21HQygpCiB9CiAK
IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYgY29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgVmVjdG9y
PEFjY2Vzc0Nhc2VLZXk+JiYga2V5cywgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBjb25zdCBW
ZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3Mp
Ci0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pCisgICAgOiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpCiAgICAgLCBtX2NlbGxzKGNlbGxz
LnNpemUoKSkKICAgICAsIG1fY2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQog
ewpAQCAtMTA2LDkgKzExMyw5IEBAIHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6
bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRp
bmVXaXRoRXhjZXB0aW9uSGFuZGxlcigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0NlbGwqIG93bmVy
LCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxM
aW5rSW5mb3MsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYgY29kZSwgVk0mIHZtLCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiBrZXlzLCAgY29u
c3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxM
aW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhj
ZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJD
YWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2
bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQorICAgIDogTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxz
LCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogICAgICwgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9u
SGFuZGxlcihjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAsIG1fY29kZU9yaWdpblBvb2woJm1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRs
ZXItPmNvZGVPcmlnaW5zKCkpCkBAIC0xMzEsNyArMTM4LDcgQEAgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGEKICNlbmRpZgogfQogCi12b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyOjphYm91dFRvRGllKCkKK3ZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4
Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUoVk0mKQogewogICAgIG1fY29kZUJsb2NrV2l0aEV4
Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTU0LDYg
KzE2MSw3IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6
Om9ic2VydmVaZXJvUmVmQ291bnQoKQogCiBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0
dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mIGNvZGUsCisgICAgVmVjdG9yPEFjY2Vzc0Nhc2VLZXk+JiYga2V5cywKICAgICBW
TSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBib29sIG1ha2VzQ2FsbHMsCkBA
IC0xNjUsMTggKzE3MywxOCBAQCBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKAogICAgIGlmICghbWFrZXNDYWxscykgewogICAgICAgICAvLyBBbGxvY2F0aW5nIENhbGxM
aW5rSW5mb3MgbWVhbnMgd2Ugc2hvdWxkIGhhdmUgY2FsbHMuCiAgICAgICAgIEFTU0VSVChjYWxs
TGlua0luZm9zLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpJVFN0
dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVhYmxl
SklUU3R1YlJvdXRpbmUodm0sIGNvZGUsIFdURk1vdmUoa2V5cykpKTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5k
bGVycy0+aml0VHlwZSgpKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMs
IFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBl
eGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwg
V1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2Rl
QmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgp
KTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29k
ZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29k
ZSwgdm0sIFdURk1vdmUoa2V5cykpOwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywg
V1RGTW92ZShjYWxsTGlua0luZm9zKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4
IDQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQuLmJiZDY4NDUwMGZlZmYx
ZjVjNDQwNjViYzRmMmI0NjVlMzNlODk4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3Bh
Y2UgREZHIHsKIGNsYXNzIENvZGVPcmlnaW5Qb29sOwogfQogCitzdHJ1Y3QgQWNjZXNzQ2FzZUtl
eTsKIGNsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogCkBAIC01
NCwxMiArNTUsMTIgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAvLyBsaXN0IHdoaWNoIGRv
ZXMgbm90IGdldCByZWNsYWltZWQgYWxsIGF0IG9uY2UpLgogY2xhc3MgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKLSAgICBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYsIFZNJik7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIFZlY3RvcjxBY2Nlc3NDYXNl
S2V5PiYmKTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBz
dGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8
SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIFZlY3RvcjxBY2Nlc3NDYXNlS2V5PiYmIGtl
eXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoY29kZSwgdm0pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKSk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDggQEAgY2xhc3MgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAgbWFya1JlcXVp
cmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAKKyAgICBjb25zdCBWZWN0
b3I8QWNjZXNzQ2FzZUtleT4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9rZXlzOyB9
CisKICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOwogICAgIAogcHJvdGVjdGVkOgpAQCAtODEsNiAr
ODQsOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRp
bmUgewogCiAgICAgYm9vbCBtX21heUJlRXhlY3V0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNKZXR0aXNvbmVkIHsgZmFsc2UgfTsKKyAgICBWTSYgbV92bTsKKyAgICBWZWN0b3I8QWNjZXNz
Q2FzZUtleT4gbV9rZXlzOwogfTsKIAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gbWFyayBv
bmUgYWRkaXRpb25hbCBvYmplY3QgZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgpAQCAtODgsNyArOTMs
NyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUg
ewogY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUgewogcHVibGljOgogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Ci0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJh
ZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiwgY29u
c3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5m
bz4mJik7CiAgICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKICAg
ICAKIHByb3RlY3RlZDoKQEAgLTEwOSwxMCArMTE0LDEwIEBAIGNsYXNzIEdDQXdhcmVKSVRTdHVi
Um91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJl
SklUCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKIAot
ICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENv
ZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiwgY29uc3Qg
SlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4m
JiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOwogICAgIH5HQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigpIGZpbmFsOwogCi0gICAgdm9pZCBhYm91
dFRvRGllKCkgZmluYWw7CisgICAgdm9pZCBhYm91dFRvRGllKFZNJikgZmluYWw7CiAgICAgdm9p
ZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMzIsNiArMTM3
LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmlu
YWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIFJlZjxKSVRTdHViUm91dGluZT4gY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAogLy8gICAgVk0mIHZtLAorLy8gICAgVmVjdG9yPEFj
Y2Vzc0Nhc2VLZXk+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBi
b29sIG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQzLDcgKzE0OSw3IEBAIGNsYXNzIEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1h
cmtpbmdHQ0F3YXJlSklUCiAvLyB3YXkuCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklU
U3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAor
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBW
ZWN0b3I8QWNjZXNzQ2FzZUtleT4mJiBrZXlzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJv
b2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJ
bmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRp
b25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxs
U2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3
N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgw
MDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAt
NDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7
IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdU
MAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lz
dGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAo
cmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6
eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0g
QVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0
ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1
ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDk2NTZlNzQwZWVlYjhiOWRjM2RhNjNkNTY1
MzA1Y2Q1YjA4ZGE5MTAuLjY0MDU3MTgyMjMxN2U1MDdlNDVlNDExZmQ5MjQ1M2E4Y2NhMjFjNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTk0MCw2ICs5NDAsMTAgQEAgdm9pZCBK
SVQ6OmxpbmsoKQogICAgICAgICAgICAgICAgIGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAgICAg
bmV4dEhvdFBhdGhUYXJnZXQsCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOworICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgICAgICAgICBi
eVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gc2xv
d1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAg
ICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0
ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IDIyYzFjNjhhYzkxNmZmMjMyMmM4MTgwMzc2NWQ5NGE3MzA2NjkwZWYuLjZmYTZhNmQxNjQ4MWI1
MjhkNjBjZWRmN2U3NjkwMTVmYzExODBlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
MjkzLDYgKzI5MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbkNhbGw7CiAgICAgICAgIH0KIAorICAgICAgICBDYWxsIGFwcGVuZENhbGwoQWRkcmVzcyBm
dW5jdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNhbGwoZnVuY3Rpb24sIE9w
ZXJhdGlvblB0clRhZyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZf
NjQpCiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3Qg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk3
LDM5ICs0MDIsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGlu
dC1jaGVja2VkIGFuZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAg
ICAgLy8gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2Fz
ZXMuIEZhbGwtdGhyb3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdU
MCwgYW5kIGl0IGlzIG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQz
MkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIElu
dDMyU2hhcGUpOyB9Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRD
b250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAg
SnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
OworICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsg
cmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZv
LCBJbnQzMlNoYXBlKTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KTsKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5n
VHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3Qg
ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRMb2Fk
Rm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CiAKICAgICAgICAgLy8gUHJvcGVy
dHkgaXMgaW4gcmVnVDEsIGJhc2UgaXMgaW4gcmVnVDAuIHJlZ1QyIGNvbnRhaW5zIGluZGVjaW5n
IHR5cGUuCiAgICAgICAgIC8vIFRoZSB2YWx1ZSB0byBzdG9yZSBpcyBub3QgeWV0IGxvYWRlZC4g
UHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kCiAgICAgICAgIC8vIHplcm8tZXh0ZW5kZWQuIEJh
c2UgaXMgY2VsbCBjaGVja2VkLiBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4KICAgICAg
ICAgLy8gcmV0dXJucyB0aGUgc2xvdyBjYXNlcy4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5m
bywgSW50MzJTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5m
bywgRG91YmxlU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsK
ICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExp
c3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAg
ICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdT
aGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwo
T3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsK
KyAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlKTsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5
cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlw
ZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEVDTUFNb2RlIGVj
bWFNb2RlKE9wKTsKQEAgLTgzNywxMyArODQyLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKTsK
ICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlmCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlv
bihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQo
Y29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRo
UHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0
YT4KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIEFkZHJlc3MsIFZpcnR1
YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbD4KQEAgLTg1Myw2ICs4NjIsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZf
dDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4p
OworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1Zh
bHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJl
c3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAgICAgIHN0cnVjdCBpczY0Qml0VHlwZSB7
CkBAIC04NzMsNiArODkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlw
ZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7
CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBl
Pih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90IHVz
ZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJp
dHMuCisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2Vsc2UgLy8gT1Mo
V0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgQXJncy4uLiBhcmdzKQpAQCAt
ODgwLDYgKzkwNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYg
Q1BVKFg4Nl82NCkKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KQEAgLTg5MCw2ICs5MjQsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6
ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFj
cm9Bc3NlbWJsZXI6OkNhbGw+CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShNZXRh
ZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBB
cmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5k
aXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJv
ZmlsZShtZXRhZGF0YSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0
KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzLCBBcmdzLi4uIGFyZ3MpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGJhM2Y5MjI1OTY1MzJjOGEyZTJjNGU3OGRiYzcxYTgz
OGJjNDMwMGYuLmMwODBmOTI4YTBiNjg1YTFkOWI3MmU5NDMwZGRmZDk1ODExZDc5YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMzk5LDkgKzM5OSwxMCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1
c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVnVDApOwpAQCAtNDMyLDggKzQzMywx
NSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICBhdXRvIGRvbmUgPSBqdW1wKCk7CiAKICAg
ICBub3RPYmplY3QubGluayh0aGlzKTsKQEAgLTQ4MSw5ICs0ODksMTAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAg
ICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBs
KCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgp
KSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBHUFJJ
bmZvOjpub25BcmdHUFIwLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVu
ZChnZW4pOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIEpTVmFs
dWVSZWdzIHsgZG9uZUdQUiB9KTsKQEAgLTUwMCw5ICs1MDksMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICAg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
Ci0gICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICgh
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgSlNWYWx1ZVJlZ3MgeyB2YWx1ZUdQUiB9
KTsKQEAgLTUyOCwxNiArNTM4LDIzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKICAg
ICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikpOwot
ICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIp
KTsKIAogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFt
ZXMtPmRvbmUuaW1wbCgpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dl
dEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwogICAgICAgICAKICAgICAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAg
ICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAK
KyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkg
eworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbCA9IGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZG9uZVZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRv
bmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
anVtcCgpKTsKQEAgLTU1Niw4ICs1NzMsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAog
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhH
UFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggODAwNTZhZDVmYjdkYjUw
YTllZmEzYTI2M2JjMGI5YTVhNWIyOTdkNy4uYzczMWUwMTlhMjIwMjUxZDg0YzM4NTE3ZGYzZGI0
NTUzNWJlYjQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cApAQCAtNDA1LDcgKzQwNSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkp
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spLCBuZXh0UmVncyk7CkBAIC01MTMsNyArNTE0LDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAgICAgICAgICAgICBkb25lUmVncywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShtZXRhZGF0YSwgZG9uZVJlZ3MpOwpAQCAtNTQxLDcgKzU0Myw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAg
ICAgICAgICAgcmVzdWx0UmVncywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMo
KSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSwgcmVzdWx0UmVncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmlu
ZGV4IDZmYTcyNDRlZjBhMDhjOWYwNDdhMzIyMDRmNzM3ZDI5Mjg3MTkwNmYuLjNlZDk2MDIxZTcz
OGMyNmUzMmRlYzM0ZjMyZWU3NGExNThhODNjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiBjbGFz
cyBWTTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBI
b3N0Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVKSVQsCi0g
ICAgREZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0Q2FsbFRo
dW5rID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJhc2VsaW5l
SklUID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIxMDEsCiB9
Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7CitzdGF0aWNf
YXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWlu
Z190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9mSklUVHlw
ZSk7CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29k
ZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBmNTJjM2M3NjIxNWFhMzI2ZGRlOWY4OTg1NjI5
OGMzZGU2NDYyMmNlLi4yMGVhMDU3YjIyOTIwMjdiYzQzMTIyM2IxZWVlZTRmMjg4MGY1NjM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
OjpmaW5hbGl6ZSgKIAogSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQorICAg
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQogICAgIDogSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNl
ZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKQEAg
LTc0LDYgKzc0LDcgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKICAgICBt
X3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
dmFsdWVHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy50aGlz
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1
YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFn
R1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHZhbHVl
LnRhZ0dQUigpOwpAQCAtODMsMjcgKzg0LDM2IEBAIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRH
ZW5lcmF0b3IoCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYg
ZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0Lmlz
U2V0KCkpOwotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwg
eyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1Bh
dGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0Lmlz
U2V0KCkpOworICAgICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgfQogfQogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaXplKQogewogICAg
IG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNz
ZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQuanVt
cCgpOwotICAgIHNpemVfdCBqdW1wU2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2Rl
U2l6ZSgpIC0gc3RhcnRTaXplOwotICAgIHNpemVfdCBub3BzVG9FbWl0SW5CeXRlcyA9IGlubGlu
ZUlDU2l6ZSAtIGp1bXBTaXplOwotICAgIGppdC5lbWl0Tm9wcyhub3BzVG9FbWl0SW5CeXRlcyk7
Ci0gICAgQVNTRVJUKGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpIC0gc3RhcnRT
aXplID09IGlubGluZUlDU2l6ZSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsK
KyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNv
ZGVTaXplKCk7CisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKKyAgICAgICAg
c2l6ZV90IGp1bXBTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgLSBz
dGFydFNpemU7CisgICAgICAgIHNpemVfdCBub3BzVG9FbWl0SW5CeXRlcyA9IGlubGluZUlDU2l6
ZSAtIGp1bXBTaXplOworICAgICAgICBqaXQuZW1pdE5vcHMobm9wc1RvRW1pdEluQnl0ZXMpOwor
ICAgICAgICBBU1NFUlQoaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgLSBzdGFy
dFNpemUgPT0gaW5saW5lSUNTaXplKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7
CiB9CiAKIEpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJh
c2UsIHZhbHVlKQorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBz
dHViSW5mb0dQUikKICAgICAsIG1faXNMZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lLnVpZCgpID09
IGNvZGVCbG9jay0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHZhbHVlLnRhZ0dQUigpKTsKQEAgLTEx
Niw4ICsxMjYsOCBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIAogSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKQotICAgIDogSklU
QnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENhY2hl
YWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVy
YXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2FkR1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BS
KCkpOwogCkBAIC0xMzQsOSArMTQ0LDkgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogSklUUHV0QnlJZEdl
bmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoLCAKICAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAg
ICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgOiBK
SVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICAg
ICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7
CkBAIC0xNzEsNyArMTgxLDcgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQorSklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwg
R1BSUmVnIHNjcmF0Y2gpCiAgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAg
bV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CkBAIC0xNzksNiArMTg5
LDcgQEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0g
YmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHBy
b3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5w
YXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BS
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVz
dWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIo
KTsKQEAgLTE5MSwxOSArMjAyLDI3IEBAIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZh
bEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQp
CiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0
LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAg
bV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZp
bmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
K3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRo
LCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9q
dW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xv
d1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQp
KTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29k
ZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICBC
YXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKLUpJVERlbEJ5SWRHZW5l
cmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKK0pJVERlbEJ5SWRHZW5lcmF0
b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQog
ICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKQEAgLTIxMSw2ICsyMzAsNyBAQCBKSVREZWxCeUlkR2Vu
ZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcgogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBt
X3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJ
bmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTIyMywyMiArMjQzLDMwIEBAIEpJ
VERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yCiB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVs
KCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChP
cHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7Cisg
ICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQu
cGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAot
dm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZp
bmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAg
ICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFs
aXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkgeworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7
CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAu
bV9qdW1wLmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
KyAgICB9CiB9CiAKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRv
cihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwgdXNlZFJl
Z2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIC8vIEZJWE1FOiBXZSBh
cmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4KICAgICBV
TlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI1Miw3ICsyODAsNyBAQCB2b2lkIEpJVElu
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBK
SVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAogICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAorICAgIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJl
ZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQ
UlJlZyBzY3JhdGNoMiwgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0KQogICAgIDogSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IoCiAgICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKQEAgLTI2MCw2
ICsyODgsNyBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KAogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1
ZUdQUiA9IHJlc3VsdDsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3Rv
dHlwZTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQ
UlJlZzsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0y
NzksMjAgKzMwOCwyNyBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yKAogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJ
bmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9qdW1wID0g
aml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9
CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFz
dFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLAotICAgICAgICBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKLSAgICAKLSAg
ICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQYXRoLmxvY2F0aW9uT2Y8Tm9QdHJU
YWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7
CisgICAgICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xv
d1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8t
PnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2Nh
dGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKKyAgICAgICAgZmFzdFBhdGgu
bGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5vUHRyVGFnPihtX3Nsb3dQ
YXRoQmVnaW4pKTsKKyAgICB9CiB9CiAKLUpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZh
bEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCitKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklU
R2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIp
CiAgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNz
VHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQo
cmVzdWx0KQpAQCAtMzAyLDYgKzMzOCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAg
bV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8t
PnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5m
by0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
VGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAtMzEyLDE5ICszNDksMjcgQEAgSklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0g
ICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChPcHRpb25z
Ojp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAg
IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgs
IExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxp
emUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFT
U0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0
UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KG1fc3RhcnQpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBC
YXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1Yklu
Zm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9
IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6
ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgfQogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQorSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJ
bmZvR1BSKQogICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBl
OjpTZXRQcml2YXRlQnJhbmQpOwpAQCAtMzMzLDYgKzM3OCw3IEBAIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYuYnJh
bmRUYWdHUFIgPSBicmFuZC50YWdHUFIoKTsKQEAgLTM0MywxNiArMzg5LDI0IEBAIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsCiB2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQu
bGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAg
aWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
KTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1f
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9
IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwog
fQogCi12b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAg
TGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBM
aW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAg
ICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5s
b2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNs
b3dQYXRoLCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZv
LT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1f
c3RhcnQuaXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0
aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwor
ICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggZDZjYTZlMTZhM2YzMmM2
NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MS4uZjE2ODczYjYwMTMyZTk3YTBkNGY2YWYxYTFjNmFk
OWNlMjE4NjcxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBKSVRCeUlkR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIAogICAgIEpJVEJ5SWRHZW5l
cmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiBwdWJsaWM6CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKQEAgLTEwNyw3ICsx
MDcsNyBAQCBjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSk7CiAgICAgCiAgICAg
dm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAKQEAgLTEyMSw3ICsxMjEs
NyBAQCBjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdl
bmVyYXRvciB7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCiAgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOworICAgICAgICBK
U1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3Ms
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIH07CkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVl
UmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVD
TUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAKICAgICB2
b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBK
SVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIAog
ICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFi
bGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKTsKIAogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjAxLDcg
KzIwMSw3IEBAIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJh
dG9yIHsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIH07CkBAIC0yMTIsNyArMjEyLDcgQEAgY2xhc3MgSklUSW5zdGFuY2VPZkdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiAgICAgSklU
SW5zdGFuY2VPZkdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1
bHQsCi0gICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHNjcmF0
Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCisgICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3Rv
dHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNo
MiwKICAgICAgICAgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2UpOwogICAgIAog
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwpAQCAtMjMwLDcgKzIz
MCw3IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25z
dAogICAgIHsKQEAgLTI1OCw3ICsyNTgsNyBAQCBjbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogCiAgICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZv
R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCBlNzljZDM2ZWY1
N2Q3YmRjZWNlMTc2OGQwNTg4YWZlZWQ4ODg1MDE1Li4xNzdkYjYwN2IyNjE0NDMwMDEwZTczMjg2
MTM4ZjE0M2Y3YmY5MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApA
QCAtMzMsMTcgKzMzLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAg
ICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudElu
c3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVu
dEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklURG91YmxlOgot
ICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBl
KTsKKyAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFk
VHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHJldHVy
biBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAg
ICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUs
IGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiBl
bWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAg
ICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBl
LCBieVZhbEluZm8pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEy
OCw2ICsxMjgsMTQgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3QKICAgICByZXR1cm4gY2FsbDsK
IH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRhdGVUb3BDYWxs
RnJhbWUoKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5j
dGlvbik7CisgICAgZXhjZXB0aW9uQ2hlY2soKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwogI2lm
IE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJu
VHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogewpAQCAt
MTU3LDYgKzE2NSwxNyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxs
OwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyBmdW5jdGlvbiwgVmly
dHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UK
KyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNl
bmRpZgorICAgIHJldHVybiBjYWxsOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4K
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0
YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgVmlydHVhbFJl
Z2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxOTAsMjAgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CitB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEs
IEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24p
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1
cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEs
IEpTVmFsdWVSZWdzKHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsKKyAgICBlbWl0
U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorICAg
IHJldHVybiBjYWxsOworfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFs
UmVnaXN0ZXIgcmVnKQogewogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBhMzdjYWUzMDNm
OGUyZThiYzNkMDUzOTQ2Mjk0NGRkMTE0ZWRlZjdjLi5jMWE5NmI1YmQ1YjI3ZDVlNmRlZjFmZThm
NzBiZDBkNTg3Y2E4OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKQEAgLTE2OSw2ICsxNjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1
bHQKICAgICAgICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAg
ICAgICBHUFJJbmZvOjpub25BcmdHUFIwLAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3Jh
dGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIG1faW5zdGFuY2VPZnMu
YXBwZW5kKGdlbik7CkBAIC0xODYsNyArMTg3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
bnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3Rh
bmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6
ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb248ZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyLCByZWdU
MSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCkBAIC0xNjQwLDcg
KzE2NDgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgIAogICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRz
LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0Lgot
ICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBl
bWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlw
ZSwgbnVsbHB0cik7CiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xNjU1
LDggKzE2NjMsMTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2RlQmxv
Y2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIkJhc2VsaW5l
IGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgp
KTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRU
eXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMp
KTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
YnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVz
c1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVy
bkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNf
ZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0xNjkwLDExICsxNzAzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19l
bnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRB
cnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFy
cmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0
IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9k
ZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dDYXNl
KGJhZFR5cGUpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRk
U2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAg
ICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTE3MjAsNyArMTczNCwxNCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudAogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1
bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgcmVnVDEsIGJ5VmFsSW5mbyk7CisKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKE9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYnlWYWxJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGwgPSBj
YWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQp
PihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgcmVnVDAsIHJlZ1QxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVs
dCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1Qw
LCByZWdUMSwgYnlWYWxJbmZvKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZh
bEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9
IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
aW5kZXggNGRlMzg4NGVhZmU4YWNlYWU2Y2Q2ZTc1NGI4NjE4OTlmN2Q1M2JmZC4uYTdhNjhiZGNh
YTdhMjE2MDJlMzBlODIzMTg2YzdiOTU5MTc2ODdlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTY3LDYgKzE2Nyw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUKICAg
ICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIHJlZ1Q3LAogICAgICAgICByZWdUMywgcmVn
VDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIG1f
aW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CkBAIC0xMTk5LDcgKzEyMDAsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdAogICAgICAgICAiQmFzZWxpbmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1
YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxs
PFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNz
UHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAgIGJ5VmFsSW5mby0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTI2Nyw2ICsxMjY4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnQKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENv
bXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNh
bGw7CisgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVk
UHJvcGVydHlEZWZhdWx0OwogICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGNlZDE4NDI1
NWVjYmFlNjAwNzFiMWYyNDk4ZDQ0MGUwNDNmMGZiZTkuLmE5YmE1ODAyZjI4NmNlOTExMWIyOThi
NDk3Mzg2MDIzZDYwZWZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtOTY0LDcgKzk2NCwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQog
ICAgIGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAg
Ly8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Ns
b3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVy
bkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZh
bEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsK
ICAgICB9CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmpl
Y3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwog
fQpAQCAtMTA1Niw3ICsxMDU5LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYg
KHJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24n
dCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGgg
PSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVz
c1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMp
OworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFs
SW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0
dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0
UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5m
bywgZWNtYU1vZGUpKTsKQEAgLTEyNDAsNyArMTI0NiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2Jq
ZWN0KgogICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpH
aXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAg
IGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlS
ZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0
aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0
Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNT
KSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29wZS5y
ZWxlYXNlKCk7CkBAIC0yNTQxLDcgKzI1NTAsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlMK
ICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAgICAg
ICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAg
ICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNoQ2Fs
bEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5B
ZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY4NWY0NGIzOWZmYjllZjZkYzMxOTE0
ZGQzZDc4MTc0ZmIzNTViZDcuLjMyNTZlMWU2MTUxMTdkNGRhZDRlMDMwNTBiM2IxMDQzMDM5NjYz
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5j
bHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQpAQCAtNzAsMTEgKzcxLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFj
Y2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
cmVzdWx0UmVncyk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVzdWx0UmVncywgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgIGlmIChp
c09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8o
KS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwotICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAg
ICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRTbG93Q2Fz
ZSgpOwogICAgICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVn
cyk7CkBAIC05MywxNCArOTcsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlW
YWxJbmRleDsKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxz
W21fZ2V0QnlWYWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIHByb2ZpbGUsIHJlZ1QwLCByZWdUMSk7CiAjZWxzZQogICAgICAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKICAgICAgICAgdWludDMyX3QgYnl0ZWNv
ZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMTgs
NyArMTIzLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAgICAg
ICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBjYWxsID0gYXBwZW5k
Q2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJl
dHVyblZhbHVlR1BSKTsKQEAgLTE4Myw5ICsxOTIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAg
ICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9w
ZXJ0eUdQUiksIHJlc3VsdFJlZ3MpOworICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0
eUdQUiksIHJlc3VsdFJlZ3MsIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAg
bV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0yMDEsOCArMjEz
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRC
eVZhbEluZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwogICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpA
QCAtMjExLDYgKzIyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICNlbHNlCiAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMjI2LDcgKzIz
OCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihn
ZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
IChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAt
Mjg2LDkgKzMwMiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7
CisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nl
cy5hcHBlbmQoZ2VuKTsKIAogICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQg
dGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVy
cy4KQEAgLTMwMiw4ICszMjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRl
eF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVC
cmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwog
CiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzEyLDYgKzMzMCw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgYnJhbmRHUFIpOwogI2Vsc2UK
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMzI4
LDkgKzM0NywxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgY2FsbCA9IGFwcGVuZENhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSkpOworICAgIGVsc2UKKyAgICAgICAgY2Fs
bCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYKKwogICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTM0Nyw5ICszNzEsMTIgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdl
bigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFu
ZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2Fz
ZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1
Nyw4ICszODQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogewogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAg
KyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vz
c0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzY3LDYgKzM5Myw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DaGVja1By
aXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7CiAjZWxzZQogICAgIFZN
JiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNv
ZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTM4Myw3ICs0
MTAsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFu
ZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAg
IENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSk7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCkBAIC00MTUsOCArNDQ2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogICAgIFBhdGNoYWJsZUp1bXAgbm90SW5kZXg7
CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0ludGVnZXJDb25zdGFudCkgewotICAgICAgICBub3RJ
bmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOwotICAgICAgICBhZGRTbG93
Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7Cisg
ICAgICAgICAgICBhdXRvIGlzSW50MzIgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICAgICAg
ICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFy
Z2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNJbnQzMi5saW5rKHRo
aXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hh
YmxlSnVtcElmTm90SW50KHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4
KTsKKyAgICAgICAgfQogICAgICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgog
ICAgICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQocmVnVDEsIHJlZ1QxKTsKICAgICB9CkBAIC00MzIs
MjMgKzQ2OSwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VB
cnJheU1vZGUocHJvZmlsZSk7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQz
MjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0g
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7
CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgot
ICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJh
eVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChi
eXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xv
d0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTQ1Nyw3ICs0OTUs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExp
c3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRl
eGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7
CkBAIC00NjUsNyArNTAzLDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAgICAgCiAgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICBpZiAoT3B0
aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAg
ICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJ
bW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVz
cygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcp
OworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRl
eGluZ1NoYXBlKSk7CisKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIG91dE9mQm91bmRzID0gYnJh
bmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MTUsNyArNTYyLDcgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTUyMyw3ICs1NzAs
MTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgaWYgKE9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0
byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJy
YXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZi
eVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1
c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJh
eVN0b3JhZ2VTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gz
MihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rv
ckxlbmd0aE9mZnNldCgpKSkpOwogCkBAIC01NjksNyArNjI1LDcgQEAgSklUUHV0QnlJZEdlbmVy
YXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBw
dXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0
eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyLCBl
Y21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJh
cnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFs
V3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUu
CkBAIC01NzgsOSArNjM0LDE2IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlW
YWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBkb25lQ2Fz
ZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LSAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKLQotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBwcm9w
ZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisg
ICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOworCisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5y
YXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRz
KCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAg
ICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC02MTksNiArNjgyLDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0
ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAs
IHJlZ1QxLCByZWdUMiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIoZWNtYU1vZGUudmFsdWUoKSkp
OwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGJ5VmFsSW5mby0+bV9zbG93
T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDog
b3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtNjM4LDggKzcwMiwxMSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZh
bHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKLSAgICBhdXRvKiBvcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplOwotICAg
IENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICBDYWxsIGNhbGw7CisgICAg
aWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKEFk
ZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSk7
CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCkBAIC02OTYsOCArNzYzLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKLSAgICBQYXRjaGFibGVK
dW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQ
YXRoSm1wKTsKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wOworICAgIGlmIChPcHRpb25z
Ojp1c2VTaGFyZWRJQygpKQorICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJ
bmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAgICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICB9CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxh
YmVsKCk7CiAgICAgCkBAIC03MjQsNiArNzk2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUK
ICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5k
LnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBieVZhbElu
Zm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemU7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CiAKQEAgLTc0Myw3ICs4MTYsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAg
Q2FsbCBjYWxsOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSkpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtODQ4LDkgKzky
NSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93
Q2FzZSgpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJl
Z1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAtODgxLDYgKzk2MSw3IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CiAjZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtODk4LDE1ICs5Nzks
MTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYg
KE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0
aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTk1Nyw5ICsxMDQxLDEyIEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKICAgICBK
SVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7Cisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1f
ZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKQEAgLTk5MSw2ICsxMDc4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rl
bF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
ICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QwLCByZWdUMSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFs
dWUoKSkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OwogCkBAIC0xMDA4LDE1ICsxMDk2LDE4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVH
UFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAg
IGNhbGwgPSBhcHBlbmRDYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdU
MCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMDY5
LDkgKzExNjAsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBHUFJJ
bmZvOjpub25BcmdHUFIwLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAgICAgCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMTA5NCw2
ICsxMTg4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTExMTAsNyArMTIwNSwxMSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRl
Y2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5
R2V0QnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpKTsKKyAgICBlbHNl
CisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzNCw5ICsxMjMzLDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
c3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
aWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dl
dEJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMTE2MCw2ICsxMjYyLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSwgcmVz
dWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vs
c2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CiAgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTEx
NzYsNyArMTI3OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSks
IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7
CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BS
KTsKQEAgLTEyMDgsOSArMTMxNSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywg
R1BSSW5mbzo6bm9uQXJnR1BSMCwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAg
ICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMTIzNCw5ICsx
MzQ0LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJl
c3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAg
ICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0x
MjYwLDYgKzEzNzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMo
KSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAt
MTI3NSw3ICsxMzg5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKyAgICBDYWxs
IGNhbGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BS
KTsKQEAgLTEzMzcsNiArMTQ1NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxLCBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJ
ZFdpdGhUaGlzT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZz
ZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTEzNTQsNyArMTQ3MywxMSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2Fs
bChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BS
KTsKQEAgLTE0MjAsMTEgKzE1NDMsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1v
ZGUoYnl0ZWNvZGUpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAg
ICAgICAgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKLSAg
ICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRTbG93Q2FzZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CiAgICAgCiAgICAgLy8g
SUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFz
ZSBpcyBjZWxsLgpAQCAtMTQ0OCw2ICsxNTczLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wK
ICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IHJlZ1QxLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZz
ZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTE0NjUsNyArMTU5MSwx
MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSkpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtMTUyMiw5ICsxNjUyLDEyIEBAIHZvaWQgSklUOjpl
bWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
ICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMCksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlm
ICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbkJ5
SWRzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVn
KTsKQEAgLTE1NDYsNiArMTY3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJl
ZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAg
ICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTU2NCw3ICsxNjk4LDEx
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbklu
QnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpKTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yMjkxLDE3ICsyNDI5LDI0IEBAIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUs
IFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBw
dXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDEsIGVjbWFNb2Rl
KGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOworICAgIGlmICgh
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmso
dGhpcyk7CiAKICAgICAvLyBKSVRQdXRCeUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUgdGhlIHZh
bHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0YWcuCiAg
ICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICBDYWxsIGNh
bGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihB
ZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2Vz
LmFwcGVuZChqdW1wKCkpOwogCkBAIC0yMzUzLDI5ICsyNDk4LDI5IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvCiAKICAgICBzd2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6
Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
KTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBu
dWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAg
ICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsK
KyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgbnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAg
ICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUsIG51bGxwdHIpOwogICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBl
ID0gdHlwZWRBcnJheVR5cGVGb3JKSVRBcnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYg
KGlzSW50KHR5cGUpKQotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0
eXBlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmln
SW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50
bHksIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4
MwogICAgICAgICAgICAgQVNTRVJUKGlzRmxvYXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBl
KTsKKyAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChi
eXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMjQwMiw4ICsyNTQ3LDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
CiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRy
VGFnLAogICAgICAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVz
LCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVy
bkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJu
QWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+
KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJp
YykpOworCisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgpAQCAtMjQ0Miw4ICsyNTkzLDEzIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BCiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGgg
Y2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
cHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8t
PnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRk
cmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1
dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29k
ZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KQEAgLTI0ODAsMTUgKzI2MzYsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJl
c3MKICAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92YWwlcyB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBu
YW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIChwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdCkgPyAiX2RpcmVjdCIgOiAiIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCku
ZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50
YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7
CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hD
YWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIGlm
IChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRl
eEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90
SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KSk7CisgICAgfQogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5v
dGhlciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0
IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxh
dGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZh
bD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRp
Zmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNo
ZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRL
aW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3Vi
bGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6
SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yNTA0LDcgKzI2NjUsMTYgQEAg
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0z
MihEb3VibGVTaGFwZSkpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAg
ICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJy
YW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAg
ICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1w
VGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlw
ZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFw
ZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90
RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKwogICAgIGxvYWRQ
dHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFk
ZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAg
IGxvYWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwgZnBS
ZWdUMCk7CkBAIC0yNTEzLDcgKzI2ODMsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJs
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIHJl
dHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5
cGUgZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI1MzEsNyArMjcwMSwxNiBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZElt
bTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUg
PSBicmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7
CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5
cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3Jy
ZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUg
PSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBl
Y3RlZFNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisK
ICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
c2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHBy
b3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpKTsKICAgICBsb2FkVmFsdWUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0Vp
Z2h0KSwgcmVzdWx0KTsKQEAgLTI1NDAsNyArMjcxOSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRB
cnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVj
dGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yNTU5
LDcgKzI3MzgsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93
Q2FzZXM7CiAKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoLUFycmF5U3RvcmFnZVNoYXBlKSwgaW5k
ZXhpbmcsIHNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwg
c2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAg
ICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFu
Y2gzMihCZWxvd09yRXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9y
YWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUs
IHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0
b3JhZ2VTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJh
eVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjU3MSw3ICsyNzU5LDcgQEAg
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3Qg
SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsK
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0y
NTk2LDcgKzI3ODQsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpOworCisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAg
ICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0g
YnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRj
aCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxz
ZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2Ny
YXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAg
bG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJv
cGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3Bl
Y2lhbENhc2UocHJvZmlsZSk7CkBAIC0yNjQ3LDcgKzI4NDUsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjpl
bWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0yNjcyLDcgKzI4NzAs
MTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBi
eXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOworCisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKGJ5
VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9i
YWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlz
Q29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZElt
bTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxzZQorICAgICAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAgbG9hZDMyKEFkZHJl
c3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBsYXRlU2NyYXRj
aDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIGxhdGVT
Y3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJv
ZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAppbmRleCBjMjJjNzcwNDI4OWFiYjA4MmY5ZGRmMjBkOGMyZmY2NjVkZmQ1
NmUyLi5mZjFkNjhmZjgwYTdkZmZlM2MyZjY5MmYxNmYwM2E3OTY0MDg3MzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
QEAgLTEzNSw3ICsxMzUsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKICAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwog
ICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCByZXN1
bHRSZWdzKTsKQEAgLTE2OCw5ICsxNzEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Ms
IHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKLQogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
LSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeVZhbHMuYXBwZW5k
KGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCByZXN1bHRSZWdzKTsKQEAgLTI2Miw3ICsy
NjcsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJv
cGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRy
dWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFy
ZWRJQygpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICAgICAgbV9nZXRCeVZh
bHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMzA4LDcgKzMxNiwxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6
R2V0UHJpdmF0ZU5hbWUsCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAg
ICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0zOTYsNyAr
NDA3LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAg
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIAogICAgIC8vIFdlIHNob3VsZCBl
bWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJy
aWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KQEAgLTQzNiw3ICs0NTAsMTAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0
ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
IGJhc2VSZWdzLCBicmFuZFJlZ3MpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
LSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nl
c3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIApAQCAtNjYzLDcgKzY4MCwxMCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNs
b3dDYXNlKCk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVn
cyk7CkBAIC03MDQsNyArNzI0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAg
ICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtNzUxLDcgKzc3
NCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlw
ZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJ
QygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UK
KyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwogCiAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayks
IHJlc3VsdFJlZ3MpOwpAQCAtNzk0LDcgKzgyMCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNs
b3dDYXNlKCk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChnZW4pOwogCiAgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3Vs
dFJlZ3MpOwpAQCAtODQxLDcgKzg3MCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgcmVnVDEsIGJ5
dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0
S2luZDo6Tm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5k
KGdlbik7CiAgICAgCiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3
cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgpAQCAtODg1LDcgKzkxNywxMCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2Fz
ZSgpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRTdG9yZShkc3QsIHJl
Z1QxLCByZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgK
aW5kZXggODgxNDY0MGU2YWNjZWFjMWI5YjA2OGE0MGM4OTQyODM0ODZjZGZhYi4uZDlhY2Y5NzYz
YWFmOTljNmRiMzJhYzI1MzllMjRkMzczMTRlMjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogY2xhc3MgVk07CiAKK3N0cnVjdCBBY2Nlc3NDYXNl
S2V5OworCiAvLyBUaGlzIGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFu
ZCBhbHNvIHRoZSBjbGFzcyB5b3Ugd2FudAogLy8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkgaWYg
eW91IGhhdmUgYSByb3V0aW5lIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJvbSB0
aGUgR0MuIElmIGluIGRvdWJ0LCB1c2Ugb25lIG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVzLiBC
dXQKQEAgLTU2LDcgKzU4LDcgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAgIH0KICAgICAK
ICAgICB2aXJ0dWFsIH5KSVRTdHViUm91dGluZSgpOwotICAgIHZpcnR1YWwgdm9pZCBhYm91dFRv
RGllKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFib3V0VG9EaWUoVk0mKSB7IH0KICAgICAKICAg
ICAvLyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaXMgY29weWFibGUsIGJ1dCBhdCB0aGUgY29zdCBv
ZiByZWZlcmVuY2UKICAgICAvLyBjb3VudGluZyBjaHVybi4gUmV0dXJuaW5nIGEgcmVmZXJlbmNl
IGlzIGEgZ29vZCB3YXkgb2YgcmVkdWNpbmcKQEAgLTk4LDYgKzEwMCw4IEBAIGNsYXNzIEpJVFN0
dWJSb3V0aW5lIHsKICAgICAvLyBkZXN0cm95ZWQuCiAgICAgdmlydHVhbCBib29sIHZpc2l0V2Vh
ayhWTSYpOwogCisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8QWNjZXNzQ2FzZUtleT4qIGtleXMo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYwNjg2
MjczZGRhODFjYmI2ZDAxY2QyMWRkMDk4OWNjNmUyYjguLjQ0NzA1NWJmZThhYmVmYWE1NmZlNzhl
ODA2OGQyY2M2Njg5MzIzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNh
bGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxDb2Rl
T3JpZ2luLmgiCkBAIC02Nyw3ICs2OCw3IEBAIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCog
b3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBj
b25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFycmF5
PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCi0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29k
ZVJlZiwgdm0pCisgICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0sIHsgfSkK
ICAgICAsIG1fdmFyaWFudHMoY2FzZXMuc2l6ZSgpKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1v
dmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRl
eCA3MDQ2N2I0MjlmMmVhMWU3ZmEyNGVhZTc1MTJiYTlhY2NiN2YwYzg2Li4wYzk4ZmViMTY4MWQ5
N2YyMTczNDIzNmM2ODEzZThjMTZiNGFjNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKQEAgLTcxLDggKzcxLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitz
dGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCkKIHsKKyAgICBpZiAoT3B0aW9uczo6dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgcmV0dXJuIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlvbi5yZXRh
Z2dlZDxDRnVuY3Rpb25QdHJUYWc+KCk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgaWYgKGNv
ZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAgICBGdW5jdGlv
blB0cjxKSVRUaHVua1B0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFy
Z2V0PEpJVFRodW5rUHRyVGFnPihjYWxsKTsKQEAgLTEwNSw2ICsxMDcsMTUgQEAgdm9pZCBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNh
bGw8SlNJbnRlcm5hbFAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbCwgbmV3
Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0KIAorc3RhdGlj
IHZvaWQgcmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsLCBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKQoreworICAgIGlmIChP
cHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlv
biA9IG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7Cit9CisKIGVudW0gSW5saW5lQ2FjaGVBY3Rpb24g
ewogICAgIEdpdmVVcE9uQ2FjaGUsCiAgICAgUmV0cnlDYWNoZUxhdGVyLApAQCAtMjE0LDEyICsy
MjUsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICBpZiAocHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJh
eShiYXNlQ2VsbCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkg
PT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICAgICAmJiAhT3B0aW9uczo6dXNl
U2hhcmVkSUMoKQogICAgICAgICAgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFz
ZUNlbGwKICAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZUFy
cmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxsKSkpIHsKIAogICAg
ICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6
OmdlbmVyYXRlQXJyYXlMZW5ndGgoc3R1YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwp
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1
bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0
ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRBcnJheUxlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjI3
LDEwICsyMzksMTIgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAg
bmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpB
cnJheUxlbmd0aCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0
cmluZyhiYXNlQ2VsbCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBl
KCkgPT0gQ2FjaGVUeXBlOjpVbnNldCAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5n
TGVuZ3RoKHN0dWJJbmZvKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5
cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmICFPcHRpb25z
Ojp1c2VTaGFyZWRJQygpCisgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vzczo6aXND
YWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CiAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5n
dGgoc3R1YkluZm8pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGlu
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1p
emluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtMjc3LDYgKzI5MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAg
ICAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3MuCiAgICAgICAgICAgICBpZiAoc3R1YkluZm8u
Y2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICYmICFPcHRp
b25zOjp1c2VTaGFyZWRJQygpCiAgICAgICAgICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZVZh
bHVlKCkKICAgICAgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCiAg
ICAgICAgICAgICAgICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCkBAIC0yODcsNyArMzAyLDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRD
b2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlT
ZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBs
YWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAg
ICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9u
KGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxmKGxv
Y2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNDI1LDcgKzQ0MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoK
ICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VW
YWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0
eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Moc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NTQsNyBAQCB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYQog
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAg
ICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBw
cm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAg
cmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihraW5kKSk7CiB9CiAKIApAQCAtNTI5LDcg
KzU0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiAgICAgICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZt
KSwgSWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
cmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wSW5BY2Nlc3Moc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU0MCw3ICs1NTUs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAg
ICAgaWYgKHRyeUNhY2hlQXJyYXlHZXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZSwgaW5kZXgsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5
VmFsR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRG
dW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4g
ZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCkBAIC02NTEsNiArNjY2LDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmUt
PmRpZENhY2hlUHJvcGVydHlSZXBsYWNlbWVudCh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0g
Q2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICAgICAmJiAhT3B0aW9uczo6dXNlU2hh
cmVkSUMoKQogICAgICAgICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmNhbkdlbmVyYXRl
U2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgc2xvdC5jYWNoZWRPZmZzZXQoKSkKICAgICAg
ICAgICAgICAgICAgICAgJiYgIW9sZFN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hw
b2ludCgpCiAgICAgICAgICAgICAgICAgICAgICYmICFpc1Byb3h5KSB7CkBAIC02NTgsNyArNjc0
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgYm9vbCBn
ZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eVJl
cGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRTZWxmUGF0Y2gsIG9sZFN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlk
RnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UobG9ja2Vy
LCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTcsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jawogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQu
Y29kZSgpKTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nl
c3Moc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1
bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgxNSw3ICs4MzEsNyBAQCB2b2lk
IHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0
dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBw
cm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAg
cmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7
CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0
eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgRGVsQnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTg3NCw3ICs4OTAsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVD
b2RlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAg
ICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0
dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVp
ZCgpKSkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Mo
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg5MSw5ICs5MDcsOSBAQCB2b2lkIHJl
cGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRGVsZXRlUAogICAgIGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBz
dHViSW5mbywga2luZCwgZWNtYU1vZGUpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5m
b09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFs
KQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAg
ICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOwor
ICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CiAgICAgfQog
fQogCkBAIC05MjksNiArOTQ1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
SW5CeUlEKAogCiAgICAgICAgICAgICAvLyBPcHRpbWl6ZSBzZWxmIGFjY2Vzcy4KICAgICAgICAg
ICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAg
ICAgICAgICAgJiYgIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkKICAgICAgICAgICAgICAgICAmJiBz
bG90LmlzQ2FjaGVhYmxlVmFsdWUoKQogICAgICAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlCiAgICAgICAgICAgICAgICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCkBAIC05
MzcsNyArOTU0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAog
ICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0s
IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOwogICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0SW5C
eUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgp
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxh
dGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTk5Myw3ICsxMDEwLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wSW5BY2Nlc3Moc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMDcsNyAr
MTAyNCw3IEBAIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlSW5CeUlEKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBz
bG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkluQnlJZCk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWQpOwogfQogCiBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKQEAgLTEwNDAs
NyArMTA1Nyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0
ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZFJl
cGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3Bl
cnR5KSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAg
ICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Moc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEwNTQsNyArMTA3MSw3IEBAIHZvaWQgcmVwYXRjaENoZWNr
UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
CiAgICAgaWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAg
ICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKQEAgLTEwOTksNyAr
MTExNiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFu
ZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdp
dGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkp
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUo
KSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8s
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7
CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTExMyw3ICsxMTMwLDcgQEAgdm9pZCByZXBh
dGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLAogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKIAogICAgIGlmICh0cnlDYWNoZVNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCAgYnJhbmRJRCwgc3R1YkluZm8pID09
IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVy
aWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApA
QCAtMTE2OCw5ICsxMTg1LDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUlu
c3RhbmNlT2YoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dC5jb2RlKCkpOwogCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoCi0g
ICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAotICAgICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7
CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHJlc3VsdC5jb2RlKCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcCgKKyAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAorICAgICAgICAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTE4NSw3ICsx
MjA2LDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKIHsKICAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VPZihn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUsIHN0dWJJ
bmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluc3RhbmNl
T2ZHZW5lcmljKTsKIH0KIAogc3RhdGljIHZvaWQgbGlua1Nsb3dQYXRoVG8oVk0mLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiBjb2RlUmVmKQpAQCAtMTIwMiw3ICsxMjIzLDcgQEAgc3RhdGljIHZvaWQgbGlua1Ns
b3dGb3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1
YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICBsaW5rU2xvd1BhdGhUbyh2bSwgY2Fs
bExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihH
Q0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2Fs
bExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1
YWxUaHVuaywgdm0sIHsgfSkpOwogfQogCiBzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVy
KEpTQ2VsbCogY2FsbGVlKQpAQCAtMTMyMCw3ICsxMzQxLDcgQEAgc3RhdGljIHZvaWQgbGlua1Zp
cnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0kKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4g
dmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIHJl
dmVydENhbGwodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5r
LCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKICAgICBjYWxsTGlua0luZm8uc2V0
Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjIzLDE0ICsxNjQ0LDE0IEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsKLSAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Ci0gICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0
YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAogdm9pZCByZXNl
dFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdFN0cmljdE9wdGltaXplKTsKLSAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5j
dGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHVi
SW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwogICAgIEZ1bmN0aW9uVHlwZSBvcHRpbWl6ZWRGdW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6
ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rp
b24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRG
dW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKQEAgLTE2NDcsMjggKzE2
NjgsMzIgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRp
b25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogCi0gICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wdGltaXplZEZ1bmN0aW9uKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
dGltaXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFj
Y2VzcyhzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAogdm9p
ZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIERlbEJ5S2luZCBraW5kKQogewogICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9y
bWFsKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAg
ICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxzZQotICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Ci0gICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24pOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7
CisgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Moc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKIHN0YXRpYyB2b2lkIHJlc2V0UGF0
Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRp
b247CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0
dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
KyAgICB9CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5C
eUlkT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNz
KHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCiB2b2lkIHJl
c2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkBAIC0xNjc4LDE0ICsx
NzAzLDE0IEBAIHZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIAogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Moc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CiB9CiAKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
KyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0
clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQsIEpTT2JqZWN0KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCmluZGV4IGE3YjJkYjM4YmZjNjIwN2U1MGU0MjZiYTYyYWE5YzIwNWVjMmVmMzguLjQz
NDkyZjljZTcwNTc1NGJhZTRjMzNiYjlkMmU3Y2Q5NDAzZmExMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC02MDcsOSArNjA3LDkgQEAgdm9pZCBPcHRp
b25zOjppbml0aWFsaXplKCkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OmFk
ZHJlc3NPZk9wdGlvbihmb3JjZU9TUkV4aXRUb0xMSW50SUQpID09ICAmT3B0aW9uczo6Zm9yY2VP
U1JFeGl0VG9MTEludCgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OmFk
ZHJlc3NPZk9wdGlvbkRlZmF1bHQoZm9yY2VPU1JFeGl0VG9MTEludElEKSA9PSAgJk9wdGlvbnM6
OmZvcmNlT1NSRXhpdFRvTExJbnREZWZhdWx0KCkpOwogCi0jaWZuZGVmIE5ERUJVRworLy8jaWZu
ZGVmIE5ERUJVRwogICAgICAgICAgICAgQ29uZmlnOjplbmFibGVSZXN0cmljdGVkT3B0aW9ucygp
OwotI2VuZGlmCisvLyNlbmRpZgogICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBlYWNoIG9mIHRo
ZSBvcHRpb25zIHdpdGggdGhlaXIgZGVmYXVsdCB2YWx1ZXM6CiAjZGVmaW5lIElOSVRfT1BUSU9O
KHR5cGVfLCBuYW1lXywgZGVmYXVsdFZhbHVlXywgYXZhaWxhYmlsaXR5XywgZGVzY3JpcHRpb25f
KSB7IFwKICAgICAgICAgICAgICAgICBhdXRvIHZhbHVlID0gZGVmYXVsdFZhbHVlXzsgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggN2U3OGFiYTVl
ZDcxYTRmNTYzZmY1YWZiZmRlM2FkNjU1MGVhYzJiMy4uNWM0YzFkMWY4NjZhMGRkMjE4NmFlNzRk
NDNlNjRhNmNkY2RjNTBlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCkBAIC01MzQsNiArNTM0LDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5V
c2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlVG9wTGV2ZWxBd2FpdCwgdHJ1ZSwgTm9y
bWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtleXdvcmQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVs
ZS4iKSBcCiAgICAgdihCb29sLCB2ZXJib3NlRXhlY3V0YWJsZVBvb2xBbGxvY2F0aW9uLCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VTaGFyZWRJQywgdHJ1ZSwgTm9y
bWFsLCBudWxscHRyKSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZTc0ZGEyMjljMGU3MTk2NzM2YmM1NDQ3MjdiMmJj
YTMyZjJiNzZiYi4uN2RjZTRmYzg1NjBlNjNkNmE2MDczMTEwNDA4ZGZhYjA2MDhkMTNhYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgi
CiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5j
bHVkZSAiQmlnSW50T2JqZWN0LmgiCkBAIC01NzEsNiArNTcyLDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1
Y2Nlc3MpCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgICAgIGppdFN0dWJzLT5w
cmVpbml0aWFsaXplRXh0cmFDVElUaHVua3MoKnRoaXMpOwogI2VuZGlmCisgICAgICAgIG1fc2hh
cmVkSklUU3R1YnMgPSBtYWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJTZXQ+KCk7CiAgICAgfQogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKQEAgLTE3MTYsNCArMTcxOCw2IEBAIHZvaWQgVk06OnJlbW92
ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAgICAgICAgIG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHMucmVtb3ZlKGl0ZXIpOwogfQogCit1
aW50NjRfdCBnX251bWJlck9mT1NSRXhpdHM7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNzgyMzU2YmU4MWQ3YTdkNjZjNjk5MDQ4ZTEwYzZi
MWEwNzE1NjQ0Mi4uMTRmMjlhNzZmZDU0N2E3MzY0Yjk2ODlkODI0YmUzMmYxMWI4MjdlNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNzQsNiArMTc0LDcgQEAgY2xhc3MgUmVn
aXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwogI2VuZGlmCiBjbGFz
cyBTaGFkb3dDaGlja2VuOworY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2Fj
aGU7CkBAIC04NDYsNiArODQ3LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUo
RlRMX0pJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKICNl
bmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRKSVRTdHViU2V0PiBtX3NoYXJlZEpJVFN0
dWJzOworCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0
aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJl
KiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAtMTMwOCw0ICsxMzExLDYgQEAgZXh0ZXJuICJD
IiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTUltcGwoVk0qKTsKIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2FuaXRpemVTdGFja0ZvclZNKFZNJik7CiB2b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mKTsK
IAorZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZPU1JFeGl0czsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggZDYw
ZmViNTI2Nzc4NjZlODBkMzg1YjkyOWM4ZTcxMTE1YjYzZGY2YS4uYTcxZTIxMTI1MTQ4Yzc5MzNi
NzNhNjFlZDJlNGY0OGY0NmY2MmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9K
U0RvbGxhclZNLmNwcApAQCAtMjcsOSArMjcsMTEgQEAKICNpbmNsdWRlICJKU0RvbGxhclZNLmgi
CiAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkFzc2VtYmxlckNvbW1v
bi5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKKyNpbmNsdWRlICJERkdXb3JrbGlzdC5o
IgogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRPTUpJ
VEdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCkBAIC00OSw5ICs1MSwxMSBA
QAogI2luY2x1ZGUgIlNuaXBwZXRQYXJhbXMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIK
ICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUg
IlZNSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMuaCIKICNpbmNsdWRlICJX
YXNtQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCiAjaW5jbHVkZSA8
dW5pY29kZS91dmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8
d3RmL0NQVVRpbWUuaD4KQEAgLTE5ODksNiArMTk5MywyNSBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihmdW5jdGlvblVzZUpJVCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvbklzR2lnYWNhZ2VFbmFibGVkKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVG9VbmNhY2hlYWJsZURpY3Rpb25hcnkpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25EdW1wV29ya2xpc3RTdGF0ZSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByZWNpc2VUaW1lKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZPU1JFeGl0cyk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mQ2FjaGVG
bHVzaGVzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVy
T2ZSZXBsYWNlV2l0aFZNSGFsdHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoTG9hZHMpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVz
c0NvbXB1dGF0aW9ucyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bk51bWJlck9mU2V0UG9pbnRlcnMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25OdW1iZXJPZlJlcGF0Y2hJbnQzMnMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlbGlua0p1bXBzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZWxpbmtDYWxscyk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mUmVwYXRjaENvbXBhY3RzKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZOZXdDb2Rl
RmluYWxpemF0aW9ucyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bk51bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbik7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9u
SW5CYXNlbGluZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51
bWJlck9mU2hhcmVkU3R1YkhpdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihm
dW5jdGlvbk51bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxpbmUpOwogCiBjb25zdCBDbGFzc0lu
Zm8gSlNEb2xsYXJWTTo6c19pbmZvID0geyAiRG9sbGFyVk0iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRG9sbGFyVk0pIH07CiAKQEAgLTM1
NzIsNiArMzU5NSwxNDMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNQcml2
YXRlU3ltYm9sLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGMKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1N5bWJvbChjYWxsRnJhbWUtPmFyZ3VtZW50KDApKS0+
dWlkKCkuaXNQcml2YXRlKCkpKTsKIH0KIAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uRHVtcFdvcmtsaXN0U3RhdGUsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQorewor
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICBkYXRhTG9nKCJERkcg
V29ya2xpc3Q6ICIsIHBvaW50ZXJEdW1wKERGRzo6ZXhpc3RpbmdHbG9iYWxERkdXb3JrbGlzdE9y
TnVsbCgpKSwgIlxuIik7CisgICAgZGF0YUxvZygiRlRMIFdvcmtsaXN0OiAiLCBwb2ludGVyRHVt
cChERkc6OmV4aXN0aW5nR2xvYmFsRlRMV29ya2xpc3RPck51bGwoKSksICJcbiIpOworICAgIGRh
dGFMb2coIldhc20gV29ya2xpc3Q6ICIsIHBvaW50ZXJEdW1wKFdhc206OmV4aXN0aW5nV29ya2xp
c3RPck51bGwoKSksICJcbiIpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJlY2lzZVRp
bWUsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZPU1JFeGl0cywgKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZk9T
UkV4aXRzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9m
Q2FjaGVGbHVzaGVzLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihnX251bWJlck9mQ2FjaGVGbHVzaGVzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhWTUhhbHRzLCAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mUmVw
bGFjZVdpdGhWTUhhbHRzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bk51bWJlck9mUmVwbGFjZVdpdGhKdW1wcywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikp
Cit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBsYWNlV2l0aExv
YWRzLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihnX251bWJlck9mUmVwbGFjZVdpdGhMb2FkcykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9ucywgKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1i
ZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9ucykpOworfQorCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlNldFBvaW50ZXJzLCAoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mU2V0UG9pbnRl
cnMpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBh
dGNoSW50MzJzLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihnX251bWJlck9mUmVwYXRjaEludDMycykpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlbGlua0p1bXBzLCAoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mUmVsaW5rSnVtcHMp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZWxpbmtD
YWxscywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZ19udW1iZXJPZlJlbGlua0NhbGxzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbk51bWJlck9mUmVwYXRjaENvbXBhY3RzLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mUmVwYXRjaENvbXBhY3Rz
KSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mTmV3Q29k
ZUZpbmFsaXphdGlvbnMsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZOZXdDb2RlRmluYWxpemF0aW9ucykpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25z
LCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNj
b3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihn
X251bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb24sIChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZTaGFyZWRT
dHViQ3JlYXRpb24pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVt
YmVyT2ZTaGFyZWRTdHViSGl0LCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihnX251bWJlck9mU2hhcmVkU3R1YkhpdCkpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbkluQmFz
ZWxpbmUsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGdfbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb25JbkJhc2VsaW5lKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxp
bmUsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGdfbnVtYmVyT2ZTaGFyZWRTdHViSGl0SW5CYXNlbGluZSkpOworfQorCiBjb25zdGV4cHIgdW5z
aWduZWQganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRlcyA9IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlOwogCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
QEAgLTM3MjcsNiArMzg4NywyNiBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIAogICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNQcml2YXRlU3ltYm9sIiwgZnVuY3Rpb25J
c1ByaXZhdGVTeW1ib2wsIDEpOwogCisgICAgYWRkRnVuY3Rpb24odm0sICJkdW1wV29ya2xpc3RT
dGF0ZSIsIGZ1bmN0aW9uRHVtcFdvcmtsaXN0U3RhdGUsIDApOworICAgIGFkZEZ1bmN0aW9uKHZt
LCAicHJlY2lzZVRpbWUiLCBmdW5jdGlvblByZWNpc2VUaW1lLCAwKTsKKyAgICBhZGRGdW5jdGlv
bih2bSwgIm51bWJlck9mT1NSRXhpdHMiLCBmdW5jdGlvbk51bWJlck9mT1NSRXhpdHMsIDApOwor
ICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZDYWNoZUZsdXNoZXMiLCBmdW5jdGlvbk51bWJl
ck9mQ2FjaGVGbHVzaGVzLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mUmVwbGFj
ZVdpdGhWTUhhbHRzIiwgZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoVk1IYWx0cywgMCk7Cisg
ICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMiLCBmdW5jdGlvbk51
bWJlck9mUmVwbGFjZVdpdGhKdW1wcywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJP
ZlJlcGxhY2VXaXRoTG9hZHMiLCBmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhMb2FkcywgMCk7
CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0
aW9ucyIsIGZ1bmN0aW9uTnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbnMsIDAp
OworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZTZXRQb2ludGVycyIsIGZ1bmN0aW9uTnVt
YmVyT2ZTZXRQb2ludGVycywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlJlcGF0
Y2hJbnQzMnMiLCBmdW5jdGlvbk51bWJlck9mUmVwYXRjaEludDMycywgMCk7CisgICAgYWRkRnVu
Y3Rpb24odm0sICJudW1iZXJPZlJlbGlua0p1bXBzIiwgZnVuY3Rpb25OdW1iZXJPZlJlbGlua0p1
bXBzLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mUmVsaW5rQ2FsbHMiLCBmdW5j
dGlvbk51bWJlck9mUmVsaW5rQ2FsbHMsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVy
T2ZSZXBhdGNoQ29tcGFjdHMiLCBmdW5jdGlvbk51bWJlck9mUmVwYXRjaENvbXBhY3RzLCAwKTsK
KyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnMiLCBmdW5j
dGlvbk51bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnMsIDApOworICAgIGFkZEZ1bmN0aW9uKHZt
LCAibnVtYmVyT2ZJblBsYWNlRmluYWxpemF0aW9ucyIsIGZ1bmN0aW9uTnVtYmVyT2ZJblBsYWNl
RmluYWxpemF0aW9ucywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZlNoYXJlZFN0
dWJDcmVhdGlvbiIsIGZ1bmN0aW9uTnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb24sIDApOworICAg
IGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZTaGFyZWRTdHViSGl0IiwgZnVuY3Rpb25OdW1iZXJP
ZlNoYXJlZFN0dWJIaXQsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZTaGFyZWRT
dHViQ3JlYXRpb25JbkJhc2VsaW5lIiwgZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlv
bkluQmFzZWxpbmUsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZTaGFyZWRTdHVi
SGl0SW5CYXNlbGluZSIsIGZ1bmN0aW9uTnVtYmVyT2ZTaGFyZWRTdHViSGl0SW5CYXNlbGluZSwg
MCk7CisKICAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0
YXR1c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhv
dXRDb3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpz
TnVsbCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwIGIv
U291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAKaW5kZXggMTkxNTMxZjEwMTZkOTM4OTcwM2ZkY2Jk
YzIyOTRlM2MxOTQ2MGNkNC4uODJlNDVlYmViODI5ZGIzNDc1YTcyYmE3YzM2ODU0ZDZjN2FlZDI5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvRGF0YUxvZy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c0lELmg+CiAjaW5jbHVkZSA8bXV0ZXg+CiAKLSNkZWZpbmUgREFUQV9MT0dfVE9fRklMRSAwCisj
ZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUgMQogCiAvLyBTZXQgdG8gMSB0byB1c2UgdGhlIHRlbXAg
ZGlyZWN0b3J5IGZyb20gY29uZnN0ciBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBkaXJlY3RvcnkuCiAv
LyBUaGUgbGFzdCBjb21wb25lbnQgb2YgREFUQV9MT0dfRklMRU5BTUUgd2lsbCBzdGlsbCBiZSB1
c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9XVEYv
d3RmL09wdGlvbmFsLmgKaW5kZXggNjdhYmExMWFmMTk3M2EzOTUxZjVjMzNjNTA2ZDIwOWY3YTZi
NWZhYS4uMDQ0NmMzNTJlOWU2NWNkMTQ5NzI3MzBhOGRlNGVjOGUzNjcxZWQxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25h
bC5oCkBAIC02NzMsNyArNjczLDcgQEAgY2xhc3MgT3B0aW9uYWw8VCY+CiAgIH0KIAogICBjb25z
dGV4cHIgVCYgdmFsdWUoKSBjb25zdCB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfVU5ERVJfQ09OU1RF
WFBSX0NPTlRFWFQocmVmKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1VOREVSX0NPTlNURVhQUl9D
T05URVhUKHJlZik7CiAgICAgcmV0dXJuICpyZWY7CiAgIH0KIApkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA0
NjUwZDZkZTAyMjkwYzg3Mzc4ZTVkNmJkMGVkOTNkMDM0ZTY0MDg0Li5hYjEyN2ZiZTRjMDU3Y2Qz
NWIxYzJlMjVhZDlhMmIxMDk0OTExYWQ5IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0No
YW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTA1LTIxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0pTQ10gVXNlIERhdGFJQyBmb3IgQWNjZXNzQ2FzZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKZXRTdHJlYW0yL0pldFN0cmVhbURyaXZlci5q
czoKKyAgICAgICAgKERyaXZlci5wcm90b3R5cGUuYXN5bmMgc3RhcnQpOgorICAgICAgICAocHJv
dG90eXBlLnVwZGF0ZVVJQmVmb3JlUnVuKToKKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vSGFz
aFNldC5qczoKKyAgICAgICAgKGRvUnVuLmludGVncmF0ZVdhc21KUy5pbnN0YW50aWF0ZUFycmF5
QnVmZmVyKToKKyAgICAgICAgKGRvUnVuLmludGVncmF0ZVdhc21KUy5kb05hdGl2ZVdhc20pOgor
ICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzOgorICAg
ICAgICAobG9nSlNDKToKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRl
c3QpOgorCiAyMDIxLTA1LTEyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW01vdGlvbk1hcmtdIFRlbXBvcmFyaWx5IHJlbW92ZSB0aGUgZm9jdXMg
dGVzdApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL0pldFN0cmVhbURy
aXZlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi9KZXRTdHJlYW1Ecml2ZXIuanMK
aW5kZXggZjgwODI5NzNiOGJkZjIzMmFhMGFkNzFkOTY0MDc1NGJiNTUzY2U5NS4uNmY4YmY2ZjRh
Mzg4OGY1ZDlhM2UzZTRjZTJjYjk4NjgzMzBmYjRhYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9KZXRTdHJlYW0yL0pldFN0cmVhbURyaXZlci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0pldFN0cmVhbTIvSmV0U3RyZWFtRHJpdmVyLmpzCkBAIC0yNzQsNiArMjc0LDI3IEBAIGFzeW5j
IHN0YXJ0KCkgewogICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2NhdGVnb3J5fTogJHt1
aUZyaWVuZGx5TnVtYmVyKGdlb21lYW4oc2NvcmVzKSl9YCk7CiAKICAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJcblRvdGFsIFNjb3JlOiAiLCB1aUZyaWVuZGx5TnVtYmVyKGdlb21lYW4oYWxsU2Nv
cmVzKSksICJcbiIpOworCisgICAgICAgICAgICBjb25zb2xlLmxvZygKKyAgICAgICAgICAgICR2
bS5wcmVjaXNlVGltZSgpICsgIjogbnVtYmVyT2ZPU1JFeGl0cyA9ICIgKyAkdm0ubnVtYmVyT2ZP
U1JFeGl0cygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZkNhY2hlRmx1c2hlcyA9ICIg
KyAkdm0ubnVtYmVyT2ZDYWNoZUZsdXNoZXMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVy
T2ZSZXBsYWNlV2l0aFZNSGFsdHMgPSAiICsgJHZtLm51bWJlck9mUmVwbGFjZVdpdGhWTUhhbHRz
KCkgKworICAgICAgICAgICAgICAgICIsIG51bWJlck9mUmVwbGFjZVdpdGhKdW1wcyA9ICIgKyAk
dm0ubnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBzKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJl
ck9mUmVwbGFjZVdpdGhMb2FkcyA9ICIgKyAkdm0ubnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzKCkg
KworICAgICAgICAgICAgICAgICIsIG51bWJlck9mUmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRp
b25zID0gIiArCisgICAgICAgICAgICAgICAgJHZtLm51bWJlck9mUmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb25zKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJlck9mU2V0UG9pbnRlcnMg
PSAiICsgJHZtLm51bWJlck9mU2V0UG9pbnRlcnMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVt
YmVyT2ZSZXBhdGNoSW50MzJzID0gIiArICR2bS5udW1iZXJPZlJlcGF0Y2hJbnQzMnMoKSArCisg
ICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZSZWxpbmtKdW1wcyA9ICIgKyAkdm0ubnVtYmVyT2ZS
ZWxpbmtKdW1wcygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZlJlbGlua0NhbGxzID0g
IiArICR2bS5udW1iZXJPZlJlbGlua0NhbGxzKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJl
ck9mUmVwYXRjaENvbXBhY3RzID0gIiArICR2bS5udW1iZXJPZlJlcGF0Y2hDb21wYWN0cygpICsK
KyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZk5ld0NvZGVGaW5hbGl6YXRpb25zID0gIiArICR2
bS5udW1iZXJPZk5ld0NvZGVGaW5hbGl6YXRpb25zKCkgKworICAgICAgICAgICAgICAgICIsIG51
bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMgPSAiICsgJHZtLm51bWJlck9mSW5QbGFjZUZpbmFs
aXphdGlvbnMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRp
b24gPSAiICsgJHZtLm51bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9uKCkgKworICAgICAgICAgICAg
ICAgICIsIG51bWJlck9mU2hhcmVkU3R1YkhpdCA9ICIgKyAkdm0ubnVtYmVyT2ZTaGFyZWRTdHVi
SGl0KCkgKworICAgICAgICAgICAgICAgICIsIG51bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9uSW5C
YXNlbGluZSA9ICIgKyAkdm0ubnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb25JbkJhc2VsaW5lKCkg
KworICAgICAgICAgICAgICAgICIsIG51bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxpbmUgPSAi
ICsgJHZtLm51bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxpbmUoKSArCisgICAgICAgICAgICAg
ICAgIi5cbiIpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5yZXBvcnRTY29yZVRvUnVuQmVu
Y2htYXJrUnVubmVyKCk7CkBAIC02NTAsNiArNjcxLDEwIEBAIGVsc2UgaWYgKGlzRDgpCiAgICAg
c2NvcmVJZGVudGlmaWVycygpIHsgdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMiKTsgfQogCiAgICAgdXBkYXRlVUlCZWZvcmVSdW4oKSB7CisgICAgICAg
IGlmICh0eXBlb2YgZHVtcFdvcmtsaXN0U3RhdGUgIT09ICJ1bmRlZmluZWQiCisgICAgICAgICAg
ICAmJiBkdW1wV29ya2xpc3RTdGF0ZSkKKyAgICAgICAgICAgICR2bS5kdW1wV29ya2xpc3RTdGF0
ZSgpOworICAgICAgICAKICAgICAgICAgaWYgKCFpc0luQnJvd3NlcikgewogICAgICAgICAgICAg
Y29uc29sZS5sb2coYFJ1bm5pbmcgJHt0aGlzLm5hbWV9OmApOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vSGFzaFNldC5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNtL0hhc2hTZXQuanMKaW5kZXggOTUw
N2FiZDEyMzIwN2NmZjQ2MDA1NzA4Zjc0NjMyZjVkNzVjZWZlNC4uNTdiNDAxYWNhMTYzMDk1OTE2
NjQ1MTYyMTQzYWNmYzM1MWM5NzJjNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9KZXRT
dHJlYW0yL3dhc20vSGFzaFNldC5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0pldFN0cmVhbTIv
d2FzbS9IYXNoU2V0LmpzCkBAIC0xLDQgKzEsNSBAQAogZnVuY3Rpb24gZG9SdW4oKSB7Citjb25z
b2xlLmxvZygiaGVsbG8gY29uc29sZSIpOwogbGV0IF9fc3RhcnR1cFN0YXJ0VGltZSA9IGJlbmNo
bWFya1RpbWUoKTsKIHZhciBtb2R1bGVPdmVycmlkZXMgPSB7fTsKIHZhciBrZXk7CkBAIC0zNzEs
NiArMzcyLDcgQEAgZnVuY3Rpb24gZW5sYXJnZU1lbW9yeSgpIHsKICBidWZmZXIgPSBNb2R1bGVb
ImJ1ZmZlciJdOwogfSBlbHNlIHsKICBpZiAodHlwZW9mIFdlYkFzc2VtYmx5ID09PSAib2JqZWN0
IiAmJiB0eXBlb2YgV2ViQXNzZW1ibHkuTWVtb3J5ID09PSAiZnVuY3Rpb24iKSB7CisgIGNvbnNv
bGUubG9nKCJBbGxvY2F0aW5nIG1lbW9yeS4gQnl0ZXMgPSAiICsgVE9UQUxfTUVNT1JZKTsKICAg
TW9kdWxlWyJ3YXNtTWVtb3J5Il0gPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsKICAgICJpbml0
aWFsIjogVE9UQUxfTUVNT1JZIC8gV0FTTV9QQUdFX1NJWkUsCiAgICAibWF4aW11bSI6IFRPVEFM
X01FTU9SWSAvIFdBU01fUEFHRV9TSVpFCkBAIC01ODIsNiArNTg0LDcgQEAgZnVuY3Rpb24gcmVj
ZWl2ZUluc3RhbnRpYXRlZFNvdXJjZShvdXRwdXQpIHsKICAgfQogICBmdW5jdGlvbiBpbnN0YW50
aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVyKSB7CiAgICBnZXRCaW5hcnlQcm9taXNlKCkudGhlbigo
ZnVuY3Rpb24oYmluYXJ5KSB7CisgICAgY29uc29sZS5sb2coIkluc3RhbnRpYXRpbmciKTsKICAg
ICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYmluYXJ5LCBpbmZvKTsKICAgIH0pKQog
ICAgLnRoZW4oKC4uLmFyZ3MpID0+IHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCmluZGV4IDQ3Y2VkZmMw
OWE0YzVlNzIxNjZlMzg4OWJiNjVlNjI4NjE2ZmI2NjYuLmU0Njg3MDIwNjViOWE5MjhiNWJlYzYx
NmM1Njg2MmVlOGNlYzE1YzUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwpAQCAtMTIwLDI1ICsxMjAs
NTMgQEAgZWxzZSBpZiAobiA9PSAxKQogLy8gVGhpcyBmdW5jdGlvbiBvdWdodCBiZSBhcyBzaW1w
bGUgYXMgcG9zc2libGUuIERvbid0IGV2ZW4gdXNlIFNpbXBsZVByb21pc2UuCiBCZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLl9ydW5UZXN0ID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIHByZXBhcmVS
ZXR1cm5WYWx1ZSwgY2FsbGJhY2spCiB7CisgICAgY29uc3QgZG9KU0NMb2dnaW5nID0gdHJ1ZTsK
KwogICAgIHZhciBzZWxmID0gdGhpczsKICAgICB2YXIgbm93ID0gd2luZG93LnBlcmZvcm1hbmNl
ICYmIHdpbmRvdy5wZXJmb3JtYW5jZS5ub3cgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cu
cGVyZm9ybWFuY2Uubm93KCk7IH0gOiBEYXRlLm5vdzsKIAogICAgIHZhciBjb250ZW50V2luZG93
ID0gc2VsZi5fZnJhbWUuY29udGVudFdpbmRvdzsKICAgICB2YXIgY29udGVudERvY3VtZW50ID0g
c2VsZi5fZnJhbWUuY29udGVudERvY3VtZW50OwogCisgICAgZnVuY3Rpb24gbG9nSlNDKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWRvSlNDTG9nZ2luZykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAkdm0uZGF0YUxvZygKKyAgICAgICAgICAgICR2bS5wcmVjaXNlVGltZSgp
ICsgIjogIiArIGNvbnRleHQgKyAiOyBudW1iZXJPZk9TUkV4aXRzID0gIiArICR2bS5udW1iZXJP
Zk9TUkV4aXRzKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJlck9mQ2FjaGVGbHVzaGVzID0g
IiArICR2bS5udW1iZXJPZkNhY2hlRmx1c2hlcygpICsKKyAgICAgICAgICAgICAgICAiLCBudW1i
ZXJPZlJlcGxhY2VXaXRoVk1IYWx0cyA9ICIgKyAkdm0ubnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFs
dHMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBzID0gIiAr
ICR2bS5udW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVt
YmVyT2ZSZXBsYWNlV2l0aExvYWRzID0gIiArICR2bS5udW1iZXJPZlJlcGxhY2VXaXRoTG9hZHMo
KSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbnMgPSAiICsKKyAgICAgICAgICAgICAgICAkdm0ubnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJl
c3NDb21wdXRhdGlvbnMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVtYmVyT2ZTZXRQb2ludGVy
cyA9ICIgKyAkdm0ubnVtYmVyT2ZTZXRQb2ludGVycygpICsKKyAgICAgICAgICAgICAgICAiLCBu
dW1iZXJPZlJlcGF0Y2hJbnQzMnMgPSAiICsgJHZtLm51bWJlck9mUmVwYXRjaEludDMycygpICsK
KyAgICAgICAgICAgICAgICAiLCBudW1iZXJPZlJlbGlua0p1bXBzID0gIiArICR2bS5udW1iZXJP
ZlJlbGlua0p1bXBzKCkgKworICAgICAgICAgICAgICAgICIsIG51bWJlck9mUmVsaW5rQ2FsbHMg
PSAiICsgJHZtLm51bWJlck9mUmVsaW5rQ2FsbHMoKSArCisgICAgICAgICAgICAgICAgIiwgbnVt
YmVyT2ZSZXBhdGNoQ29tcGFjdHMgPSAiICsgJHZtLm51bWJlck9mUmVwYXRjaENvbXBhY3RzKCkg
KworICAgICAgICAgICAgICAgICIsIG51bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnMgPSAiICsg
JHZtLm51bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnMoKSArCisgICAgICAgICAgICAgICAgIiwg
bnVtYmVyT2ZJblBsYWNlRmluYWxpemF0aW9ucyA9ICIgKyAkdm0ubnVtYmVyT2ZJblBsYWNlRmlu
YWxpemF0aW9ucygpICsgIi5cbiIpOworICAgIH0KKwogICAgIHNlbGYuX3dyaXRlTWFyayhzdWl0
ZS5uYW1lICsgJy4nICsgdGVzdC5uYW1lICsgJy1zdGFydCcpOwogICAgIHZhciBzdGFydFRpbWUg
PSBub3coKTsKKyAgICBsb2dKU0MoIkFib3V0IHRvIHJ1biB0ZXN0OiAiICsgc3VpdGUubmFtZSAr
ICIuIiArIHRlc3QubmFtZSk7CiAgICAgdGVzdC5ydW4ocHJlcGFyZVJldHVyblZhbHVlLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpOworICAgIGxvZ0pTQygiRmluaXNoZWQgcnVubmlu
ZyB0ZXN0Iik7CiAgICAgdmFyIGVuZFRpbWUgPSBub3coKTsKICAgICBzZWxmLl93cml0ZU1hcmso
c3VpdGUubmFtZSArICcuJyArIHRlc3QubmFtZSArICctc3luYy1lbmQnKTsKIAogICAgIHZhciBz
eW5jVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7CiAKICAgICB2YXIgc3RhcnRUaW1lID0gbm93
KCk7CisgICAgbG9nSlNDKCJBYm91dCB0byBzZXQgdGltZW91dCIpOwogICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgewogICAgICAgICAvLyBTb21lIGJyb3dzZXJzIGRvbid0IGltbWVkaWF0ZWx5
IHVwZGF0ZSB0aGUgbGF5b3V0IGZvciBwYWludC4KICAgICAgICAgLy8gRm9yY2UgdGhlIGxheW91
dCBoZXJlIHRvIGVuc3VyZSB3ZSdyZSBtZWFzdXJpbmcgdGhlIGxheW91dCB0aW1lLgogICAgICAg
ICB2YXIgaGVpZ2h0ID0gc2VsZi5fZnJhbWUuY29udGVudERvY3VtZW50LmJvZHkuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkuaGVpZ2h0OworICAgICAgICBsb2dKU0MoIkZpbmlzaGVkIHdvcmsgaW4g
dGltZW91dCBjYWxsYmFjayIpOwogICAgICAgICB2YXIgZW5kVGltZSA9IG5vdygpOwogICAgICAg
ICBzZWxmLl9mcmFtZS5jb250ZW50V2luZG93Ll91bnVzZWRIZWlnaHRWYWx1ZSA9IGhlaWdodDsg
Ly8gUHJldmVudCBkZWFkIGNvZGUgZWxpbWluYXRpb24uCiAgICAgICAgIHNlbGYuX3dyaXRlTWFy
ayhzdWl0ZS5uYW1lICsgJy4nICsgdGVzdC5uYW1lICsgJy1hc3luYy1lbmQnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429833</attachid>
            <date>2021-05-26 20:15:10 -0700</date>
            <delta_ts>2021-05-27 16:43:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210526201509.patch</filename>
            <type>text/plain</type>
            <size>470323</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZTkzZmU2NTkwNzMxZGFlNTdkMzYyNjNmYWQ4NGNiZDBiMGY4MWVjLi45M2FlNTE0NzVlOGY5MmNl
YWJhMjU4YWVmMDhjNDM4MjEzNmM5OThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzkgQEAKKzIwMjEtMDUtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS11bmlm
aWVkLXNvdXJjZXMuc2g6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVW5pZmll
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aFZNSGFs
dCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAg
ICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2FkKToKKyAgICAgICAgKEpT
Qzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OnNldFBvaW50ZXIpOgorICAgICAgICAoSlNDOjpBUk02
NEFzc2VtYmxlcjo6cmVwYXRjaEludDMyKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6
OnJlbGlua0p1bXApOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVsaW5rQ2FsbCk6
CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBhdGNoQ29tcGFjdCk6CisgICAgICAg
IChKU0M6OkFSTTY0QXNzZW1ibGVyOjpjYWNoZUZsdXNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNNjRFQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0RUFzc2VtYmxlcjo6c2V0UG9p
bnRlcik6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcC4KKyAg
ICAgICAgKiBhc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmg6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxp
emF0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAgICAoSlND
OjpMaW5rQnVmZmVyOjpsb2NhdGlvbk9mKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6
OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJp
dmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJy
YW5kKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKToK
KyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6
OmNvbGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJldXNlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6U2hhcmVhYmxlSklUU3R1YlJvdXRpbmU6
Om9ic2VydmVaZXJvUmVmQ291bnQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjplcXVhbElu
U2hhcmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6QWNj
ZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Omhhc2gpOgorICAgICAg
ICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OktleSk6CisgICAgICAgIChKU0M6
OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29u
c3QpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjpoYXNoKToKKyAg
ICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRyYW5zbGF0b3I6OmVxdWFsKToK
KyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8uaDoKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNl
dE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRP
ZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnJlc2V0SklURGF0YSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlU2hhcmVkSUMgY29uc3QpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nh
c2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpnZXRTY3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChK
U0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpT
Qzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6
OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUp
OgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXApOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9u
ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVj
b2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aGFzaCBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAg
KEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENh
c2VzKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAg
ICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OkFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6
OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFj
Y2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nl
c3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmFwcGVuZENhbGwpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4aXRDb3VudHMpOgor
ICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6
OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2gpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250
ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFy
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtl
Q2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRo
Q2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRW
aXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0NvbGxlY3Rpb24pOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hFeHRyYVJlZ0FyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaE5vbkFyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRHUFJFeHRyYUFyZyk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkU3RhY2tBcmcpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFBva2UpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBva2VPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjptYXJz
aGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50
c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNFbnRyeUltcGwpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbCk6CisgICAgICAgICogaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSk6Cisg
ICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgIChKU0M6OkpJVDo6ZmluYWxp
emVPbk1haW5UaHJlYWQpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
Q2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgor
ICAgICAgICAoSlNDOjpKSVRDb2RlOjp1c2VTaGFyZWRJQyk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUSW5saW5lQ2FjaGVHZW5l
cmF0b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5saW5l
Q2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVyYXRv
cjo6SklUQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OmZp
bmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29t
bW9uKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRv
cjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklU
RGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VP
ZkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToK
KyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6c2xvd1Bh
dGhKdW1wIGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6YXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZik6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhl
ZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04p
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9y
YWdlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
bl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXREb3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGln
dW91c0xvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2Jy
YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRT
dHViUm91dGluZS5oOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6YWJvdXRUb0RpZSk6
CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5lOjprZXlzIGNvbnN0KToKKyAgICAgICAgKiBq
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUpOgorICAgICAg
ICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmVhZFB1dElDQ2FsbFRhcmdldCk6
CisgICAgICAgIChKU0M6OnJlcGF0Y2hDYWxsKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRC
eSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hHZXRCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
QXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hBcnJheUdldEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5
SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6cmVw
YXRjaERlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5SUQpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoSW5CeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNl
dFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5zdGFuY2VPZik6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6bGlua1Nsb3dGb3Ip
OgorICAgICAgICAoSlNDOjpsaW5rVmlydHVhbEZvcik6CisgICAgICAgIChKU0M6OnJlc2V0R2V0
QnkpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldERl
bEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQYXRjaGFibGVKdW1wKToKKyAgICAgICAgKEpTQzo6
cmVzZXRJbkJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldEluc3RhbmNlT2YpOgorICAgICAgICAo
SlNDOjpyZXNldENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRTZXRQcml2
YXRlQnJhbmQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogcnVudGltZS9P
cHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0
b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIx
LTA1LTI0ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydCByMjc2NjEwIGJlY2F1c2UgaXQgY2F1c2VzIGEgMSUgUExUIHJl
Z3Jlc3Npb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IGEzNjZiYThiMWEyOWQzMDA1NmUzYWUyYzljZDU5MzdiNDBjYjVhNGMu
LjNiNTQ0ZjJlNDE0ZTA0NTM1YjU2ZmZiYzY2MjAwZWJiZDJkMTBhYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMDUtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9PcHRpb25hbC5oOgorICAgICAg
ICAoV1RGOjpPcHRpb25hbDxUOjp2YWx1ZSBjb25zdCk6CisKIDIwMjEtMDUtMjQgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0IHIyNzY2MTAgYmVjYXVzZSBpdCBjYXVzZXMgYSAxJSBQTFQgcmVncmVzc2lvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmMwODQwYjYxZTA5MzE2ZjM1ZGQzYzM3MGFlZDFh
ZDM4YWNlZGVhNC4uNTJhMDZkNTI5MTFiYTliZjdkZjk1YjM0NzFjN2E0NmYyZDBkNzcyNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MjQsNiArMTgyNCw3IEBACiAJCUUzMjJF
NUEzMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0NDM1MDA2RTc3MDkg
LyogREZHU25pcHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0NEE4MDA2RTc3MDkg
LyogRlRMU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMu
aCAqLzsgfTsKIAkJRTMyMzExNjkyNEExREMzNTAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLzsg
fTsKKwkJRTMyNTE5NDMyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNTE5NDIyNjU2
MzlFNTAwN0NGM0FCIC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwICovOyB9OwogCQlFMzI1OTU2NDIx
RkRBMkM5MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjU5NTYzMjFGREEyQzgwMDhFREM5
QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICovOyB9OwogCQlFMzI1QTM2MDIyMjExNTkw
MDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNUEzNUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0
cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLzsgfTsKIAkJRTMyODJCQkIxRkU5MzBBRjAwRURBRjcx
IC8qIFlhcnJFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4OTIsNiAr
Mjg5Myw3IEBACiAJCTBGOUMwM0Q0MUU5NDc2RjAwMENEOTEyNSAvKiBBaXJUbXBTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyVG1wU2V0Lmg7IHBhdGggPSBiMy9haXIv
QWlyVG1wU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUNBQkM2MURCNTRB
NzYwMDA4RTgzQiAvKiBBaXJQYWRJbnRlcmZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyUGFkSW50ZXJmZXJlbmNlLmNwcDsgcGF0aCA9IGIzL2Fpci9B
aXJQYWRJbnRlcmZlcmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlD
QUJDNzFEQjU0QTc2MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclBhZEludGVyZmVyZW5jZS5oOyBwYXRoID0gYjMvYWly
L0FpclBhZEludGVyZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlE
MDg4QTI2NDFDQzdFMDA0MUQ3MDEgLyogQXNzZW1ibGVyQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzc2VtYmxlckNvbW1vbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzZFMTY1REJCOEQwMDVBRDM4NyAvKiBEaXNhc3NlbWJs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlzYXNzZW1ibGVy
LmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0ZsdXNoZWRBdC5j
cHA7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVzaGVkQXQuaDsgcGF0aCA9IGRmZy9ERkdG
bHVzaGVkQXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNTQsNiArNTA1Niw3
IEBACiAJCUUzMjJFNUE0MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFNuaXBwZXRQYXJhbXMuY3Bw
OyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTbmlwcGV0UGFyYW1zLmg7IHBhdGgg
PSBmdGwvRlRMU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzIzMTE2ODI0QTFEQzJGMDA2OTNEQTUgLyogSW50bE51bWJlckZvcm1hdElubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMyNTE5NDIyNjU2MzlFNTAwN0NGM0FCIC8qIFVuaWZpZWRTb3VyY2UxNDYu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTE0
Ni5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3Vy
Y2VzL1VuaWZpZWRTb3VyY2UxNDYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJRTMyNTk1NjMyMUZEQTJDODAwOEVEQzlDIC8qIFJlZ0V4cEdsb2JhbERhdGFJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGFJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjVBMzVGMjIyMTE1OEEw
MDczNDlBMSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z1Byb3RvdHlwZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNkM0
OTYxRUNCRUY1NzAwQTlBOTA1IC8qIENsYXNzSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDbGFzc0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjg4NCw2ICs2ODg3LDcgQEAKIAkJCQk1MzBBNjZCNzFGQTNFNzdEMDAyNkE1NDUgLyog
VW5pZmllZFNvdXJjZTE0My5jcHAgKi8sCiAJCQkJNTMwQTY2QUQxRkEzRTc3NzAwMjZBNTQ1IC8q
IFVuaWZpZWRTb3VyY2UxNDQuY3BwICovLAogCQkJCTUzMEE2NkIwMUZBM0U3N0EwMDI2QTU0NSAv
KiBVbmlmaWVkU291cmNlMTQ1LmNwcCAqLywKKwkJCQlFMzI1MTk0MjI2NTYzOUU1MDA3Q0YzQUIg
LyogVW5pZmllZFNvdXJjZTE0Ni5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9ICJ1bmlmaWVkLXNv
dXJjZXMiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTg0MjEsNiArODQyNSw3IEBA
CiAJCQkJODZBREQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmggKi8sCiAJ
CQkJMEZBNkYzOTYyMENDQjdBNjAwQTAzRENEIC8qIEFzc2VtYmxlckJ1ZmZlci5jcHAgKi8sCiAJ
CQkJOTY4OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICovLAorCQkJ
CTBGOUQwODhBMjY0MUNDN0UwMDQxRDcwMSAvKiBBc3NlbWJsZXJDb21tb24uY3BwICovLAogCQkJ
CTQzQzM5MkFBMUMzQkVCMDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCAqLywKIAkJCQk4
NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8sCiAJCQkJNTIzMzU2
MjgyMjVFQjhFOTAwMjY4QkQyIC8qIENQVS5jcHAgKi8sCkBAIC05NDU4LDcgKzk0NjMsNiBAQAog
CQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDTG9vcFN0YWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2su
aCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3NiAvKiBKU1NldElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5NDQxMTY2NzYzMzIwMEQ2MTk3MSAvKiBD
b2RlQmxvY2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0YzNDE4MjAyMEQ3MDAyQzlC
MjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggaW4gSGVhZGVycyAq
LywKQEAgLTk2NTcsNyArOTY2MSw2IEBACiAJCQkJMEZEODJFNTcxNDFEQUYxMDAwMTc5Qzk0IC8q
IERGR09TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJD
NDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywK
LQkJCQlGRUY1QjQyNzI2MjhBQkQ5MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NS
RXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBG
QzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC05NzUyLDYgKzk3NTUsNyBAQAogCQkJCTE0NzM0MUQyMURDMDJFMkUwMEFBMjlCQSAvKiBFdmFs
RXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNB
IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAy
MDREIC8qIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVC
NDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYxMkRFMTAxOTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlvbkZ1enouaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDAwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBFeGNlcHRpb25IZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTY0OTEzNzFENzhGMDFEMDBBNjk0RDQgLyogRXhj
ZXB0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTc4OCw3ICs5NzkyLDYgQEAKIAkJCQkw
RkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5RDRDMEQxQzNFMUMxMTAwNkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVu
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MjMyNjI4QTBFRTAwMTZFNzc2IC8qIEhhc2hN
YXBJbXBsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkw
QzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI5Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjlDRjcxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRUaW1lT2JqZWN0
TWF0ZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk4MzIsNyArOTgzNSw2IEBACiAJ
CQkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTUyRUVENzk0MjQ5MkI4NzAwMDhGNEM5MyAvKiBGdW5jdGlvbkFs
bG93bGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBRDkxMEQxRENBOTI5NDAwMTRGOUZFIC8q
IEZ1bmN0aW9uQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyQzI2MjhDQkM4
MDAxNkU3NzYgLyogVk1UcmFwc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA0
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDczNDFEODFEQzAyRjk5MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkYwRjFBMDE2QjcyQTFBMDA1REY5NUIgLyogRnVuY3Rpb25FeGVj
dXRhYmxlRHVtcC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTExLDYgKzk5MTMsNyBAQAogCQkJCTE0
MkUzMTM2MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzlBMDkwODAxRDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRUY1QjQyMzI2MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1hcEltcGxJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OURGQ0JEQjFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3du
UHJvcGVydHlDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3
QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxNzdBMURDMjJGOTU4RDUwMEIzNENB
MiAvKiBIZWFwQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxODQsNiArMTAxODcsNyBA
QAogCQkJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkE0QkI3RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAv
KiBKU01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MjUyNjI4QTg1MDAwMTZFNzc2IC8q
IEpTTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0REVGOTYxODJEOTkxNDAwNTIy
QzIyIC8qIEpTTWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEIyODZEMUVCOEU2
RDUwMDBFQjVEMiAvKiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzAxM0NBOEMxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwMjE5LDYgKzEwMjIzLDcgQEAKIAkJCQkxNEQwMUE3NzIxRkIzNTFGMDBCQzU0
RTkgLyogSlNTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlE
MTExNTdGMzMyQzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Mjk5RDlFMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVGNUI0MjkyNjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENzAxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1Nv
dXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI3MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI0NywxMiArMTAyNTIsMTIgQEAKIAkJ
CQk4NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFM0M2MUIxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTNFMUY4RjgyMTU0NzE1QTAwMDFEREJDIC8qIEpTVmFsdWVQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlGRThDMDMxMjI2NEE2OTExMDAxQTQ0QUQgLyogU2xvd1BhdGhG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkMwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTVmFsdWVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1MTY3QkFCRDcwMDZENzYw
QSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxRDE2N0JB
QkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3OTVBQzYxODIwQTIzNTVFMDA1MkM3NkMgLyogSlNWaXJ0dWFsTWFjaGluZVByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtN
YXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDI3MjYyOEFCRDkwMDE2RTc3NiAvKiBKU1dl
YWtNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5MzExNkE3Q0FEMDAzQjA3
MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MzlCRkJCMDIyQUQzQ0RDMDAyM0Y0QzAgLyogSlNXZWFrT2JqZWN0
UmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNTMxLDYgKzEwNTM2LDcgQEAKIAkJCQlDMjE2MEZF
NzE1RjdFOTVFMDA5NDJERkMgLyogU2xvdFZpc2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3MDlGMkYwMTdBMEFDMDQwMDUxMkU5OCAvKiBTbG93UGF0aENhbGwu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFOEMwMzEyMjY0QTY5MTEwMDFBNDRBRCAvKiBTbG93UGF0
aEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCNEEzMzFDODRGMEQ2MDBGMUIxN0Ug
LyogU2xvd1BhdGhSZXR1cm5UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwNDAwNDBFNkE3
NDk0MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0YyM0E4
MjFFQ0YxM0ZFMDA5NzhEOTkgLyogU25pcHBldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDU2OCw3
ICsxMDU3NCw2IEBACiAJCQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzk4Njk0M0IxRjhDMEFDQzAwOTIzMkFFIC8qIFN0cnVjdHVy
ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDI1MjYyOEE4NTAwMDE2
RTc3NiAvKiBKU01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUFBMzEyMThCRDQ5
RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBRjcz
ODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDY2MSw2ICsxMDY2Niw3IEBACiAJCQkJRkUzMDIyRDcxRTQyODU3MzAw
QkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUM1Nzk3MzIzMTA1
QjUxMDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkVGNUI0MkMyNjI4Q0JDODAwMTZFNzc2IC8qIFZNVHJhcHNJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Mjg0N0FEQzIxRkZCODY5MDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAv
KiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc1Myw3ICsxMDc1OSw2IEBACiAJ
CQkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFERTgwMjlDMUUwOEYxREUwMDU4REU3OCAvKiBX
ZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNC
RjUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBl
Y3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUExREI1OUNCMjAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
RDJGQ0JGNzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFCMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3NjAsNiArMTE3NjUs
NyBAQAogCQkJCTUzMEE2NkMyMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkMzMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMTQ0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0
NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjUxOTQzMjY1
NjM5RTUwMDdDRjNBQiAvKiBVbmlmaWVkU291cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBXYXNtQWlySVJHZW5lcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS11
bmlmaWVkLXNvdXJjZXMuc2ggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0
ZS11bmlmaWVkLXNvdXJjZXMuc2gKaW5kZXggODg1MzNmZjc4ZWMxMWQyMzc1MTJkNDgxZGZkYTEw
MjA3MGEwYmRiZC4uMWUzOTAzNDM0MTk4ZjQyZDkxODA3NzcyNjFkYmU4MzZjYTBmNjQxMSAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtdW5pZmllZC1z
b3VyY2VzLnNoCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLXVu
aWZpZWQtc291cmNlcy5zaApAQCAtMTQsNyArMTQsNyBAQCBpZiBbIC16ICIke0JVSUxEX1NDUklQ
VFNfRElSfSIgXTsgdGhlbgogICAgIGZpCiBmaQogCi1VbmlmaWVkU291cmNlQ3BwRmlsZUNvdW50
PTE0NQorVW5pZmllZFNvdXJjZUNwcEZpbGVDb3VudD0xNDYKIFVuaWZpZWRTb3VyY2VNbUZpbGVD
b3VudD01CiAKIGlmIFsgJCMgLWVxIDAgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDNlZWZhMDRkYjUxMzU1MzVlZWZhZGZkNzMxNzY1NDgxM2E2ODY2YzguLmU2YWE5NDc4
NDNmODRlOGVkNzA1ZWE4N2I3YjAwZjYyY2ZhY2I2MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQ2LDYgKzQ2LDcgQEAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCiBhc3NlbWJsZXIv
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAKIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuY3Bw
Cithc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmNwcAogYXNzZW1ibGVyL0NQVS5jcHAKIGFzc2Vt
Ymxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVW5pZmllZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVW5pZmllZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKaW5kZXggOGI0ZjVkODk3ZjZlZTM5Y2I2OTE0MjAyNzM1NDIyYzA5NTgzMzk1Zi4uZjdm
NWY2YTdhZDViNjdkNTgxMmNjMGI0YzVkNTgxZDMyZDM2MWUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1VuaWZpZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9VbmlmaWVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAt
NTIsNiArNTIsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyYwogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVk
U291cmNlMTQzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ0LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNl
cy9VbmlmaWVkU291cmNlMTQ1LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTQ2LmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZp
ZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2Ux
Ni5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE3LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCmluZGV4IDJjYzUzYzhjY2RhNWRk
M2NhYzE1NmE0YjU5MWY3OWE2ODhiZDc1YmYuLjczZDI2YjI3N2Q5NzFhM2M3NWQ4ZmM3YmE2ODQ1
YjdiM2QwZTUxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNNjRBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmgKQEAgLTI2MDAsNiArMjYwMCw3IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVy
IHsKICAgICAgICAgaW50IGluc24gPSBkYXRhQ2FjaGVaZXJvVmlydHVhbEFkZHJlc3MoQVJNNjRS
ZWdpc3RlcnM6OnpyKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVP
ZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAgICAgIHBlcmZvcm1KSVRN
ZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CisgICAgICAgIFdURjo6YXRvbWljRXhj
aGFuZ2VBZGQoJmdfbnVtYmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHMsIDEpOwogICAgICAgICBjYWNo
ZUZsdXNoKHdoZXJlLCBzaXplb2YoaW50KSk7CiAgICAgfQogCkBAIC0yNjE5LDYgKzI2MjAsNyBA
QCBjbGFzcyBBUk02NEFzc2VtYmxlciB7CiAgICAgICAgIGludCBpbnNuID0gdW5jb25kaXRpb25h
bEJyYW5jaEltbWVkaWF0ZShmYWxzZSwgc3RhdGljX2Nhc3Q8aW50PihvZmZzZXQpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdo
ZXJlKSA9PSB3aGVyZSk7CiAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBz
aXplb2YoaW50KSk7CisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZS
ZXBsYWNlV2l0aEp1bXBzLCAxKTsKICAgICAgICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGlu
dCkpOwogICAgIH0KICAgICAKQEAgLTI2NTAsNiArMjY1Miw3IEBAIGNsYXNzIEFSTTY0QXNzZW1i
bGVyIHsKICAgICAgICAgICAgIGludCBpbnNuID0gbG9hZFN0b3JlUmVnaXN0ZXJVbnNpZ25lZElt
bWVkaWF0ZShNZW1PcFNpemVfNjQsIGZhbHNlLCBNZW1PcF9MT0FELCBlbmNvZGVQb3NpdGl2ZUlt
bWVkaWF0ZTw2ND4oaW1tMTIpLCBybiwgcmQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAg
ICAgICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwgc2l6ZW9mKGludCkpOwor
ICAgICAgICAgICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgmZ19udW1iZXJPZlJlcGxhY2VXaXRo
TG9hZHMsIDEpOwogICAgICAgICAgICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGludCkpOwog
ICAgICAgICB9CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTI2ODUsNiArMjY4OCw3IEBAIGNsYXNz
IEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgICAgIGludCBpbnNuID0gYWRkU3VidHJhY3RJbW1l
ZGlhdGUoRGF0YXNpemVfNjQsIEFkZE9wX0FERCwgRG9udFNldEZsYWdzLCAwLCBpbW0xMiAqIHNp
emVvZih2b2lkKiksIHJuLCBydCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVw
VG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4od2hlcmUpID09IHdoZXJlKTsKICAgICAgICAg
ICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CisgICAgICAg
ICAgICBXVEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mUmVwbGFjZVdpdGhBZGRyZXNz
Q29tcHV0YXRpb25zLCAxKTsKICAgICAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihp
bnQpKTsKICAgICAgICAgfQogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0yNzIxLDggKzI3MjUsMTAg
QEAgY2xhc3MgQVJNNjRBc3NlbWJsZXIgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVw
VG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4oYWRkcmVzcykgPT0gYWRkcmVzcyk7CiAgICAg
ICAgIHBlcmZvcm1KSVRNZW1jcHkoYWRkcmVzcywgYnVmZmVyLCBzaXplb2YoaW50KSAqIDMpOwog
Ci0gICAgICAgIGlmIChmbHVzaCkKKyAgICAgICAgaWYgKGZsdXNoKSB7CisgICAgICAgICAgICBX
VEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZnX251bWJlck9mU2V0UG9pbnRlcnMsIDEpOwogICAgICAg
ICAgICAgY2FjaGVGbHVzaChhZGRyZXNzLCBzaXplb2YoaW50KSAqIDMpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaEludDMyKHZvaWQqIHdoZXJlLCBpbnQzMl90
IHZhbHVlKQpAQCAtMjc0OSw2ICsyNzU1LDcgQEAgY2xhc3MgQVJNNjRBc3NlbWJsZXIgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4o
d2hlcmUpID09IHdoZXJlKTsKICAgICAgICAgcGVyZm9ybUpJVE1lbWNweSh3aGVyZSwgJmJ1ZmZl
ciwgc2l6ZW9mKGludCkgKiAyKTsKIAorICAgICAgICBXVEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZn
X251bWJlck9mUmVwYXRjaEludDMycywgMSk7CiAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNp
emVvZihpbnQpICogMik7CiAgICAgfQogCkBAIC0yNzkyLDYgKzI3OTksNyBAQCBjbGFzcyBBUk02
NEFzc2VtYmxlciB7CiAgICAgc3RhdGljIHZvaWQgcmVsaW5rSnVtcCh2b2lkKiBmcm9tLCB2b2lk
KiB0bykKICAgICB7CiAgICAgICAgIHJlbGlua0p1bXBPckNhbGw8QnJhbmNoVHlwZV9KTVA+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50Kj4oZnJvbSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50Kj4o
ZnJvbSksIHRvKTsKKyAgICAgICAgV1RGOjphdG9taWNFeGNoYW5nZUFkZCgmZ19udW1iZXJPZlJl
bGlua0p1bXBzLCAxKTsKICAgICAgICAgY2FjaGVGbHVzaChmcm9tLCBzaXplb2YoaW50KSk7CiAg
ICAgfQogICAgIApAQCAtMjgwMyw2ICsyODExLDcgQEAgY2xhc3MgQVJNNjRBc3NlbWJsZXIgewog
ICAgIHN0YXRpYyB2b2lkIHJlbGlua0NhbGwodm9pZCogZnJvbSwgdm9pZCogdG8pCiAgICAgewog
ICAgICAgICByZWxpbmtKdW1wT3JDYWxsPEJyYW5jaFR5cGVfQ0FMTD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnQqPihmcm9tKSAtIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50Kj4oZnJvbSkgLSAx
LCB0byk7CisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZSZWxpbmtD
YWxscywgMSk7CiAgICAgICAgIGNhY2hlRmx1c2gocmVpbnRlcnByZXRfY2FzdDxpbnQqPihmcm9t
KSAtIDEsIHNpemVvZihpbnQpKTsKICAgICB9CiAKQEAgLTI4NDYsNiArMjg1NSw3IEBAIGNsYXNz
IEFSTTY0QXNzZW1ibGVyIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlw
bGVPZjxpbnN0cnVjdGlvblNpemU+KHdoZXJlKSA9PSB3aGVyZSk7CiAgICAgICAgIHBlcmZvcm1K
SVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CiAKKyAgICAgICAgV1RGOjphdG9t
aWNFeGNoYW5nZUFkZCgmZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0cywgMSk7CiAgICAgICAgIGNh
Y2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsKICAgICB9CiAKQEAgLTI4NjAsNiArMjg3MCw3
IEBAIGNsYXNzIEFSTTY0QXNzZW1ibGVyIHsKIAogICAgIHN0YXRpYyB2b2lkIGNhY2hlRmx1c2go
dm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgeworICAgICAgICBXVEY6OmF0b21pY0V4Y2hh
bmdlQWRkKCZnX251bWJlck9mQ2FjaGVGbHVzaGVzLCAxKTsKICNpZiBPUyhEQVJXSU4pCiAgICAg
ICAgIHN5c19jYWNoZV9jb250cm9sKGtDYWNoZUZ1bmN0aW9uUHJlcGFyZUZvckV4ZWN1dGlvbiwg
Y29kZSwgc2l6ZSk7CiAjZWxpZiBPUyhGVUNIU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEVBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNNjRFQXNzZW1ibGVyLmgKaW5kZXggMWYwMTBmY2U2MTE0YzU0OTVk
NzhjOTQ2NzgzMzgwZmU2Nzk3ZDE5MS4uNzI1OGVhZTc0YjM3MDdhNDUzNjlhMjk1NzU2M2EzMWFj
ZDQ0ZTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02
NEVBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0
RUFzc2VtYmxlci5oCkBAIC0zOTYsOCArMzk2LDEwIEBAIGNsYXNzIEFSTTY0RUFzc2VtYmxlciA6
IHB1YmxpYyBBUk02NEFzc2VtYmxlciB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBU
b011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPihhZGRyZXNzKSA9PSBhZGRyZXNzKTsKICAgICAg
ICAgcGVyZm9ybUpJVE1lbWNweShhZGRyZXNzLCBidWZmZXIsIHNpemVvZihpbnQpICogNCk7CiAK
LSAgICAgICAgaWYgKGZsdXNoKQorICAgICAgICBpZiAoZmx1c2gpIHsKKyAgICAgICAgICAgIFdU
Rjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZTZXRQb2ludGVycywgMSk7CiAgICAgICAg
ICAgICBjYWNoZUZsdXNoKGFkZHJlc3MsIHNpemVvZihpbnQpICogNCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckNvbW1vbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTExNTRlOGIwMWUwYWEwOThhZTM4NmE3NWRjMDYxOTQyZDUxZjdjNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29t
bW9uLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkFzc2VtYmxlckNvbW1vbi5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKwordWludDY0X3QgZ19udW1iZXJPZkNhY2hlRmx1c2hlczsKK3VpbnQ2NF90IGdfbnVt
YmVyT2ZSZXBsYWNlV2l0aFZNSGFsdHM7Cit1aW50NjRfdCBnX251bWJlck9mUmVwbGFjZVdpdGhK
dW1wczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzOwordWludDY0X3QgZ19u
dW1iZXJPZlJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uczsKK3VpbnQ2NF90IGdfbnVtYmVy
T2ZTZXRQb2ludGVyczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZSZXBhdGNoSW50MzJzOwordWludDY0
X3QgZ19udW1iZXJPZlJlbGlua0p1bXBzOwordWludDY0X3QgZ19udW1iZXJPZlJlbGlua0NhbGxz
OwordWludDY0X3QgZ19udW1iZXJPZlJlcGF0Y2hDb21wYWN0czsKK3VpbnQ2NF90IGdfbnVtYmVy
T2ZOZXdDb2RlRmluYWxpemF0aW9uczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZJblBsYWNlRmluYWxp
emF0aW9uczsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb247Cit1aW50NjRf
dCBnX251bWJlck9mU2hhcmVkU3R1YkhpdDsKK3VpbnQ2NF90IGdfbnVtYmVyT2ZTaGFyZWRTdHVi
Q3JlYXRpb25JbkJhc2VsaW5lOwordWludDY0X3QgZ19udW1iZXJPZlNoYXJlZFN0dWJIaXRJbkJh
c2VsaW5lOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKaW5kZXggYTU5NDgyM2Q2YTRkN2Y1MGE4
MTRiMjE2YjA3M2E4Y2YwZjc5MTllYy4uOTU4NjE1NzYwMzUzYTQ4MDVjNjVkYTljZmRjMDBkY2E2
ZjA0ZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3Nl
bWJsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckNvbW1vbi5oCkBAIC0yOTYsNCArMjk2LDIxIEBAIGNsYXNzIEFSTTY0TG9naWNhbEltbWVk
aWF0ZSB7CiAgICAgaW50IG1fdmFsdWU7CiB9OwogCitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4g
dWludDY0X3QgZ19udW1iZXJPZkNhY2hlRmx1c2hlczsKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVy
biB1aW50NjRfdCBnX251bWJlck9mUmVwbGFjZVdpdGhWTUhhbHRzOworSlNfRVhQT1JUX1BSSVZB
VEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBzOworSlNfRVhQT1JU
X1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzOworSlNf
RVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJl
c3NDb21wdXRhdGlvbnM7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1i
ZXJPZlNldFBvaW50ZXJzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVt
YmVyT2ZSZXBhdGNoSW50MzJzOworSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdf
bnVtYmVyT2ZSZWxpbmtKdW1wczsKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVybiB1aW50NjRfdCBn
X251bWJlck9mUmVsaW5rQ2FsbHM7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3Qg
Z19udW1iZXJPZlJlcGF0Y2hDb21wYWN0czsKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVybiB1aW50
NjRfdCBnX251bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnM7CitKU19FWFBPUlRfUFJJVkFURSBl
eHRlcm4gdWludDY0X3QgZ19udW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25zOworSlNfRVhQT1JU
X1BSSVZBVEUgZXh0ZXJuIHVpbnQ2NF90IGdfbnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb247CitK
U19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZlNoYXJlZFN0dWJIaXQ7
CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19udW1iZXJPZlNoYXJlZFN0dWJD
cmVhdGlvbkluQmFzZWxpbmU7CitKU19FWFBPUlRfUFJJVkFURSBleHRlcm4gdWludDY0X3QgZ19u
dW1iZXJPZlNoYXJlZFN0dWJIaXRJbkJhc2VsaW5lOworCiB9IC8vIG5hbWVzcGFjZSBKU0MuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAppbmRleCBk
ZTJhZDUzODEyNzBmMzBmMDFjODcwNmZiMjg5OTczZjQ4NmJhMmU3Li5jMDVlMWQwNDg5YjdkZTUw
YTc5Nzg1MTM5Mjk4MTBiMzAxMTdhYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTQ4MSw2ICs0ODEsMTEgQEAgdm9pZCBMaW5rQnVm
ZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKCkKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7CiAjZW5kaWYKKworICAgIGlmIChtX2V4ZWN1dGFibGVNZW1vcnkp
CisgICAgICAgIFdURjo6YXRvbWljRXhjaGFuZ2VBZGQoJmdfbnVtYmVyT2ZOZXdDb2RlRmluYWxp
emF0aW9ucywgMSk7CisgICAgZWxzZQorICAgICAgICBXVEY6OmF0b21pY0V4Y2hhbmdlQWRkKCZn
X251bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMsIDEpOwogICAgIAogICAgIHNfcHJvZmlsZUN1
bW11bGF0aXZlTGlua2VkU2l6ZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcHJvZmlsZSldICs9
IG1fc2l6ZTsKICAgICBzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZENvdW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9wcm9maWxlKV0rKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgKaW5kZXggYWNlMTdlNzMwOGY1MDZlYzI5NjE1NDdhZjlhZDMyNGQw
ODRjNTMxMi4uYjBmYmYzMjgyYzA1NGM1ZjNlZmEyMDMzMTA5ZDA3OTg4NTUwM2NmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTIzMiw4ICsy
MzIsOCBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAg
IENvZGVMb2NhdGlvbkNhbGw8dGFnPiBsb2NhdGlvbk9mKENhbGwgY2FsbCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOwotICAgICAgICBBU1NF
UlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKKyAgICAgICAgLy8gQVNTRVJUKGNhbGwu
aXNGbGFnU2V0KENhbGw6OkxpbmthYmxlKSk7CisgICAgICAgIC8vIEFTU0VSVCghY2FsbC5pc0Zs
YWdTZXQoQ2FsbDo6TmVhcikpOwogICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbDx0YWc+
KGdldExpbmtlckFkZHJlc3M8dGFnPihhcHBseU9mZnNldChjYWxsLm1fbGFiZWwpKSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggYzVmZjc4MjI2MmU3MTg1Yjg3NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uY2VmZmEwMzdhODk0
YzM1YTRhZDliYjlmYzlkYTNjY2QyZWE1NDJlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAi
VGh1bmtHZW5lcmF0b3JzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC02OCw3ICs2OSw3IEBAIEFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpCiAgICAg
UkVMRUFTRV9BU1NFUlQobV9jb25kaXRpb25TZXQuaXNWYWxpZCgpKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQs
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEluSGl0OgpAQCAtMTA1LDEwICsxMDYsMTAg
QEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9OwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50
aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3ND
YXNlOjpjcmVhdGVUcmFuc2l0aW9uKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKQEAgLTEyMiwzNCArMTIzLDM0IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZt
LCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNv
bmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKK1JlZjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKSk7CiAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwg
b2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZz
ZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFu
ZChWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVu
dGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBp
ZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJh
bmQoCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAog
ICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3ND
YXNlKHZtLCBvd25lciwgU2V0UHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0
LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9m
ZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCiBBY2Nlc3NDYXNlOjp+QWNjZXNz
Q2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpm
cm9tU3RydWN0dXJlU3R1YkluZm8oCitSZWZQdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJv
bVN0cnVjdHVyZVN0dWJJbmZvKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAg
ICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5cGUoKSkgewpAQCAtMTg4LDkgKzE4OSw5IEBAIEpT
T2JqZWN0KiBBY2Nlc3NDYXNlOjphbHRlcm5hdGVCYXNlKCkgY29uc3QKICAgICByZXR1cm4gY29u
ZGl0aW9uU2V0KCkuc2xvdEJhc2VDb25kaXRpb24oKS5vYmplY3QoKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IHJlc3VsdChuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0
YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk2NCw2ICs5NjUsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BS
ID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpAQCAtMTA2MSw2ICsxMDY0LDggQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxv
Y2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVn
cyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAg
ICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBh
bGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
YWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMTQ0LDYgKzExNDksOCBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdz
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAg
ICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBh
bGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAKQEAgLTEyMDUsNiArMTIxMiw4IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3Mp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAg
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAt
MTMxNyw2ICsxMzI2LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnBy
b3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIo
KTsKQEAgLTEzOTQsNiArMTQwNSw4MSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgZ2VuZXJhdGVJbXBsKHN0YXRlKTsKIH0KIAor
dm9pZCBBY2Nlc3NDYXNlOjpjb2xsZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBWTSYgdm0g
PSBzdGF0ZS5tX3ZtOworCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIERpcmVjdEFy
Z3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNl
IE1vZHVsZU5hbWVzcGFjZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkU2NvcGVkQXJndW1lbnRzTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWREaXJlY3RBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OENsYW1wZWRMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVp
bnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDMyTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRUeXBlZEFycmF5VWludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5
RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0NjRMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAg
IGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6
CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9yYWdlTG9hZDoKKyAgICBjYXNlIEluc3RhbmNlT2ZH
ZW5lcmljOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIExvYWQ6CisgICAgY2FzZSBHZXRHZXR0ZXI6CisgICAgY2FzZSBHZXR0ZXI6CisgICAg
Y2FzZSBTZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1ZUdldHRlcjoKKyAgICBjYXNlIEN1c3Rv
bUFjY2Vzc29yR2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CisgICAgY2FzZSBD
dXN0b21BY2Nlc3NvclNldHRlcjogeworICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChtX29mZnNl
dCkpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZTsKKyAgICAgICAgICAg
IGlmICghaGFzQWx0ZXJuYXRlQmFzZSgpKQorICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUg
PSBzdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyU3Ry
dWN0dXJlID0gYWx0ZXJuYXRlQmFzZSgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgY3Vy
clN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBvZmZz
ZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24mIGNvbmRpdGlvbiA6IG1fY29uZGl0aW9uU2V0KSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX3BvbHlQcm90b0FjY2Vzc0NoYWluKTsKKworICAgICAgICBpZiAoY29uZGl0aW9uLmlz
V2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRp
b246OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgeworICAgICAgICAg
ICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJsb2NrLCBjb25kaXRpb24pOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBGb3Igbm93LCB3ZSBvbmx5
IGFsbG93IGVxdWl2YWxlbmNlIHdoZW4gaXQncyB3YXRjaGFibGUuCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgIT0gUHJvcGVydHlDb25kaXRpb246
OkVxdWl2YWxlbmNlKTsKKworICAgICAgICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVz
VmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAgICAg
ICAvLyBUaGUgcmVhc29uIHdoeSB0aGlzIGNhbm5vdCBoYXBwZW4gaXMgdGhhdCB3ZSByZXF1aXJl
IHRoYXQgUG9seW1vcnBoaWNBY2Nlc3MgY2FsbHMKKyAgICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlKCkgb25seSBhZnRlciBpdCBoYXMgdmVyaWZpZWQgdGhhdAorICAgICAgICAgICAg
Ly8gQWNjZXNzQ2FzZTo6Y291bGRTdGlsbFN1Y2NlZWQoKSByZXR1cm5lZCB0cnVlLgorCisgICAg
ICAgICAgICBkYXRhTG9nKCJUaGlzIGNvbmRpdGlvbiBpcyBubyBsb25nZXIgbWV0OiAiLCBjb25k
aXRpb24sICJcbiIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2Vh
ayByZWZlcmVuY2UgdGhhdCBpc24ndCBvdGhlcndpc2UgbGlzdGVkIGFueXdoZXJlLgorICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKHZt
KTsKKyAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuYXBwZW5kKFdyaXRlQmFycmllcjxKU0Nl
bGw+KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpOworICAgIH0KK30KKwogdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CkBAIC0xNDE3LDcgKzE1
MDMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFp
bik7CiAKICAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJv
cGVydHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVu
c3VyZVdhdGNoYWJpbGl0eSkpIHsKLSAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50
KGNvbmRpdGlvbik7CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxv
Y2ssIGNvbmRpdGlvbik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0x
NTgyLDcgKzE2NjgsMTAgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKIAogICAgICAgICAvLyBUaGlzIGFsc28gZG9lcyB0aGUgbmVj
ZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSdyZSBhbgogICAgICAgICAv
LyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgotICAgICAgICBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKCk7CisgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
ICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAg
ICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0
ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJl
c2VydmUpOwogCiAgICAgICAgIGF1dG8gcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JD
YWxsID0gWyZdKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSYgc3BpbGxTdGF0ZSwg
Ym9vbCBjYWxsSGFzUmV0dXJuVmFsdWUpIHsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGRvbnRS
ZXN0b3JlOwpAQCAtMTcxMiw2ICsxODAxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICNlbmRpZgogICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIEdQUkluZm86
OnJlZ1QzKTsKICAgICAgICAgICAgIGFjY2Vzcy5jYWxsTGlua0luZm8oKS0+ZW1pdFNsb3dQYXRo
KHZtLCBqaXQpOworCiAgICAgICAgICAgICBpZiAobV90eXBlID09IEdldHRlcikKICAgICAgICAg
ICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7CiAgICAgICAgICAgICBkb25lLmFw
cGVuZChqaXQuanVtcCgpKTsKQEAgLTE3MjMsOCArMTgxMywxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICBqaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0
YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRl
c1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChjb2RlQmxvY2stPnN0YWNrUG9p
bnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRS
ZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9m
U3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsKKyAgICAgICAgICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgc3RhY2tQb2ludGVyT2Zm
c2V0IC09IDggKiAyOworICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXQpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICBib29sIGNh
bGxIYXNSZXR1cm5WYWx1ZSA9IGlzR2V0dGVyKCk7CiAgICAgICAgICAgICByZXN0b3JlTGl2ZVJl
Z2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoc3BpbGxTdGF0ZSwgY2FsbEhhc1JldHVyblZhbHVlKTsK
IApAQCAtMTg0NSw3ICsxOTM3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBza2lwQmFycmllci5hcHBl
bmQoaml0LmJhcnJpZXJCcmFuY2godm0sIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIpKTsKIAogICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTUHJv
eHk6OnRhcmdldE9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICBhdXRvIHNwaWxs
U3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRF
eGNlcHRpb25zKCk7CisKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAg
ICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6
bHIpOworICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVn
aXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyhleHRyYVJlZ2lzdGVyc1RvUHJl
c2VydmUpOworCiAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZt
KSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgICAgICAgICAgYXV0byBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKQEAgLTE4NzUsNiArMTk3Miw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2
YWx1ZVJlZ3MpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQ
Uik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSMiA9IEludmFsaWRHUFJSZWc7CkBAIC0xOTMzLDYgKzIwMzIsOCBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAg
ICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAg
ICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAg
ICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7
CiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxs
U3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGpp
dC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMTMyLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2NhdG9yLmxv
Y2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVn
cyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOworICAgICAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNj
cmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBv
aW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJl
KCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24p
OwpAQCAtMjE5MSw2ICsyMjk0LDE0IEBAIFR5cGVkQXJyYXlUeXBlIEFjY2Vzc0Nhc2U6OnRvVHlw
ZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIH0KIH0KIAordm9pZCBTaGFy
ZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCit7CisgICAgYXV0byBp
dGVyID0gbV92bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLmZpbmQ8U2hhcmVkSklUU3R1YlNl
dDo6UG9pbnRlclRyYW5zbGF0b3I+KHRoaXMpOworICAgIGlmIChpdGVyICE9IG1fdm0ubV9zaGFy
ZWRKSVRTdHVicy0+bV9zdHVicy5lbmQoKSkKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJz
LT5tX3N0dWJzLnJlbW92ZShpdGVyKTsKKyAgICBKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9S
ZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIHZvaWQgQWNjZXNzQ2FzZTo6Y2hl
Y2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CkBAIC0yMjAzLDYg
KzIzMTQsMTEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAorYm9vbCBB
Y2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nlc3NDYXNlJiBsaHMsIGNvbnN0IEFj
Y2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3QgY2FyZSBtX3N0YXRlLgorICAgIC8v
IEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhlbSBoYXZlIG1fcG9seVByb3RvQWNj
ZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluIHx8IHJocy5tX3Bv
bHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5h
ZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1fdHlwZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhzLm1fb2Zmc2V0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5ICE9IHJocy5tX3ZpYVByb3h5KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3N0cnVjdHVyZS5nZXQoKSAhPSBy
aHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhz
Lm1fY29uZGl0aW9uU2V0LnNpemUoKSAhPSByaHMubV9jb25kaXRpb25TZXQuc2l6ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxpdGVyID0gbGhzLm1fY29uZGl0aW9uU2V0
LmJlZ2luKCk7CisgICAgYXV0byByaXRlciA9IHJocy5tX2NvbmRpdGlvblNldC5iZWdpbigpOwor
ICAgIGZvciAoOyBsaXRlciAhPSBsaHMubV9jb25kaXRpb25TZXQuZW5kKCk7ICsrbGl0ZXIsICsr
cml0ZXIpIHsKKyAgICAgICAgaWYgKCEoKmxpdGVyID09ICpyaXRlcikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChsaHMubV90eXBlKSB7CisgICAgY2Fz
ZSBMb2FkOgorICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNl
IERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CisgICAgY2FzZSBS
ZXBsYWNlOgorICAgIGNhc2UgTWlzczoKKyAgICBjYXNlIEdldEdldHRlcjoKKyAgICBjYXNlIElu
SGl0OgorICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQXJyYXlMZW5ndGg6CisgICAgY2FzZSBT
dHJpbmdMZW5ndGg6CisgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBT
Y29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBj
YXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICBjYXNlIEluZGV4ZWRJbnQzMkxvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRDb250aWd1b3VzTG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFy
Z3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6
CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVyOiB7CisgICAgICAgIC8vIEdldHRl
ciBhbmQgU2V0dGVyIHJlbGllcyBvbiBDb2RlQmxvY2ssIHdoaWNoIG1ha2VzIHNoYXJpbmcgaW1w
b3NzaWJsZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNhc2UgQ3VzdG9t
VmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1
c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAg
ICAgYXV0byYgbGhzZCA9IGxocy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAg
ICBhdXRvJiByaHNkID0gcmhzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAg
IGlmIChsaHNkLm1fZG9tQXR0cmlidXRlIHx8IHJoc2QubV9kb21BdHRyaWJ1dGUpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBsaHNkLm1fY3VzdG9tU2xvdEJhc2Ug
PT0gcmhzZC5tX2N1c3RvbVNsb3RCYXNlCisgICAgICAgICAgICAmJiBsaHNkLm1fY3VzdG9tQWNj
ZXNzb3IgPT0gcmhzZC5tX2N1c3RvbUFjY2Vzc29yOworICAgIH0KKworICAgIGNhc2UgSW50cmlu
c2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8SW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX2ludHJpbnNpY0Z1bmN0aW9u
ID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAgICB9CisKKyAgICBjYXNlIE1vZHVsZU5h
bWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPE1vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBsaHNkLm1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmplY3QKKyAgICAgICAgICAgICYmIGxo
c2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1fbW9kdWxlRW52aXJvbm1lbnQKKyAgICAg
ICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSByaHNkLm1fc2NvcGVPZmZzZXQ7CisgICAg
fQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAgIGNhc2UgSW5zdGFuY2VPZk1pc3M6Cisg
ICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFz
PEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPElu
c3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX3Byb3RvdHlwZSA9
PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUz
N2RlM2ZhNzA2OC4uN2U4Zjc3MjVlYTFlNjdlNDJkYjYxN2U5YmNkMDc2OWEyZDM3NDg0NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0yOCwxMCAr
MjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIgogI2luY2x1
ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9ySGFzaC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9X
SVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8vIFdlIHdpbGwgc29tZXRpbWVzIGJ1
ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBvbHltb3JwaGljQWNjZXNzIG9iamVj
dCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBhbGxvd3MgdXMgdG8gb25seSByZWdl
bmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVmdWxseSkgbW9yZSB0aGFuIG9uZSBu
ZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNlIHsKK2NsYXNzIEFjY2Vzc0Nhc2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNzQ2FzZT4gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwogcHVibGlj
OgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpAQCAtMTQ3LDE5ICsxNTAsMTkgQEAg
Y2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVudHMuLi4pKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0g
aW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJh
bnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBS
ZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hl
Y2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVC
cmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFN0
YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQpAQCAtMjUzLDExICsyNTYsMzkg
QEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjaGVj
a0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9CiAjZW5kaWYKLSAgICAKKworICAg
IHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRpdGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5LCBtX3N0cnVjdHVyZS5nZXQoKSwgbV9vZmZz
ZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsSW5TaGFyaW5nKGNvbnN0IEFjY2Vz
c0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NDYXNl
KFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKLSAgICBBY2Nlc3NDYXNlKEFjY2Vz
c0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYgb3Ro
ZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJiBvdGhlcikKKyAgICAg
ICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQorICAgICAgICAsIG1fc3RhdGUoV1RG
TW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KFdURk1vdmUob3RoZXIu
bV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RGTW92ZShvdGhlci5tX29mZnNldCkp
CisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhlci5tX3N0cnVjdHVyZSkpCisgICAg
ICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5tX2NvbmRpdGlvblNldCkpCisgICAg
ICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKG90aGVyLm1fcG9seVByb3RvQWNj
ZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKG90aGVyLm1faWRlbnRp
ZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVy
KQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9zdGF0ZShvdGhl
ci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3RoZXIubV92aWFQcm94eSkKKyAgICAg
ICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhl
ci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlvblNldChvdGhlci5tX2NvbmRpdGlv
blNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0NoYWluKG90aGVyLm1fcG9seVByb3Rv
QWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVyKG90aGVyLm1faWRlbnRpZmllcikK
KyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9yPShjb25zdCBBY2Nlc3NDYXNlJikg
PSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBtX3N0YXRlID0gUHJpbW9yZGlhbDsg
fQpAQCAtMjc1LDcgKzMwNiw3IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogCiAgICAgLy8gRklYTUU6
IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNjZXNzQ2FzZSBwdXRzIHBvc3QtZ2Vu
ZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWY8QWNjZXNzQ2FzZT4gY2xv
bmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFjdGlvbiB0aGF0IG11c3QgYmUgcGVy
Zm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBpbiB3aGljaCB0aGUgY2FzZQogICAg
IC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdhdGNocG9pbnQgc2V0cyB0aGF0IHdp
bGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0NiwxNDggQEAgY2xhc3MgQWNjZXNz
Q2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCitjbGFz
cyBTaGFyZWFibGVKSVRTdHViUm91dGluZSBmaW5hbCA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7
CitwdWJsaWM6CisgICAgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUoVk0mIHZtLCBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKKyAgICAgICAgOiBKSVRTdHViUm91dGluZShj
b2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykp
CisgICAgeworICAgIH0KKworICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9rZXlzOyB9CisKKyAgICB2b2lkIG9i
c2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAg
ICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1fa2V5czsKK307CisKK2NsYXNzIFNo
YXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFNoYXJlZEpJVFN0
dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJTZXQoKSA9IGRlZmF1bHQ7CisKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4+JiBrZXlzKQorICAgIHsKKyAgICAgICAgSGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChh
dXRvJiBrZXkgOiBrZXlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwga2V5LT5oYXNoKCkpOwor
ICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgSGFzaCB7
CisgICAgICAgIHN0cnVjdCBLZXkgeworICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0OworCisg
ICAgICAgICAgICBLZXkoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BSUmVnIGV4
dHJhR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIEpJ
VFN0dWJSb3V0aW5lKiB3cmFwcGVkKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKHdyYXBw
ZWQpCisgICAgICAgICAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgICAgICAg
ICAsIG1fdmFsdWVHUFIodmFsdWVHUFIpCisgICAgICAgICAgICAgICAgLCBtX2V4dHJhR1BSKGV4
dHJhR1BSKQorICAgICAgICAgICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAg
ICAgICAgICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAgICAg
ICAgeyB9CisKKyAgICAgICAgICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
CisgICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQoYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5l
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpCisgICAgICAgICAgICB7IH0KKworICAgICAg
ICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3Jh
cHBlZCA9PSBiaXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpKTsgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtl
eSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBhLm1fd3JhcHBlZCA9PSBiLm1fd3JhcHBlZAorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
YmFzZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVH
UFIgPT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9
PSBiLm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09
IGIubV9zdHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVy
cyA9PSBiLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dyYXBwZWQgIT0gYi5tX3dyYXBwZWQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpJVFN0dWJSb3V0aW5lKiBtX3dyYXBwZWQg
eyBudWxscHRyIH07CisgICAgICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAgICAgICAg
R1BSUmVnIG1fdmFsdWVHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAg
ICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgbV91
c2VkUmVnaXN0ZXJzOworICAgICAgICB9OworCisgICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxLZXk+OworCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IEtleSYgcCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFwLm1fd3JhcHBlZCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRT
dHViU2V0OjpoYXNoKCpwLm1fd3JhcHBlZC0+a2V5cygpKTsKKyAgICAgICAgfQorCisgICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cisg
ICAgfTsKKworICAgIHN0cnVjdCBTZWFyY2hlciB7CisgICAgICAgIHN0cnVjdCBUcmFuc2xhdG9y
IHsKKyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNlYXJjaGVyJiBzZWFy
Y2hlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkSklUU3R1
YlNldDo6aGFzaChzZWFyY2hlci5tX2tleXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkgYSwgY29uc3QgU2VhcmNoZXImIGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGEubV9iYXNlR1BSID09IGIubV9i
YXNlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVH
UFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgor
ICAgICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BS
CisgICAgICAgICAgICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVn
aXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF2ZWMgPSAqYS5tX3dy
YXBwZWQtPmtleXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYnZlYyA9IGIu
bV9rZXlzOworICAgICAgICAgICAgICAgICAgICBpZiAoYXZlYy5zaXplKCkgPT0gYnZlYy5zaXpl
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGJ2ZWMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2lu
ZGV4XSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAg
ICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAg
R1BSUmVnIG1fZXh0cmFHUFI7CisgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAg
ICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9y
PFJlZlB0cjxBY2Nlc3NDYXNlPj4mIG1fa2V5czsKKyAgICB9OworCisgICAgc3RydWN0IFBvaW50
ZXJUcmFuc2xhdG9yIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSklUU3R1YlJvdXRp
bmUqIHN0dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0
OjpoYXNoKCpzdHViLT5rZXlzKCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgSGFzaDo6S2V5IGtleSwgSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7CisgICAgICAgIH0K
KyAgICB9OworCisvLyBwcml2YXRlOgorICAgIEhhc2hTZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNo
OjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0
ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4NC4uNDJkMDc5NGRkNjI0MGM2MzgwYzli
YTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAg
IERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Ns
b3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVt
cFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fbm90SW5kZXhK
dW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRh
cmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fYmFkVHlwZUp1bXBU
YXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJh
dGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gbV9ub3RJ
bmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDU2Mzg4YTA2ZDdjNjJkNDhkZDc4MDliNjQwNmRhYmEw
MDVmOGM5MWMuLjQ0ZjQ5YzQ5OWU2MDEwZjEzYzMxMWQ4MjZkZDA3MzAwMWZhNzBkZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC04NjEsNyAr
ODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoSklUKQogICAgIGlm
IChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7CiAgICAgICAgIGZvciAoU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKLSAgICAgICAg
ICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAgICAgICAgICBzdHViSW5mby0+YWJvdXRU
b0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5mby0+ZGVyZWYoKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZXNldEpJVERhdGEo
KQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBzdHViSW5m
by0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1YkluZm8tPmFib3V0VG9EaWUoKm1fdm0p
OwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDVhOTIxZmNhZWNmMDZmMTU0
M2E1Yzk0MTM3M2M0ZmY1ZWQxNWE3YTQuLjc2NzRiNDkzZWViY2Q4ZTIxMWY2NWIzNTkzNzQyODZl
NTFjNWI1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTQyMCw2ICs0MjAsMTEgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwog
ICAgIH0KKworICAgIGJvb2wgdXNlU2hhcmVkSUMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIEpJVENvZGU6OnVzZVNoYXJlZElDKGppdFR5cGUoKSk7CisgICAgfQogICAgIAogI2lmIEVO
QUJMRShKSVQpCiAgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3Bw
CmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5N2ZmMWNmZjdjZjM4MzYuLmYzOWU2M2Zl
ODZjMDcyMDU4N2JlNmZiNjY5OTM5MjUzNWIxYTY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICBtX2N1c3RvbVNsb3RC
YXNlLnNldE1heUJlTnVsbCh2bSwgb3duZXIsIGN1c3RvbVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1Jl
ZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwKICAgICBib29sIHZp
YVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21B
Y2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsCiAg
ICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCkBAIC02MSwxOCAr
NjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nh
c2U6OmNyZWF0ZSgKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRl
clNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xv
dEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQg
PSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBp
ZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRk
aXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KSk7CiAgICAgcmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1
bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21B
Y2Nlc3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nh
c2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25T
ZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwg
Ym9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1
c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBl
ID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9t
QWNjZXNzb3JTZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBp
ZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVs
bHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tU2V0dGVy
ID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbVNldHRlcikgOiBudWxs
cHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05MSw5ICs5MSw5IEBAIEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZSYgb3RoCiAgICAgbV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6
OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpj
bG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nh
c2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAg
ICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEyNSw2
ICsxMjUsNyBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogewogICAgIENDYWxsSGVscGVycyYg
aml0ID0gKnN0YXRlLmppdDsKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3Rh
dGUuc3R1YkluZm87CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7
CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOwogICAgIEdQUlJl
ZyBiYXNlR1BSID0gc3RhdGUuYmFzZUdQUjsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRl
LnNjcmF0Y2hHUFI7CkBAIC0xMzksNiArMTQwLDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMK
ICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdp
c3RlcnMpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHVi
SW5mb0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICBHUFJSZWcg
cGFyYW1CYXNlR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTIyMyw2ICsyMjYsOCBAQCB2b2lkIEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6IGZwU2NyYXRjaCkKICAgICAg
ICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwogICAgIHJlZ2lzdGVyc1RvU3Bp
bGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2Fs
bCgpKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICByZWdpc3Rl
cnNUb1NwaWxsRm9yQ0NhbGwuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAKICAgICBBY2Nlc3ND
YXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92
ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRv
cigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggODczZTdjMzU4ODhlYjNi
MTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMi4uMTAwZmIyN2VlODU2NjE2ZmI0MTg0MjVlYzJjNzIz
NDk0YTRhZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC01MywxNyArNTMsMTcgQEAgY2xhc3MgR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsK
IAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBET01KSVQ6OkdldHRlclNldHRlciosIEdQUlJlZyBiYXNlRm9yR2V0R1BSKTsKIAotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8
QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAg
ICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdh
dGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRy
VGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAgIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgT3B0
aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShW
TSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRl
KFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmLCBib29sIHZpYVByb3h5
ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0
b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsK
IAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBm
aW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5HZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhmYWZkOThkMGIyODU5M2Ni
YmIwNTdiYWU5NmZiMzIxYS4uMTJkMWI1YTBlYzdkZTVmNjc3YWQzNmRhMTJiYWNlNDA2MjVhMGZh
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5j
cHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBHUFJSZWcgZ2V0U2Ny
YXRjaFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52
YWx1ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIo
KTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkpCiAgICAgICAgIHJldHVy
biBJbnZhbGlkR1BSUmVnOwpAQCAtMzc5LDggKzM4MSw0NSBAQCBib29sIElubGluZUFjY2Vzczo6
Z2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZvaWQgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3ZvaWQgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VT
aGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBhdXRvIGp1
bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUg
YmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElD
LgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAgTGlua0J1ZmZl
ciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIo
KS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHRh
cmdldCk7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5l
QWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4gdGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpID09IHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSB7CisgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJnN0dWJJbmZvKSwgc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CisgICAg
ICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm8ubV9zdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKworICAgICAg
ICAgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxpbmUoInN0dWIgY2FsbHMi
LCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uZG9uZUxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGlua2VkQ29kZUlubGlu
ZSk7CisgICAgICAgIH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAgIGF1dG8g
anVtcCA9IGppdC5qdW1wKCk7CkBAIC0zOTQsNiArNDMzLDI2IEBAIHZvaWQgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFj
Y2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7CiB9CiAKK3ZvaWQgSW5saW5lQWNjZXNzOjpy
ZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5q
dW1wKCk7CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5v
Ym9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9v
bCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXpl
KCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RT
dWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtC
dWZmZXIuaXNWYWxpZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKKworICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9Q
dHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOworfQorCit2b2lk
IElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAg
ICByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4ZjIyNjQwNmM3ZmIyNmZm
YmI0ODg2YjJiODQ3MWQxMmQuLjhkNjYwMWM4Yjk4ZDgxMjVlYzZiMTAwYTA3OWM1MWUxMTJhMzgz
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgK
QEAgLTEwNCw3ICsxMDQsMTAgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsKICAgICBzdGF0aWMgYm9v
bCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwog
ICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5m
byYsIEpTQXJyYXkqKTsKLSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVy
ZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKKyAg
ICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUo
Q29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXBJbkFjY2Vz
cyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAg
ICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2VsZkluQWNjZXNzKFN0cnVj
dHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVTdHJp
bmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjFmMjQ1
M2JhYzdhZmFlNzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4ZDY4YjYyYmJlMDZlMDlh
YTBiMzdlNzdjMTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5j
ZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3ND
YXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBl
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CiB9
CiAKIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQs
IENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYg
Y29tbWEpIGNvbnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBlID0gIiwgSlNWYWx1
ZShwcm90b3R5cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9m
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0YW5j
ZU9mQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOwor
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhp
cykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vz
c0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNz
Q2FzZS5oCmluZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5OWQ2MDI3Nzg0N2MuLmFk
NzFlNjk0MmY0NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCkBAIC0z
NCwxNSArMzQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0g
QWNjZXNzQ2FzZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsKICAgICAKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBTdHJ1
Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsCiAgICAgICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZvaWQgZHVtcEltcGwoUHJp
bnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4g
Y2xvbmUoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFkYzIzMzY5MzNkNjc2YzNi
ZTllOTBjNjAxODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZlNjgyOTY5Y2RlNDMwZjMy
ZTdkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4ICszOSwxOCBAQCBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rpb24uc2V0KHZtLCBvd25l
ciwgaW50cmluc2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRp
dGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9B
Y2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBv
d25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmlu
c2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50
aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9u
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNv
bnN0CitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBj
b25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPiBy
ZXN1bHQobmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuaAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1M2RlNTU5YjY0NDc2NDQ2
Li40N2FmMWEyYmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50
cmluc2ljR2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRy
aW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZN
JiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmlu
c2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNj
ZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAppbmRleCAyOTU2ZGQwY2Q1
ZDBlYWU2MWEwOGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFmNDgxNTU2NjE1MTcwODVh
ODhlMTlhMDczYWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCkBAIC00NSwxOCArNDUs
MTggQEAgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNl
dCh2bSwgb3duZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9k
dWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQorUmVmPEFjY2Vzc0Nhc2U+
IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJv
bm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBz
Y29wZU9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1v
ZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlOjp+TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0
CitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25z
dAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPiByZXN1
bHQobmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOwogICAg
IHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuaAppbmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNkMDViZjVkNzkzMzc3Li5k
NDM5NTBiZjA2MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3ND
YXNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSBm
aW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1
bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7
IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVP
ZmZzZXQ7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRl
KFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOworICAgIHN0YXRp
YyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50Kiwg
U2NvcGVPZmZzZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAK
ICAgICB2b2lkIGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0JiBmYWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKaW5kZXggNWQ5MDU0
NTk3NGYxZWQzN2YyOGNhZjNhMmFlYjM0NmE0OTEwYTI4My4uNmRhY2NiZjg3MWMwODdhYWJhOTg2
MzVjNTAxYTc4YjdmNGZkMTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC04OSw2ICs5MCwxNCBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0
b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAg
ICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlz
KQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJl
dHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KICAgICAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlhN2QwOWEwMTUuLjI3YzZl
MGM1ZGQzN2ZkNzEwNzg5OWVkOWVkNTI5NDc0OGIzNDQ1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNTksMTAg
KzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7CiB9CiAKLXZvaWQgQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omluc3Rh
bGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5m
bzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0gICAgICAgIHdhdGNocG9p
bnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9uKTsKKyAgICBXYXRjaHBv
aW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRjaHBv
aW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25kaXRpb24pOwogfQogCiB2
b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQpAQCAtNzMsNyArNzIs
MTIgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkKIHZvaWQg
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICByZXN0b3JlU2NyYXRjaCgp
OwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBpZiAoaml0LT5jb2RlQmxv
Y2soKS0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAobV9kb2VzQ2FsbHMpCisgICAgICAg
ICAgICBqaXQtPmVtaXRGdW5jdGlvbkVwaWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKKyAgICAgICAg
aml0LT5yZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3VjY2Vzcy5hcHBlbmQoaml0LT5qdW1w
KCkpOwogfQogCiBjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpsaXZl
UmVnaXN0ZXJzRm9yQ2FsbCgpCkBAIC0xMjYsMTAgKzEzMCwxMSBAQCBhdXRvIEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3QgUmVn
aXN0ZXJTZQogICAgIH07CiB9CiAKLWF1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2
ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCkgLT4gU3BpbGxT
dGF0ZQorYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1Rv
U3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhKSAt
PiBTcGlsbFN0YXRlCiB7CiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVycyA9IGFsbG9jYXRv
ci0+dXNlZFJlZ2lzdGVycygpOwogICAgIGxpdmVSZWdpc3RlcnMuZXhjbHVkZShjYWxsZWVTYXZl
UmVnaXN0ZXJzKCkpOworICAgIGxpdmVSZWdpc3RlcnMubWVyZ2UoZXh0cmEpOwogCiAgICAgY29u
c3RleHByIHVuc2lnbmVkIGV4dHJhU3RhY2tQYWRkaW5nID0gMDsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gPSBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKmppdCwgbGl2ZVJl
Z2lzdGVycywgZXh0cmFTdGFja1BhZGRpbmcpOwpAQCAtMjUyLDcgKzI1Nyw3IEBAIFBvbHltb3Jw
aGljQWNjZXNzOjp+UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIAogQWNjZXNzR2VuZXJhdGlvblJl
c3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKQEAgLTI2OCw5ICsyNzMsOSBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAvLyAgIGFk
ZCBtb3JlIHRoaW5ncyBhZnRlciBmYWlsdXJlLgogICAgIAogICAgIC8vIEZpcnN0IGVuc3VyZSB0
aGF0IHRoZSBvcmlnaW5hbENhc2VzVG9BZGQgZG9lc24ndCBjb250YWluIGR1cGxpY2F0ZXMuCi0g
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPj4gY2FzZXNUb0FkZDsKKyAgICBW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBvcmlnaW5hbENhc2VzVG9BZGQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG15Q2FzZSA9IFdURk1vdmUob3JpZ2luYWxDYXNlc1Rv
QWRkW2ldKTsKKyAgICAgICAgYXV0byBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0Fk
ZFtpXSk7CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYgaXQgaXMgbm90IHJlcGxhY2VkIGJ5
IHRoZSBzdWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0LgogICAgICAgICBib29sIGZvdW5kID0g
ZmFsc2U7CkBAIC0zNDYsOSArMzUxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9y
cGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1v
cnBoaWNBY2Nlc3M6OmFkZENhc2UoCi0gICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKKyAgICBj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBSZWY8QWNjZXNzQ2FzZT4g
bmV3QWNjZXNzKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+
IG5ld0FjY2Vzc2VzOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG5ld0FjY2Vz
c2VzOwogICAgIG5ld0FjY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld0FjY2VzcykpOwogICAgIHJl
dHVybiBhZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBXVEZNb3ZlKG5l
d0FjY2Vzc2VzKSk7CiB9CkBAIC00NDAsNyArNDQ1LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2MKICAgICB1bnNpZ25lZCBzcmNJbmRleCA9IDA7CiAgICAgdW5zaWduZWQgZHN0SW5kZXggPSAw
OwogICAgIHdoaWxlIChzcmNJbmRleCA8IG1fbGlzdC5zaXplKCkpIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgr
K10pOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1fbGlz
dFtzcmNJbmRleCsrXSk7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgY2FzZSBoYWQgYmVl
biBnZW5lcmF0ZWQsIHRoZW4gd2UgaGF2ZSB0byBrZWVwIHRoZSBvcmlnaW5hbCBpbiBtX2xpc3Qg
aW4gY2FzZSB3ZQogICAgICAgICAvLyBmYWlsIHRvIHJlZ2VuZXJhdGUuIFRoYXQgY2FzZSBtYXkg
aGF2ZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBieSB0aGUgY29kZSB0aGF0IGl0CkBA
IC00OTEsNiArNDk2LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICBpZiAoc3R1Yklu
Zm8udi50aGlzVGFnR1BSICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLnYudGhpc1RhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9zdHVi
SW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5tX3N0dWJJbmZvR1BSKTsKIAogICAgIHN0YXRlLnNjcmF0Y2hHUFIgPSBhbGxvY2F0b3IuYWxs
b2NhdGVTY3JhdGNoR1BSKCk7CiAKQEAgLTUwMCwxMiArNTA3LDYgQEAgQWNjZXNzR2VuZXJhdGlv
blJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJy
ZW50SlNMb2MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAg
IENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKLSAgICBzdGF0ZS5qaXQgPSAmaml0OwotCi0g
ICAgc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZSA9Ci0gICAgICAgIGFsbG9jYXRv
ci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCiAgICAgYm9vbCBnZW5l
cmF0ZWRGaW5hbENvZGUgPSBmYWxzZTsKIApAQCAtNTIxLDEyICs1MjIsMzAgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVD
b25jdXJyZW50SlNMb2MKIAogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJi
b3NlKQogICAgICAgICBkYXRhTG9nKCJPcHRpbWl6ZWQgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2Vz
KSwgIlxuIik7Ci0gICAgCisKKyAgICBib29sIGRvZXNDYWxscyA9IGZhbHNlOworICAgIGJvb2wg
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGNhbkJlU2hhcmVkID0g
dHJ1ZTsKKyAgICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01hcms7CisgICAgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiBrZXlzKGNhc2VzLnNpemUoKSk7CisgICAgdW5zaWduZWQgaW5k
ZXggPSAwOworICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykgeworICAgICAgICBkb2VzQ2Fs
bHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9NYXJrKTsKKyAgICAgICAgaWYgKGVu
dHJ5LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyIHx8IGVudHJ5LT50eXBlKCkgPT0gQWNj
ZXNzQ2FzZTo6U2V0dGVyKQorICAgICAgICAgICAgZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSB0
cnVlOworICAgICAgICBrZXlzW2luZGV4XSA9IGVudHJ5OworICAgICAgICArK2luZGV4OworICAg
IH0KKyAgICBzdGF0ZS5tX2RvZXNDYWxscyA9IGRvZXNDYWxsczsKKyAgICBzdGF0ZS5tX2RvZXNK
U0dldHRlclNldHRlckNhbGxzID0gZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHM7CisgICAgLy8gR2V0
dGVyIC8gU2V0dGVyIHJlbGllcyBvbiBzdGFjay1wb2ludGVyIGFkanVzdG1lbnQsIHdoaWNoIGlz
IHRpZWQgdG8gdGhlIGxpbmtlZCBDb2RlQmxvY2ssIHdoaWNoIG1ha2VzIHRoaXMgY29kZSB1bnNo
YXJlYWJsZS4KKyAgICBpZiAoZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMpCisgICAgICAgIGNhbkJl
U2hhcmVkID0gZmFsc2U7CisKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0
aGF0ICdjYXNlcycgY29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFu
ZCB3ZQogICAgIC8vIHdvbid0IGNoYW5nZSB0aGF0IHNldCBhbnltb3JlLgogICAgIAogICAgIGJv
b2wgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgPSB0cnVlOwotICAgIGJvb2wgaGFzSlNHZXR0
ZXJTZXR0ZXJDYWxsID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc0ludDMyUHJvcGVydHlDaGVjayA9
IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAg
Ym9vbCBuZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKQEAgLTU0MiwxMCArNTYxLDEw
MiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICB9CiAgICAgICAgIGNvbW1pdChs
b2NrZXIsIHZtLCBzdGF0ZS53YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nh
c2UpOwogICAgICAgICBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFy
ZGVkQnlTdHJ1Y3R1cmVDaGVjayhzdHViSW5mbyk7Ci0gICAgICAgIGlmIChuZXdDYXNlLT50eXBl
KCkgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyIHx8IG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNl
OjpTZXR0ZXIpCi0gICAgICAgICAgICBoYXNKU0dldHRlclNldHRlckNhbGwgPSB0cnVlOworICAg
ICAgICBpZiAobmV3Q2FzZS0+dXNlc1BvbHlQcm90bygpKQorICAgICAgICAgICAgY2FuQmVTaGFy
ZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayB8fCBu
ZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgfHwgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2spCisgICAg
ICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisKKyAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0
dWI7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2Fu
QmVTaGFyZWQpIHsKKyAgICAgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJj
aGVyIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgICAg
IHN0dWJJbmZvLnZhbHVlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQ
UiwKKyAgICAgICAgICAgICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAga2V5cworICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIGF1dG8gZW50cnkgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5t
X3N0dWJzLmZpbmQ8U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJj
aGVyKTsKKyAgICAgICAgICAgIGlmIChlbnRyeSAhPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0
dWJzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
UVVFUlkgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmJhc2VHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8udmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIiwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAiLCB1c2VkOiAiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8udXNlZFJlZ2lzdGVycworICAgICAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJHT1QgIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVudHJ5LT5tX2Jhc2VHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fdmFsdWVHUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fZXh0cmFH
UFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZW50cnktPm1fc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLCB1c2Vk
OiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fdXNlZFJlZ2lzdGVycworICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgc3R1YiA9IGVudHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoc3R1YikgeworICAgICAgICArK2dfbnVtYmVyT2ZTaGFyZWRTdHViSGl0
OworICAgICAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoY29kZUJsb2NrLT5qaXRUeXBl
KCkpKQorICAgICAgICAgICAgKytnX251bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxpbmU7Cisg
ICAgICAgIG1fc3R1YlJvdXRpbmUgPSBzdHViOworICAgICAgICBmb3IgKGF1dG8mIGFjY2Vzc0Nh
c2UgOiBjYXNlcykKKyAgICAgICAgICAgIGFjY2Vzc0Nhc2UtPmNvbGxlY3RJbnZhcmlhbnRzRm9y
Q29kZVJldXNlKHN0YXRlLCBjb2RlQmxvY2spOworCisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBX
VEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJl
bmNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0
b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsK
KyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAg
ICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7
CisKKyAgICAgICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJp
bmtUb0ZpdCgpOworCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0
S2luZDsKKyAgICAgICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFy
aWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0
S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6
OkdlbmVyYXRlZE5ld0NvZGU7CisKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQocmVzdWx0S2luZCwgbV9zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfQorCisg
ICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisK
KyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5t
X2RvZXNKU0dldHRlclNldHRlckNhbGxzKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGd1
YXJhbnRlZSB0aGF0IHN0YWNrLXBvaW50ZXIgaXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhpcyBpcyBu
b3QgYSBwcm9ibGVtIGlmIHdlIGFyZSBub3QgaGF2aW5nIEpTIGdldHRlciAvIHNldHRlciBjYWxs
cyBzaW5jZSBzdGFjay1wb2ludGVyIGlzCisgICAgICAgICAgICAvLyBjYWxsZWUtc2F2ZSByZWdp
c3RlciBhbmQgaXQgaXMga2VwdCBiZXlvbmQgY2FsbHMuIEhvd2V2ZXIsIG91ciBKUyBleGVjdXRh
YmxlIGNhbGwgZG9lcyBub3Qgc2F2ZSBzdGFjay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0aW5n
IHN0YWNrLXBvaW50ZXIgYWZ0ZXIKKyAgICAgICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRlciBj
YWxscy4gQnV0IHRoaXMgY291bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3RhY2st
cG9pbnRlciwgYW5kIG1ha2VzIFBBQyB0YWdnaW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8vIFRv
IGVuc3VyZSBQQUMtdGFnZ2luZyB3b3JrLCB3ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRlciB0
byB0aGUgYXBwcm9wcmlhdGUgb25lLgorICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgICAgICAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdp
c3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZS5t
X2RvZXNDYWxscykKKyAgICAgICAgICAgICAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpm
cmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworICAgICAg
ICB9CiAgICAgfQogCisgICAgc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZSA9Cisg
ICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwor
ICAgIAogICAgIGlmIChjYXNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyBzdXBl
ciB1bmxpa2VseSwgYnV0IHdlIG1ha2UgaXQgbGVnYWwgYW55d2F5LgogICAgICAgICBzdGF0ZS5m
YWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC02OTAsNyArODAxLDcgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2MKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrVGhhdE93bnNF
eGNlcHRpb25IYW5kbGVycyA9IG51bGxwdHI7CiAgICAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nOwotICAgIGlmIChzdGF0ZS5uZWVkc1Rv
UmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsKSB7
CisgICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBk
b2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykgewogICAgICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24g
aGFuZGxlci4KICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJs
ZSB3aGVuIGRvaW5nIGdlbmVyaWNVbndpbmQgZnJvbSBhIHB1cmUgSlMgZ2V0dGVyL3NldHRlciAu
CiAgICAgICAgIC8vIE5vdGUgYWxzbyB0aGF0IHRoaXMgaXMgbm90IHJlYWNoYWJsZSBmcm9tIGN1
c3RvbSBnZXR0ZXIvc2V0dGVyLiBDdXN0b20gZ2V0dGVyL3NldHRlcnMgd2lsbCBoYXZlIApAQCAt
NzAwLDYgKzgxMSw4IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIGludCBzdGFj
a1BvaW50ZXJPZmZzZXQgPSBjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsKICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0
YXRlIHNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlciA9IHN0YXRlLnNwaWxsU3RhdGVGb3JKU0dl
dHRlclNldHRlcigpOwogICAgICAgICBBU1NFUlQoIXNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRl
ci5pc0VtcHR5KCkpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAg
ICAgICAgICAgc3RhY2tQb2ludGVyT2Zmc2V0IC09IDggKiAyOwogICAgICAgICBzdGFja1BvaW50
ZXJPZmZzZXQgLT0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5
dGVzUHJlc2VydmVkOwogICAgICAgICBzdGFja1BvaW50ZXJPZmZzZXQgLT0gc3BpbGxTdGF0ZUZv
ckpTR2V0dGVyU2V0dGVyLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbjsKIApAQCAtNzMwLDYgKzg0MywxOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHlt
b3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAg
ICAgICBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcgPSBzdGF0ZS5jYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcoKTsKICAgICB9CiAKKyAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGZhaWx1cmUubGluaygmaml0KTsKKyAgICAgICAgLy8g
SW4gQVJNNjQsIHdlIGRvIG5vdCBwdXNoIGFueXRoaW5nIG9uIHN0YWNrIHNwZWNpYWxseS4gU28g
d2UgY2FuIGp1c3QganVtcCB0byB0aGUgc2xvdy1wYXRoIGV2ZW4gdGhvdWdoIHRoaXMgdGh1bmsg
aXMgY2FsbGVkIChub3QganVtcGVkKS4KKyAgICAgICAgaWYgKHN0YXRlLm1fZG9lc0NhbGxzKQor
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKKyAg
ICAgICAgLy8gaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlv
bigpKSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgLy8gaml0LnJlbW92ZVB0clRhZyhB
Uk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICAvLyBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgICAgICAvLyBqaXQucmV0KCk7CisgICAgICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9
CisKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6
OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChs
aW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03MzksOSArODY0LDEyIEBAIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9jCiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBz
dWNjZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAKLSAgICBsaW5rQnVmZmVyLmxp
bmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAgIGxpbmtCdWZmZXIubGluayhm
YWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIEFTU0VSVChzdGF0ZS5zdWNjZXNzLmVtcHR5KCkp
OworICAgIGVsc2UgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3Vj
Y2Vzc0xhYmVsKTsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNs
b3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgfQogICAgIAogICAgIGlmIChQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKEZ1bGxDb2RlT3JpZ2luKGNv
ZGVCbG9jaywgc3R1YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMg
YWNjZXNzIHN0dWIgZm9yICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CkBAIC03NDksMTggKzg3
NywyMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVy
YXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZSA9IEZJTkFMSVpFX0NPREVfRk9SKAogICAgICAg
ICBjb2RlQmxvY2ssIGxpbmtCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAi
JXMiLCB0b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZvciAiLCAqY29kZUJsb2NrLCAiICIsIHN0dWJJ
bmZvLmNvZGVPcmlnaW4sICIgd2l0aCByZXR1cm4gcG9pbnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAi
LCBsaXN0RHVtcChjYXNlcykpLmRhdGEoKSk7Ci0KLSAgICBib29sIGRvZXNDYWxscyA9IGZhbHNl
OwotICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKLSAgICBmb3IgKGF1dG8mIGVudHJ5
IDogY2FzZXMpCi0gICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2Vs
bHNUb01hcmspOwogICAgIAotICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGlu
ZShjb2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0
YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMs
IGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CisgICAgKytnX251bWJlck9mU2hh
cmVkU3R1YkNyZWF0aW9uOworICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShjb2RlQmxv
Y2stPmppdFR5cGUoKSkpCisgICAgICAgICsrZ19udW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbklu
QmFzZWxpbmU7CisgICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUs
IFdURk1vdmUoa2V5cyksIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdU
Rk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25I
YW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKKworICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKGNhbkJlU2hhcmVkKQorICAg
ICAgICAgICAgdm0ubV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5hZGQoU2hhcmVkSklUU3R1YlNl
dDo6SGFzaDo6S2V5KHN0dWJJbmZvLmJhc2VHUFIsIHN0dWJJbmZvLnZhbHVlR1BSLCBzdHViSW5m
by5yZWdzLnRoaXNHUFIsIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIHN0dWJJbmZvLnVzZWRSZWdp
c3RlcnMsIG1fc3R1YlJvdXRpbmUuZ2V0KCkpKTsKKyAgICB9CisKICAgICBtX3dhdGNocG9pbnRz
ID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJl
bmNlcy5pc0VtcHR5KCkpCiAgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAg
IGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9n
KCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiUmV0
dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCksICJcbiIpOwogICAgIAogICAgIG1fbGlz
dCA9IFdURk1vdmUoY2FzZXMpOwogICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwpAQCAtNzcxLDEz
ICs5MDMsMTMgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICBlbHNlCiAgICAgICAgIHJl
c3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOwogICAg
IAotICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIGNvZGUuY29k
ZSgpKTsKKyAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdChyZXN1bHRLaW5kLCBtX3N0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKIH0KIAotdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6
YWJvdXRUb0RpZSgpCit2b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKFZNJiB2bSkK
IHsKICAgICBpZiAobV9zdHViUm91dGluZSkKLSAgICAgICAgbV9zdHViUm91dGluZS0+YWJvdXRU
b0RpZSgpOworICAgICAgICBtX3N0dWJSb3V0aW5lLT5hYm91dFRvRGllKHZtKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFi
MzRhZWNiNDEuLmY5ZjhjYmYwZDU1OThlMWYxZWYyMzAxYjQ1OGZiYWRiMDMzNDRkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
V2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xk
IHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMg
bWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2Rl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIFBv
bHltb3JwaGljQWNjZXNzIHsKICAgICAvLyBvcHRpbWl6YXRpb24gdG8gdGhlbiBhdm9pZCBjYWxs
aW5nIHRoaXMgbWV0aG9kIGFnYWluIGR1cmluZyB0aGUgZml4cG9pbnQuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNpdG9yJikgY29u
c3Q7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKTsKKyAgICB2b2lkIGFib3V0VG9EaWUoVk0mKTsK
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zUEModm9pZCogcGMpIGNvbnN0CkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBo
aWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOwogICAgIAogICAgIHZvaWQgY29tbWl0KAog
ICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVl
X3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLApAQCAtMTk2LDYgKzE5Niw4IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUgewogICAgICAgICA6IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1f
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMoZmFsc2UpCisgICAgICAgICwgbV9kb2VzQ2FsbHMoZmFs
c2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhh
bmRsaW5nKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2Vw
dGlvbihmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KGZhbHNlKQpA
QCAtMjI1LDggKzIyNywxMCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50
czsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOwogICAg
IEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1fZG9lc0pTR2V0
dGVyU2V0dGVyQ2FsbHMgOiAxOworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwogCi0gICAgdm9p
ZCBpbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOworICAg
IHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKIAogICAgIHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2b2lkIHN1Y2Nl
ZWQoKTsKQEAgLTI0OCw3ICsyNTIsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRF
eGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwotICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0
aW9ucygpOworICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwogCiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhj
ZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRv
bnRSZXN0b3JlID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2MmEzODllMmVm
NTBlZWE2YTNiMzRlNzVmYTlkLi40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1MDc5YWNiY2Mx
MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
YWNjZXMKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9
PSBSZXBsYWNlKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJveHlh
YmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+UHJveHlhYmxl
QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm94eWFibGVB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApp
bmRleCBkYzM5ZTI2Y2EyZjRiMmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5lODQzODVjYTc1
YzlmNzUyZThlOGUxNmNkZGUwYWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3LDExICszNywx
MSBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogCiAg
ICAgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWRkaXRpb25hbFNldC5nZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAgICBzdGF0aWMg
UmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAogICAgICAg
ICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBu
dWxscHRyLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAogICAg
IHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIH5Q
cm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2
YTM5Yjg0NThiOTAwY2IyYTUyZWY0ZjE1MTEyMGYuLmRlMDI1ZTc0ZWRkODJmZmU4NjFiNzM3NzMx
ZDUwYTI0NmM0OTljNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaQogICAgICwgcHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwgcHJvcGVydHlJ
c1N5bWJvbChmYWxzZSkKIHsKKyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogfQog
CiBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEyMCwxMSArMTIx
LDExIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGll
KCkKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoVk0mIHZtKQogewogICAgIHN3
aXRjaCAobV9jYWNoZVR5cGUpIHsKICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKLSAgICAgICAg
dS5zdHViLT5hYm91dFRvRGllKCk7CisgICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSh2bSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OkdldEJ5SWRTZWxmOgpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjJmNmNiYTMx
YmZmYmFjNGMxYzBhMmY5NTE4MzI2ZjJjMzMwNzc3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04NywxMiArODcsMTIg
QEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRk
QWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNz
Q2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2Fz
ZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKik7CiAKICAgICB2b2lkIGRlcmVmKCk7Ci0gICAgdm9pZCBhYm91dFRvRGllKCk7Cisg
ICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsK
IApAQCAtMzQ3LDE2ICszNDcsMjQgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRM
b2NhdGlvbjsKIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRh
Zz4gbV9jb2RlUHRyOworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3Bl
cmF0aW9uOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24p
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0K
KwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUjsK
LSAgICBHUFJSZWcgdmFsdWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CisgICAgR1BSUmVnIHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9uIHsK
ICAgICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAg
IH0gcmVnczsKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBGSVhN
RTogWzMyLWJpdHNdIENoZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlzIHVz
ZWQgc29tZXdoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDhhZGVhZDUwZjQ1NTZjZmYyNWU3YzdjOTk3ODMwNGQ0MTc3MDk3NDcuLjk2NWRhZjMw
YTY5MjY2NGQwNWJhMTJkNWFlNjRkNTFlZWQwMzY0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTIgQEAgY2xhc3MgSklUQ29t
cGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2Fs
bExpbmtSZWNvcmQoZnVuY3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4gZnVu
Y3Rpb25DYWxsOwogICAgIH0KKworICAgIENhbGwgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIENhbGwgZnVuY3Rpb25DYWxsID0gY2FsbChh
ZGRyZXNzLCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwor
ICAgIH0KICAgICAKICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCAwOTBiMzU5OGUzOWI5ODQ1MTc0YmU2YTEyOTQzOWY0Y2M1ZjI0ZGI3Li40Mjg4Mzc3NmNlNmM1
ZjcxMTA1Yjk3Y2VmNmI2ZjZiNmVmZjAzYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC00MCw2ICs0MCw4
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBoYW5kbGVFeGl0Q291
bnRzKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQog
eworICAgIGppdC5hZGQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQXNzZW1i
bHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmdfbnVtYmVyT2ZPU1JFeGl0cykpOworICAgIAog
ICAgIGlmICghZXhpdEtpbmRNYXlKZXR0aXNvbihleGl0Lm1fa2luZCkpIHsKICAgICAgICAgLy8g
RklYTUU6IFdlIG1heSB3YW50IHRvIG5vdGljZSB0aGF0IHdlJ3JlIGZyZXF1ZW50bHkgZXhpdGlu
ZwogICAgICAgICAvLyBhdCBhbiBvcF9jYXRjaCB0aGF0IHdlIGRpZG4ndCBjb21waWxlIGFuIGVu
dHJ5cG9pbnQgZm9yLCBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xv
d1BhdGhHZW5lcmF0b3IuaAppbmRleCA5ODFlODZjZDdkZGIwMWNhNDk1NDNiNGU1Mzc2MDAxYmU4
MTYwMTI2Li5mYTRhZGFiY2ZhZjAyMjkwZGQ0YmZkNzFkMzBhN2ZkOGM3N2NmMmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0x
ODgsNiArMTg4LDggQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93UGF0aEdlbmVyYXQKICAgICBzdGQ6OnR1cGxlPEFy
Z3VtZW50cy4uLj4gbV9hcmd1bWVudHM7CiB9OwogCisKKwogdGVtcGxhdGU8dHlwZW5hbWUgSnVt
cFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzPgogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKQEAgLTI2Myw2ICsyNjUsNjYgQEAgaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogICAgICAgICBmcm9t
LCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlw
ZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorY2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Ns
b3dQYXRoSUNHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1
bXBUeXBlLCBSZXN1bHRUeXBlPiB7CitwdWJsaWM6CisgICAgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50
c1Nsb3dQYXRoSUNHZW5lcmF0b3IoCisgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZl
SklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlv
blR5cGUgZnVuY3Rpb24sCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBB
cmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZSwgUmVzdWx0VHlwZT4oZnJvbSwgaml0LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCBy
ZXN1bHQpCisgICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgLCBt
X3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcyhzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MpCisgICAg
ICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX2FyZ3VtZW50cyhzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICAsIG1fc3R1YkluZm8oc3R1
YkluZm8pCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4g
QXJndW1lbnRzSW5kZXg+CisgICAgdm9pZCB1bnBhY2tBbmRHZW5lcmF0ZShTcGVjdWxhdGl2ZUpJ
VCogaml0LCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7Cisg
ICAgICAgIHRoaXMtPnNldFVwKGppdCk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG1fZnVuY3Rpb247CisgICAgICAgIGppdC0+bV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm9HUFIpOworICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxSZXN1bHRUeXBlLCBOb1Jlc3VsdFRhZz46OnZhbHVlKQor
ICAgICAgICAgICAgdGhpcy0+cmVjb3JkQ2FsbChqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25U
eXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+
KG1fYXJndW1lbnRzKS4uLikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLT5yZWNv
cmRDYWxsKGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRp
b25BZGRyZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1l
bnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLikpOworICAgICAgICB0aGlzLT50ZWFyRG93bihqaXQp
OworICAgIH0KKworICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0
KSBmaW5hbAorICAgIHsKKyAgICAgICAgdW5wYWNrQW5kR2VuZXJhdGUoaml0LCBzdGQ6Om1ha2Vf
aW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPj46
OnZhbHVlPigpKTsKKyAgICB9CisKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3M7CisgICAgRnVuY3Rp
b25UeXBlIG1fZnVuY3Rpb247CisgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1l
bnRzOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOworfTsKKworCisKK3RlbXBs
YXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJl
c3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20sIFNw
ZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNz
LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKKyAgICBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRvcjxKdW1wVHlwZSwgRnVu
Y3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+Pihmcm9tLCBqaXQsIHN0dWJJbmZv
LCBzdHViSW5mb0dQUiwgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBmdW5jdGlvbiwgc3BpbGxN
b2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBhcmd1bWVudHMuLi4pOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRU
eXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4g
YXJndW1lbnRzKQoreworICAgIHJldHVybiBzbG93UGF0aElDQ2FsbChmcm9tLCBqaXQsIHN0dWJJ
bmZvLCBzdHViSW5mb0dQUiwgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBmdW5jdGlvbiwgTmVl
ZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLCByZXN1bHQs
IGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlm
IC8vIEVOQUJMRChERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCA3M2Y5MTE0ZWFmODgzY2VlZjljYTAzYjg0ZjE2ZWU2NDRl
NmQyOGY4Li5jNTg3Njg3YzY3OTk5ZGUyNDk4YTczOGNhNDg3ZjlhZmIxMWIxMTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTAy
NiwyNCArMTAyNiwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2Rl
KiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRp
b25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKLSAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1Nw
aWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlw
ZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+
IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0lu
T3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUxLDcgKzEw
NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVk
SUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlz
KTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9
CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpK
dW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxs
LCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUs
IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIE9wdGlvbmFsPEdQ
UlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNW
YWx1ZVJlZ3MoKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJ
Q0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0K
KyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJh
c2UudXNlKCk7CkBAIC0xMDk2LDcgKzExMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJh
c2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2Vs
bCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTExMTEsMTQg
KzExMzUsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2Rl
KiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVz
ZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
LQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdFJlZ3MucGF5bG9hZEdQUigpOwpAQCAtMTEyOCwyMCArMTE1NywzNSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJ
VERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJl
c3VsdFJlZ3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIShPcHRpb25zOjp1c2VTaGFy
ZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpKQorICAgICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1
c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CisgICAgICAgIH0KICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAg
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9
CiAjZW5kaWYKIAogICAgICAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwpAQCAtMTE3MCwyMiArMTIxNCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlJZChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
VmFsKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCiAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigp
KTsKLQogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGtl
eSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYg
T3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUt
PmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQyKCks
IFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTE5NCwyMCArMTI0MywzNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAgICAgICBKSVRE
ZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCEo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemlu
Z0pJVCgpKSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAg
ICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5P
cHRpbWl6aW5nSklUKCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAj
ZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25E
ZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemlu
Z0pJVCgpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEzMDAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+
IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFz
ZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJl
ZzsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJ
Q0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CiAKQEAgLTEyNDgsMTQgKzEzMTgsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlJZChOb2RlKiBub2RlKQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBt
X2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZO
ZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNl
ZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBKSVRJbkJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGlmICghKE9wdGlvbnM6OnVzZVNoYXJlZElD
KCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkpCisgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAg
ICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisg
ICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0
dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQo
Z2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShz
bG93UGF0aCkpOwpAQCAtMzU2MSw5ICszNjQzLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
CiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IEdl
dFByaXZhdGVOYW1lKTsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG1fZ3Jh
cGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgc3BlY3VsYXRl
U3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwogCisgICAgT3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChPcHRpb25z
Ojp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkp
IHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwg
MSkpOworCiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRS
ZWdpc3RlcnMoKTsKQEAgLTM1NzQsMTQgKzM2NjYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlMKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkp
OwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7Cisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgYmFzZSwgcHJvcGVydHksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1
YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOworICAgIGlmICghKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6
dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKLQotICAgIGF1dG8gbWFrZVNsb3dQYXRoQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsK
KyAgICBhdXRvIG1ha2VTbG93UGF0aElDQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGlt
aXppbmdKSVQoKSkgeworICAgICAgICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisg
ICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwKKyAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0
eS5wYXlsb2FkR1BSKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplLAogICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwKQEAgLTM1ODksOCArMzY4Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGggPSBiYXNlSXNLbm93bkNlbGwKLSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1Bh
dGhDYWxsKGJhc2UpOworICAgICAgICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUND
YWxsKGJhc2UpOwogCiAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwy
OCArMzcwMCw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVC
eUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVz
ZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSBy
ZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9w
dGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpIHsKKyAgICAgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5n
cHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUs
IERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBl
ZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOwogICAg
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisg
ICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChP
cHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5n
SklUKCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUs
IERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzcyMiwyOSArMzgzMiw0MCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2Rl
KQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBp
ZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1p
emluZ0pJVCgpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0
dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sg
ZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAgICAgLy8gdG8gY2hlY2sg
aXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCku
aXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6
OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKKyAgICBP
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1
c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLQogICAgIEdQUlJl
ZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAKICAgICBzcGVjdWxhdGVTeW1ib2wobm9k
ZS0+Y2hpbGQyKCksIGJyYW5kR1BSKTsKQEAgLTM3NTgsMTYgKzM4NzksMjQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CiAKICAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJy
YW5kLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGJyYW5kR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpE
RkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFu
ZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0g
ICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQo
KSkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRP
cHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQo
KSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nl
c3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92
ZShzbG93UGF0aCkpOwpAQCAtMzc3OCw5ICszOTA3LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJ
bk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3By
KCk7CiAKQEAgLTM3OTIsMTYgKzM5MjcsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsK
KyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+
cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIShP
cHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5n
SklUKCkpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZhdGVCcmFu
ZE9wdGltaXplLCBOb1Jlc3VsdCwgCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGg7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6
dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFBy
aXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFBy
aXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTE5LDIyICs0MDYyLDI3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1
bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZG
b3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVn
IHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nh
c2UpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZh
bHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRG
R0pJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJz
KCksIHJlc3VsdEdQUiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBl
UmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwK
ICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09iamVj
dCB8IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAK
ICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoc2xvd0Nhc2UpOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBwcm90b3R5cGVSZWdz
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Cisg
ICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9w
dGltaXppbmdKSVQoKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBw
cm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1Yklu
Zm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQu
YWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTQ1LDYgKzQwOTMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAg
ICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTUyLDEz
ICs0MTAxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMo
KSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHVi
SW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
c2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNl
bGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BS
KSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgIGNvbXBpbGVJ
bnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVn
cyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3Jh
dGNoMkdQUik7CiAgICAgICAgIAogICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0zOTY4LDEyICs0MTIyLDE4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgREZHX0FT
U0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgCisgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNl
U2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVl
UmVncyBwcm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0z
OTg5LDcgKzQxNDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihO
b2RlKiBub2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0YW5j
ZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHNj
cmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFuY2VP
ZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHVi
SW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAogICAg
IGRvbmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CkBAIC0xMzAxOSw0NiArMTMxNzksNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvSW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBP
cHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgIHN0dWJJbmZv
LmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5l
Y21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJ
bmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6
Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9u
dFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBP
cHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgIHN0dWJJbmZv
LmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVk
UHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6
Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQog
eworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemlu
Z0pJVCgpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNo
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+
ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ2OTAsMTggKzE0ODY4LDIwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5v
ZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVn
IHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRL
aW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQs
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVj
bWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+
dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CiAgICAg
ICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBk
b24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNl
R1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVlUmVncywgZmFsc2Up
OworICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNjcmF0Y2hH
UFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKQEAgLTE0NzA5LDExICsxNDg4OSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgaWYgKHNsb3dQYXRoVGFyZ2V0
LmlzU2V0KCkpCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwotICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIShPcHRpb25z
Ojp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkp
KQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBh
dXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBP
cHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhG
dW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVS
ZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVn
cywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlm
aWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlJZChnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
NDE1YzY5NzZlMTY4NmRiZDQ5YTY4OWNiMTcwYTIzNmI5ZTY2ZmQzNS4uMmNlMDZkOWVlZjIwYTY4
NzRiN2UwYzEwOTFlZjI2ZDM3MDcyOTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTksMTYgQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRhY2hlZChOb2RlKik7CiAKLSAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVD
TUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAg
IHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBO
ZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
IHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BS
LCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxl
cjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwor
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NU
eXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBz
bG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
VGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRh
Z0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9u
ZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1
bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2
b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQ
UlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBh
eWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlw
ZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJP
ck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVn
IHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBp
bGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZChO
b2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZv
aWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9
IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52
ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhO
b2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwgR1BS
UmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICB2b2lk
IGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBK
U1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzdHViSW5m
b0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNvbXBpbGVJ
bnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CkBAIC05NDks
NiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0
ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojpo
YXNSZXN1bHQsCisgICAgSklUQ29tcGlsZXI6OkNhbGw+CisgICAgY2FsbE9wZXJhdGlvbihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgUmVzdWx0UmVnVHlwZSByZXN1bHQsIEFyZ3MuLi4g
YXJncykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxs
PE9wZXJhdGlvblR5cGU+KGFkZHJlc3MsIGFyZ3MuLi4pOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
YWRkcmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwK
KyAgICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAg
SklUQ29tcGlsZXI6OkNhbGw+CisgICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCkpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9w
ZXJhdGlvbl9DYiBvcGVyYXRpb24sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKICAgICAg
ICAgLy8gRG8gbm90IHJlZ2lzdGVyIENvZGVCbG9jayogYXMgYSB3ZWFrLXBvaW50ZXIuCkBAIC05
ODgsNiArMTAwOCwxMyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBt
X2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9CiAKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2Rl
T3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIHJldHVybiBt
X2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBm
dW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKQEAgLTEw
MTAsNiArMTAzNywxNCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBj
YWxsOwogICAgIH0KIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEdQUlJlZyByZXN1bHQpCisgICAgeworICAg
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQubW92ZShH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGNhbGw7Cisg
ICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAg
IHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggYjU3YzM3YWEwNWRkNDkwOTFjN2ZhMzY1MGY4YmJmZjc1MjM3ZjYzOS4u
MGI3MmNmN2RjMjk0NjU1ZWU3ZjA4ZjNlNjQyYTA1ODUwNDhkODE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0y
MDAsNyArMjAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAK
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5l
cmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFt
LT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZp
ZXIsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIHR5cGUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKG1faml0KTsKQEAgLTIwOCwxOSArMjA4LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQoCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsK
ICAgICBpZiAoc2xvd1BhdGhUYXJnZXQuaXNTZXQoKSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChzbG93UGF0aFRhcmdldCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgIGlmICghKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hh
cmVkSUNJbk9wdGltaXppbmdKSVQoKSkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CiAgICAgaWYgKGJhc2VUYWdHUFJPck5vbmUgPT0gSW52YWxpZEdQUlJlZykgewot
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElD
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5
SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwg
cmVzdWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUGF5bG9hZEdQUiksCiAgICAgICAgICAg
ICBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwg
aWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1
bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3Mo
YmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7
CiAgICAgfQogCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAg
LTIzNSw3ICsyMzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoCiAgICAgCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxT
aXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2lu
LCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRS
ZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBl
OjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVy
LAogICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBK
U1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdz
KHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgobV9qaXQpOwpAQCAtMjQ3LDkgKzI0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWRXaXRoVGhpcygKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKGJhc2VUYWdHUFJPck5vbmUgPT0gSW52YWxpZEdQUlJl
ZyAmJiB0aGlzVGFnR1BSID09IEludmFsaWRHUFJSZWcpIHsKLSAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VQYXlsb2Fk
R1BSKSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHRoaXNQYXlsb2FkR1BS
KSwKICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKTsKQEAgLTI1Nyw5ICsyNTgsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCiAgICAgICAgIEFT
U0VSVChiYXNlVGFnR1BST3JOb25lICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICBBU1NFUlQo
dGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgCi0gICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJl
Z3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7Cisg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1
YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwg
SlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwpAQCAtMjM0MSw3ICsyMzQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdl
dEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywK
ICAgICAgICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzKTsKIAog
ICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCkBAIC0yMzU1LDkgKzIzNTYsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1p
emUsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhJQ0Nh
bGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBudWxscHRyLCBiYXNlUmVncywgcHJvcGVydHlSZWdzKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiOTEx
OGI2MmU4N2Q5NzBhYzU0NjFmNjNiZDNjMzgwZmI4YjAxMjYwLi4wYWFlMDRiZTNlMTYyMzk4YmQ2
ZGU3OGQxOTQzMDA4YTgyMjNkOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE0NywxMiArMTQ3LDEyIEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIH0KIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2Rl
IG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUs
IEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIo
KSwgcmVzdWx0LmdwcigpLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7
CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgc3R1
YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJl
ZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE2MCwyNiAr
MTYwLDM3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAgIC8vIFdlJ3ZlIGFscmVh
ZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxs
IHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAg
ICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgICAgICBpZiAoc3R1
YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0
KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRS
ZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhyZXN1bHRHUFIpLCB0eXBlKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50
aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRH
UFIpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nh
c2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCi0gICAgICAgIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5y
YXdCaXRzKCkpOworICAgIGlmICghKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6
dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9u
czo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8o
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRz
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVu
Y3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAg
fQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93
UGF0aFRhcmdldCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BS
UmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7
CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2Vu
ZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVh
bS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJl
Z2lzdGVycygpOwpAQCAtMTg3LDIwICsxOTgsMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIK
ICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVy
cy5zZXQodGhpc0dQUiwgZmFsc2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwg
ZmFsc2UpOworICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICB1
c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIAogICAgIEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRo
aXNHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpT
VmFsdWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0
aGlzR1BSKSwgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
ICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNl
cy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBpZiAoIShPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6
OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKLSAgICAgICAgRG9udFNwaWxs
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBp
ZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25z
Ojp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1
aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUs
CisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQog
ICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsK
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0yNjgxLDE2
ICsyNzAzLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwotCisgICAgICAgICAg
ICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhp
cywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHByb3BlcnR5
KTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJl
ZElDSW5PcHRpbWl6aW5nSklUKCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCisgICAgICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisKICAgICAgICAg
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAg
ICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7CiAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhp
cy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMjcwMCw4ICsyNzI5LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VHUFIpKTsKIAogICAgICAgICAgICAgSklUR2V0
QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3Bl
cnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vz
c1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZSht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAg
ICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMjcx
MiwxMSArMjc0MSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAKICAgICAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAg
ICAgICAgICAgIGlmICghKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hh
cmVkSUNJbk9wdGltaXppbmdKSVQoKSkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAg
ICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJh
c2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg0LDkgKzQw
MjEsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAg
Y2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7
CisgICAgICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAg
ICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXpp
bmdKSVQoKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC0zOTk0LDE0ICs0
MDM4LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdp
dGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1
bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1Yklu
Zm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BS
ID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC00MDEzLDcgKzQwNjQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKSk7CiAgICAg
ICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVS
ZWdzKHRoaXNWYWx1ZUdQUikpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwor
ICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYzA0NzUyZDdiZDlm
MWIyZjhhMmVlNTMzMTU3ODEyZTlmZjU1NTFhOS4uMzYzZTVjNDhlZDM5MGU0ZjI1YzliNjQxZjEz
MDgzNGU5NTZiOGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMzk3OCw2ICszOTc4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5P
cHRpbWl6aW5nSklUKCkpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0
aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtMzk5OSwxMCArNDAwMCwxMSBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3By
KCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworICAg
ICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IChPcHRpb25zOjp1c2VTaGFyZWRJQygp
ICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpID8gcGFyYW1zLmdwU2Ny
YXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRv
ciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwg
c3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENl
bGw7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAtNDAxNiwxMyArNDAxOCwy
NSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RD
ZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7
Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBP
cHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAg
IGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRp
bWl6aW5nSklUKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7
CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9H
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1l
T3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0
b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhD
YWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00MTEwLDYgKzQxMjQsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYg
T3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgPyAxIDogMDsKIAogICAgICAg
ICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJl
cGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC00MTMwLDEwICs0
MTQ1LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0gcGFy
YW1zWzFdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gKE9wdGlvbnM6
OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgYXV0
byBnZW5lcmF0b3IgPSBCb3g8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRl
KAotICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAotICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJh
bmRHUFIpKTsKKyAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJ
VCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAorICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAgICAgICAgaWYgKCFiYXNlSXND
ZWxsKQpAQCAtNDE1OSwxMyArNDE3NSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
ICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgbm90
Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1w
KCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBpZiAoIShPcHRpb25zOjp1c2VTaGFyZWRJ
QygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpKQorICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihh
Y2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6
dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gYXBwcm9wcmlhdGVQ
cml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgYnJhbmRHUFIpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0
ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5s
aW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNs
b3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDUxNiw2ICs0NTQ0
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcikp
OwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWco
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBP
cHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSA/IDEgOiAwOwogCiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBtaWdodCB3YW50IHRvIGxh
dGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1MzgsMTAgKzQ1NjcsMTIgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBKUyBzZXR0ZXIgY2FsbCBJ
Q3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0aGlzLgogICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFy
YW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRp
bWl6aW5nSklUKCkpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAg
ICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQdXRCeUlkR2VuZXJhdG9yPjo6
Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCi0gICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRT
Y3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0
Y2hSZWdpc3RlciwgZWNtYU1vZGUsCiAgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CkBAIC00NTUx
LDE0ICs0NTgyLDI3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCEoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRp
b25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFi
ZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVy
YXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3
Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQ
UlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5s
aW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01MjM5
LDYgKzUyODMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAg
ICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRp
bWl6aW5nSklUKCkpID8gMSA6IDA7CiAKICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2Vw
dGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTUyNTksMTAgKzUzMDQsMTEgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdw
cigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwog
ICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSAoT3B0aW9uczo6dXNlU2hhcmVkSUMo
KSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9w
ZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BS
KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0
cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHVi
SW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50MzI7CkBAIC01MjgwLDEzICs1
MzI2LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygm
aml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5r
KCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIShPcHRpb25zOjp1c2VTaGFyZWRJQygp
ICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFi
ZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFs
T3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hh
cmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhC
ZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5NCw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0lu
T3B0aW1pemluZ0pJVCgpKSA/IDIgOiAxOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtNTg1Niw5ICs1OTE0LDExIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVl
UmVncyhwYXJhbXNbMV0uZ3ByKCkpOwogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0g
cGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgICAgIGF1dG8gc2NyYXRjaEdQUiA9IHBhcmFt
cy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICAgICAgYXV0byBzdHViSW5mb0dQUiA9IChPcHRp
b25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklU
KCkpID8gcGFyYW1zLmdwU2NyYXRjaCgxKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsKLSAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAg
IEFTU0VSVChiYXNlLmdwcigpICE9IHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIEFTU0VS
VChyZXR1cm5HUFIgIT0gc2NyYXRjaEdQUik7CiAKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CkBAIC01ODc0LDcgKzU5
MzQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBpZiBjb25z
dGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlLnJhd0Jp
dHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IHBhcmFtc1syXS5ncHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
OwpAQCAtNTg4NCwxOSArNTk0NCwyMCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNj
cmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIp
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFz
dFBhdGgoaml0KTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+
c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAgICAgICAgIGlmICghKE9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkpCisgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7
CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7
CiAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY2
LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6
dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGlt
aXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwog
CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChz
bG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTIyNDIsOCArMTIzMTUsOCBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
YmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVz
ZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBw
cmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCAr
MTIzMzMsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsK
IAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IChPcHRpb25zOjp1c2VTaGFy
ZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpID8gcGFyYW1z
LmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdl
bmVyYXRvciA9IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJ
VCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sw
XS5ncHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2Vu
ZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
ZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTIyNzIsMTQgKzEyMzQ3LDI3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEo
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemlu
Z0pJVCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNb
MF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50
aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdK
SVQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1z
WzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJh
d0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjQ4Niw3ICsxMjU3NCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm90b3R5cGUpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7
CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IChPcHRpb25zOjp1
c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpID8g
MyA6IDI7CiAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJl
cDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICAKQEAgLTEyNTAyLDYg
KzEyNTkwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvdG90eXBlR1BSID0gcGFyYW1zWzJdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNo
YXJlZElDSW5PcHRpbWl6aW5nSklUKCkpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRH
UFJSZWc7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmVKdW1wOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEy
NTIzLDggKzEyNjEyLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhq
aXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAot
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0
R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIsIHByb3Rv
dHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBh
dGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKQEAgLTEyNTM3LDEyICsxMjYyNiwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSAmJiBPcHRp
b25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0
aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHZhbHVlR1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhC
ZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEzOTg2LDYgKzE0MDg3LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IChP
cHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5n
SklUKCkpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRCeUlk
Rmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5jZSBi
b29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxlIHJl
Z2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91Z2gs
IHNpbmNlIHRoZQpAQCAtMTQwMTQsMTAgKzE0MTE2LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBj
YWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IChP
cHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5n
SklUKCkpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAg
ICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRl
KAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDI4
LDE0ICsxNDEzMiwyNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gYXBwcm9wcmlhdGVPcHRpbWl6aW5n
R2V0QnlJZEZ1bmN0aW9uKHR5cGUpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIShPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRp
bWl6aW5nSklUKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xv
d1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFt
c1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpICYmIE9w
dGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVu
Y3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1z
WzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFd
LmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTE0MDYwLDggKzE0
MTc3LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
U29tZVJlZ2lzdGVyKHRoaXNWYWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25v
dENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IChPcHRpb25zOjp1c2VTaGFyZWRJ
QygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpID8gMSA6IDA7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC0xNDA4MywxMCArMTQyMDAsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRl
SW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gKE9wdGlvbnM6
OnVzZVNoYXJlZElDKCkgJiYgT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVu
dGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3By
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwg
SlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDA5NywxNCArMTQy
MTYsMjcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
LmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShPcHRpb25zOjp1c2VT
aGFyZWRJQygpICYmIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygm
aml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1Bh
dGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0u
Z3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkgJiYgT3B0
aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5j
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5y
YXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdp
biwgc2xvd1BhdGhDYWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmNwcAppbmRleCAyYWRkNDk0YzUzMmFhZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRm
Li5iNGU0NzU4ZTU4ZmIxZTc5MjZjNmEwNzE4MzczMTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IHdvcmRTaXplID0gODsKIAogU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4
dCgKLSAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5z
aWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcg
cmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6
IG1faml0KGppdCkKICAgICAsIG1fbnVtQXJncyhudW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdp
c3RlcihyZXR1cm5SZWdpc3RlcikKQEAgLTYzLDYgKzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4
dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJz
Lm1lcmdlKG1fYXJndW1lbnRSZWdpc3RlcnMpOwogICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJ
bnZhbGlkR1BSUmVnKQogICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lz
dGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3Rl
cnMuc2V0KGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50
aW9uUmVnaXN0ZXJzLmZpbHRlcih1c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEy
IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6On5TbG93UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1Bh
dGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdAogewotICAgIHJldHVybiBTbG93UGF0
aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMs
IG1fb2Zmc2V0KTsKKyAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBj
YWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQ
YXRoQ2FsbEtleSBTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVy
czo6QWRkcmVzcyBhZGRyZXNzKSBjb25zdAoreworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXko
bV90aHVua1NhdmVTZXQsIG51bGxwdHIsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBh
ZGRyZXNzLm9mZnNldCk7CiB9CiAKIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0Ojpt
YWtlQ2FsbChWTSYgdm0sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkK
QEAgLTEzMyw2ICsxNDAsMjIgQEAgU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1h
a2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK1Nsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChW
TSYgdm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRo
Q2FsbEtleSBrZXkgPSBrZXlXaXRoVGFyZ2V0KGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2Fs
bCByZXN1bHQgPSBTbG93UGF0aENhbGwobV9qaXQuY2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7
CisKKyAgICBtX2ppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB0aHVuayA9CisgICAgICAgICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRT
bG93UGF0aENhbGxUaHVuayh2bSwgcmVzdWx0LmtleSgpKTsKKworICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKHJlc3VsdC5jYWxsKCksIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFn
Pih0aHVuay5jb2RlKCkpKTsKKyAgICAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4
MWYyNzdmNmI4MjE3YWM5ZjNmYTgwYzEyYS4uZDZmMjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBm
NDgyYTgzMWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5oCkBAIC01NCwxNSArNTQsMTcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2ls
bCBiZSBhbiBSQUlJIHRoaW5neSB0aGF0IHdpbGwgc2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sg
c2l6ZXMgYW5kIG9mZnNldHMgYW5kIHN1Y2guCiBjbGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsK
IHB1YmxpYzoKLSAgICBTbG93UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3Rl
cnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rl
cik7CisgICAgU2xvd1BhdGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBD
Q2FsbEhlbHBlcnMmLCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQ
UlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRl
eHQoKTsKIAogICAgIC8vIE5PVEU6IFRoZSBjYWxsIHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVh
ZHkgZ29pbmcgdG8gYmUgbGlua2VkIGJ5IHRoZSBKSVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAg
ICAvLyBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB5b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAg
ICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVy
czo6QWRkcmVzcyk7CiAKIHByaXZhdGU6CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJn
ZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBT
bG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0
OwogICAgIAogICAgIFJlZ2lzdGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0
ZXJTZXQgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xv
d1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiB7CiAgICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAg
ewotICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0
LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIpOworICAgICAgICBTbG93
UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJn
dW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAg
ICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0x
MTcsNiArMTE5LDQ4IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1
bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlw
ZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LAorICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5j
dGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7Cisg
ICAgU2xvd1BhdGhDYWxsIGNhbGw7CisgICAgeworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0
IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAx
LCByZXN1bHRHUFIsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGw8dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFy
Z3VtZW50cy4uLik7CisgICAgICAgIGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7Cisg
ICAgfQorICAgIGlmIChleGNlcHRpb25UYXJnZXQpCisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+
YXBwZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2sodm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxs
T3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENDYWxsSGVscGVycyYgaml0LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRHUFIsCisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1
bWVudHMpCit7CisgICAgaWYgKGNhbGxTaXRlSW5kZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIo
CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJp
dHMoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAg
IHJldHVybiBjYWxsT3BlcmF0aW9uKHZtLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRh
cmdldCwgZnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJndW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVy
YXRpb24oCisgICAgU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBm
dW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7Cisg
ICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oCisgICAgICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3Rl
cnMsIGppdCwgY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBl
eGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLAorICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENh
bGxLZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXku
Y3BwCmluZGV4IDJkMzA2YzYyMDMzYTgzOTA4ZTZmY2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdl
ODI2MWZkNDczNmIxZDMzNzJiZWY1NTEzZWZlNWFhMzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgiPHVzZWRSZWdp
c3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBj
YWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3Mo
KSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsK
KyAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBv
ZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgaW5kaXJlY3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zm
c2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVy
cywgIj4iKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJj
N2NlODNkNzA1MjBlNzYxMzg0MmJkZDMzZC4uMGNlNjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0
MWFlMTAwMGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRo
Q2FsbEtleS5oCkBAIC01MSwxMSArNTEsMTIgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAg
ICAKICAgICBTbG93UGF0aENhbGxLZXkoCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQs
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIGFyZ3VtZW50UmVnaXN0ZXJzLAotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0LCBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1f
dXNlZFJlZ2lzdGVycyhzZXQpCiAgICAgICAgICwgbV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0
YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKQogICAgICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMo
YXJndW1lbnRSZWdpc3RlcnMpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAs
IG1faW5kaXJlY3RPZmZzZXQoaW5kaXJlY3RPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAg
LTYzLDEwICs2NCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4gY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdl
dDsgfQogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fYXJndW1lbnRSZWdpc3RlcnM7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRpcmVjdE9mZnNldDsgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtl
eSB3aXRoQ2FsbFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQp
CiAgICAgewotICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwg
Y2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRS
ZWdpc3RlcnMoKSwgb2Zmc2V0KCksIGluZGlyZWN0T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFz
cyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVl
VGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkK
LSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhD
YWxsS2V5KERlbGV0ZWRWYWx1ZVRhZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0
ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9
CiAgICAgCkBAIC05MywxOCArOTMsMjAgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7
CiAgICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJz
CiAgICAgICAgICAgICAmJiBtX2NhbGxUYXJnZXQgPT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAg
ICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKKyAgICAgICAgICAgICYmIG1f
b2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0CisgICAgICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0
ID09IG90aGVyLm1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJI
YXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29m
ZnNldDsKKyAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZv
aWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCAr
IG1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1f
dXNlZFJlZ2lzdGVyczsKICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRh
cmdldDsKICAgICBSZWdpc3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZf
dCBtX29mZnNldDsKKyAgICBwdHJkaWZmX3QgbV9vZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBt
X2luZGlyZWN0T2Zmc2V0IHsgMCB9OwogfTsKIAogc3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2gg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWEx
MmFhZGRkMjc2YTkzMzEzM2MwYjM2Yzg2NjEzYWQuLjM5OWNkYjcwNmQ3Nzg4OWE2N2RjODkzOWM3
YzVhMDJiNTZiNzc1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAK
QEAgLTc4LDggKzc4LDggQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gZ2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0
ZXJzKGppdCwgYnVmZmVyKTsKICAgICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11
Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNz
T2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXpl
SW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3Ro
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjEpOwogCiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAs
MTMgKzIwMCwyMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQ
YXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0KICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3Nl
bWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGpp
dC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJl
ckNoZWNrKGppdCwga2V5LmFyZ3VtZW50UmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRv
bnRDbG9iYmVyID0ga2V5LmFyZ3VtZW50UmVnaXN0ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRh
cmdldCgpKQorICAgICAgICBkb250Q2xvYmJlci5zZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Cisg
ICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBXVEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAg
ICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
CisgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0
KCkpCisgICAgICAgIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCBrZXkuaW5kaXJlY3RPZmZzZXQoKSksIE9wZXJhdGlvblB0clRhZyk7CiAKICAg
ICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihH
UFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwpAQCAtMjMyLDcgKzIzOSw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5l
cmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRM
VGh1bmspOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7Cisg
ICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwg
a2V5LmNhbGxUYXJnZXQoKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRvQ1N0
cmluZyhrZXkpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAppbmRleCBjYmMxNGE0MmE2YzRjZTJlYzM3YTA2MDQ1NWEwYjk2NjY2
NGZkODM1Li5kZDNjMjJjN2Y4MzY3Y2Q2MTAxMjY0ODI2Nzc4YzllNTIxOTVmNGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCkBAIC02NTYsNyArNjU3LDcgQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGwKICAgICBhZGRMaW5rVGFzaygKICAgICAgICAgWz0sICZ2bV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZt
LCAqaW5mbyk7Ci0gICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgICAgICAgICBpbmZvLT5zZXRT
bG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7
IH0pKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRodW5rLmNvZGUoKSkpOwogICAgICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4YjEy
MTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcyZDg5ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjll
NzNmYWUzNDExMTg4Njk4OTdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuaApAQCAtMjA3LDcgKzIwNyw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBB
c3NlbWJseUhlbHBlcnMgewogCiAgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sg
NjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0
ZWN0dXJlcy4KICAgICAvLyBleHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1l
bnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAg
ICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAg
ICAgewpAQCAtMjE5LDggKzIxOSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2ln
bmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVu
c2lnbmVkIGc+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBk
LCBlLCBmLCBnPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVk
IGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2ln
bmVkIGcsIHVuc2lnbmVkIGg+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxh
LCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdw
clNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25z
ID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwpAQCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rl
c3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisg
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVn
IGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsK
KyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMg
KyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAg
ICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAg
ICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNv
dXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNo
UmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1G
UFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAx
LCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZw
clNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5m
cHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJS
ZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNb
bnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVz
dGluYXRpb25zW251bUNyb3NzU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQ
UlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291
cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRl
c3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsg
MSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMg
KyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJT
b3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3By
RGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJn
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOwor
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
ICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmco
R1BSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAg
ICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0
YWNrQXJnKEZQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJu
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEs
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+
KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAg
IH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBA
QCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1
bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJy
ZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBj
YWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQg
Y3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAg
IHsKICAgICAgICAgLy8gQ2xhbmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJv
bCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkg
YXJlIHBhc3NlZCBkaXJlY3RseSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVu
dFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQUnMpOworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVu
dCArPSBleHRyYUdQUkFyZ3M7CiAgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9z
c1NvdXJjZXM7CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpA
QCAtMzUwLDE1ICszNjEsMTUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBj
dXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1
bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3Vy
cmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
KTsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3Vy
cmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9r
ZU9mZnNldCk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1
bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVk
IGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9m
ZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBS
QXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAg
ICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BS
QXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQg
JiAxKTsKICAgICB9CiAKQEAgLTM3Niw4ICszODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBw
dWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZv
aWQgTVNWQyBvcHRpbWl6YXRpb24gdGltZSBleHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9y
Y2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRlbXBsYXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVf
RVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdU
eXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxX
QVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1
bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lz
dGVyczsKQEAgLTM5MiwzMSArNDAzLDMxIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBB
c3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9B
UkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3Npbmcg
RlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJz
aGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdw
cigpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2Vs
bFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVu
dFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4u
Lik7CiAgICAgfQpAQCAtNDI0LDggKzQzNSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVn
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUs
IGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEg
ZG91YmxlIik7CiAKQEAgLTQ2OSwyNSArNDgwLDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRH
UEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFy
Z3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygp
LmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJn
dW1lbnQgb24gc3RhY2suCi0gICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3Rh
Y2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRk
UG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9r
ZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVf
aWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291
bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsK
ICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3Mu
YWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFy
ZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcx
IGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQg
bnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAg
ICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChH
UFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVt
QXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRy
YVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsg
MSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRy
YVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywg
ZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2Uo
KSwgYXJncy4uLik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7
Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYg
KHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UgKyAyKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcx
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZh
bHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2Fk
LCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJn
Q291bnQocGF5bG9hZC5ncHIoKSk7CkBAIC01NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRz
QWxpZ25lZDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVl
Pjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3Mg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1
bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFy
Z0NvdW50KGFyZy50YWdHUFIoKSk7CkBAIC01NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhl
bHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1C
MikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1l
Li4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBz
dGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjpp
c19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNp
bmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVz
dGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJn
cy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlz
IG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2lu
Y2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAg
ICAgICAgLy8gSWYgd2UgZXZlciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcg
cG9pbnQgYXJndW1lbnRzIHdlIHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9y
IGJvdGggdHlwZXMsIHdoaWNoIHNvdW5kcwpAQCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFy
ZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZ
U19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRf
QVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxD
VVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRf
QVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
QXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIo
YXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5U
X0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0
KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxX
QVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VS
UkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8
QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0
ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVl
KQogICAgICAgICAgICAgfHwgc3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1
ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwog
ICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVj
YXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAg
ICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2
YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1
cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBB
cmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgp
KSwgYXJncy4uLik7CiAgICAgfQpAQCAtNjM5LDggKzY1MCw4IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAv
LyBCYXNlIGNhc2U7IHNldCB1cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2U+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qg
c2FuaXR5IGNoZWNrIik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBz
ZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1G
UFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBB
cnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNl
cykpOwogICAgIH0KIAotcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzRW50cnlJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgdXNpbmcgRmlyc3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAg
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZy
YW1lKj46OnZhbHVlKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMg
b25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGlu
Z3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEs
ICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpz
dmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0g
c2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdz
Li4uKTsKKyAgICAgICAgfQorICAgIH0KIAotI2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5
cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5
cGU8MD4KK3B1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJn
dW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBU
aGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3Mg
dGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEs
ICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAw
LCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7
CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxl
Y3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBB
TFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVO
VF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BS
UmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3Zh
bHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9m
Li4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxl
Y3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwg
MCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGZ1bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIw
KSwgYXJncy4uLik7CiAgICAgfQogCi0jdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRk
cmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUlt
cGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigp
LnB1c2hOb25BcmcoYWRkcmVzcy5iYXNlLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7
CisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVz
dEIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJl
SklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklU
U3R1YlJvdXRpbmUuY3BwCmluZGV4IGY3YWEzMjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVh
MDVkYjYuLjg4MmVkNDY4ZTEwZTFlODhkZjc5ZjEzZTg1ZTVlNTAzNmEwMzE1ZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3ND
YXNlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5o
IgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTM5LDggKzQwLDEwIEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0m
IHZtKQorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMp
CiAgICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICwgbV92bSh2bSkKKyAgICAsIG1fa2V5
cyhXVEZNb3ZlKGtleXMpKQogewogICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0
aGlzKTsKIH0KQEAgLTQ5LDYgKzUyLDEwIEBAIEdDQXdhcmVKSVRTdHViUm91dGluZTo6fkdDQXdh
cmVKSVRTdHViUm91dGluZSgpIHsgfQogCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6b2Jz
ZXJ2ZVplcm9SZWZDb3VudCgpCiB7CisgICAgYXV0byBpdGVyID0gbV92bS5tX3NoYXJlZEpJVFN0
dWJzLT5tX3N0dWJzLmZpbmQ8U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRyYW5zbGF0b3I+KHRo
aXMpOworICAgIGlmIChpdGVyICE9IG1fdm0ubV9zaGFyZWRKSVRTdHVicy0+bV9zdHVicy5lbmQo
KSkKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJzLT5tX3N0dWJzLnJlbW92ZShpdGVyKTsK
KwogICAgIGlmIChtX2lzSmV0dGlzb25lZCkgewogICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVl
ZGVkIGZvciB3aGVuIHRoZSBzeXN0ZW0gc2h1dHMgZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAg
ICAgLy8gdGhlIEpJVCBzdHViIHJvdXRpbmUgc2V0IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0
IGFyb3VuZCB0byBkZWxldGluZwpAQCAtNzUsOSArODIsOSBAQCB2b2lkIEdDQXdhcmVKSVRTdHVi
Um91dGluZTo6ZGVsZXRlRnJvbUdDKCkKIH0KIAogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGlu
ZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2Vs
bCogb3duZXIsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYg
a2V5cywgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNl
bGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MpCi0gICAgOiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZSwgdm0pCisgICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwg
dm0sIFdURk1vdmUoa2V5cykpCiAgICAgLCBtX2NlbGxzKGNlbGxzLnNpemUoKSkKICAgICAsIG1f
Y2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogewpAQCAtMTA2LDkgKzExMyw5
IEBAIHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0
c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlND
ZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCisgICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0m
IHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+
JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJ
bmRleCkKLSAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVy
LCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKKyAgICA6IE1hcmtpbmdHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIo
Y29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
LCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyLT5jb2Rl
T3JpZ2lucygpKQpAQCAtMTMxLDcgKzEzOCw3IEBAIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhCiAj
ZW5kaWYKIH0KIAotdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxl
cjo6YWJvdXRUb0RpZSgpCit2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25I
YW5kbGVyOjphYm91dFRvRGllKFZNJikKIHsKICAgICBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25I
YW5kbGVyID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTE1NCw2ICsxNjEsNyBA
QCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZl
WmVyb1JlZkNvdW50KCkKIAogUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGlu
ZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiBjb2RlLAorICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLAogICAg
IFZNJiB2bSwKICAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogICAgIGJvb2wgbWFrZXNDYWxscywK
QEAgLTE2NSwxOCArMTczLDE4IEBAIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJv
dXRpbmUoCiAgICAgaWYgKCFtYWtlc0NhbGxzKSB7CiAgICAgICAgIC8vIEFsbG9jYXRpbmcgQ2Fs
bExpbmtJbmZvcyBtZWFucyB3ZSBzaG91bGQgaGF2ZSBjYWxscy4KICAgICAgICAgQVNTRVJUKGNh
bGxMaW5rSW5mb3MuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSklU
U3R1YlJvdXRpbmUoY29kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWFi
bGVKSVRTdHViUm91dGluZSh2bSwgY29kZSwgV1RGTW92ZShrZXlzKSkpOwogICAgIH0KICAgICAK
ICAgICBpZiAoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzLT5qaXRUeXBlKCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxs
cywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMs
IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZt
LCBXVEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNv
ZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRl
eCkpOwogICAgIH0KIAogICAgIGlmIChjZWxscy5pc0VtcHR5KCkgJiYgY2FsbExpbmtJbmZvcy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZShj
b2RlLCB2bSk7CisgICAgICAgIHJldHVybiBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZShj
b2RlLCB2bSwgV1RGTW92ZShrZXlzKSk7CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZN
b3ZlKGNhbGxMaW5rSW5mb3MpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxz
LCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5k
ZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFjYTlmZC4uYjA0NmM4ZTc3OWFm
MDUzOTA3OTIzNmI2NTBiNjAwYmY2NjNmMWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7
CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIApAQCAtNTQs
MTIgKzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2Vz
IG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsK
IAotICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCisgICAgc3Rh
dGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+PiYmIGtleXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKSk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDgg
QEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsK
ICAgICAgICAgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAg
ICAKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorCiAgICAgdm9pZCBkZWxldGVGcm9tR0MoKTsK
ICAgICAKIHByb3RlY3RlZDoKQEAgLTgxLDYgKzg0LDggQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIAogICAgIGJvb2wgbV9tYXlCZUV4ZWN1
dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSmV0dGlzb25lZCB7IGZhbHNlIH07CisgICAg
Vk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBtX2tleXM7CiB9
OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRpdGlvbmFsIG9iamVj
dCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3ICs5Myw3IEBAIGNsYXNzIEdDQXdhcmVK
SVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBjbGFzcyBNYXJraW5nR0NB
d2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiBwdWJs
aWM6CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICAgICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlND
ZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7
CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgY29uc3QgSlNDZWxs
KiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7CiAg
ICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKICAgICAKIHByb3Rl
Y3RlZDoKQEAgLTEwOSwxMCArMTE0LDEwIEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKIAotICAgIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayos
IERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRo
RXhjZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIGNvbnN0
IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+
JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKICAgICB+R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAotICAgIHZvaWQgYWJv
dXRUb0RpZSgpIGZpbmFsOworICAgIHZvaWQgYWJvdXRUb0RpZShWTSYpIGZpbmFsOwogICAgIHZv
aWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIGZpbmFsOwogCiBwcml2YXRlOgpAQCAtMTMyLDYgKzEz
Nyw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZp
bmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyBSZWY8SklUU3R1YlJvdXRpbmU+IGNy
ZWF0ZUpJVFN0dWJSb3V0aW5lKAogLy8gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKIC8vICAgIFZNJiB2bSwKKy8vICAgIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLAogLy8gICAgY29uc3QgSlNDZWxsKiBvd25l
ciwKIC8vICAgIGJvb2wgbWFrZXNDYWxscywKIC8vICAgIC4uLik7CkBAIC0xNDMsNyArMTQ5LDcg
QEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwg
OiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIHdheS4KIAogUmVmPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBib29sIG1h
a2VzQ2FsbHMsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBWTSYsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlND
ZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgg
ZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQ
UkluZm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4w
NjdhYmZmMWQ2YWQyMDA3NTQ1MTgwMDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dQUkluZm8uaApAQCAtNDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7
IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIw
ID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8g
cmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJl
Z2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVy
blZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lz
dGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBA
QCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQ
UjYgPSBBUk02NFJlZ2lzdGVyczo6eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgYXJndW1lbnRHUFI3ID0gQVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8v
IHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVn
aXN0ZXJzOjp4OTsgLy8gcmVnVDkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5W
YWx1ZUdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1Qx
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0g
QVJNNjRSZWdpc3RlcnM6OngyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGI4M2E0
MDZmNzNjYmQ5Zjg1Yjk1MDViYmQwZDkwYTIyZmY3M2I3ODIuLmNkM2Y3OWE4OTc5MDhhODhlODc4
OWY5ODhjMTIzMjk2YmQ3NmMxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkz
OCw2ICs5MzgsMTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICAgICAgICAgIGRvbmVUYXJn
ZXQsCiAgICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhUYXJnZXQsCiAgICAgICAgICAgICAgICAg
c2xvd1BhdGhUYXJnZXQpOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkp
IHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90
SW5kZXhKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KCk7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZv
LT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk5
NCw3ICs5OTgsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmZpbmFsaXplT25NYWluVGhyZWFk
KCkKIAogICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSBwYWlyLnNlY29uZDsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsg
PSB2aXJ0dWFsVGh1bmtGb3IoKm1fdm0sIGluZm8pOwotICAgICAgICBpbmZvLnNldFNsb3dTdHVi
KEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgKm1fdm0pKTsKKyAg
ICAgICAgaW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0
dWFsVGh1bmssICptX3ZtLCB7IH0pKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hO
ZWFyQ2FsbChjYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPih2aXJ0dWFsVGh1bmsuY29kZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCBjNzBhN2Q5ZTMzZmExNTZjZGI1NGM4OGFjNzIxNzhhNjc4NDRmMWZmLi5mNjEyZjE4
M2Q0ZmRmYjA1ODRkMWNjNWRiZGFhNjgwZjI3MTMyZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKQEAgLTI5Myw2ICsyOTMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb25DYWxsOwogICAgICAgICB9CiAKKyAgICAgICAgQ2FsbCBhcHBlbmRDYWxsKEFk
ZHJlc3MgZnVuY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjYWxsKGZ1bmN0
aW9uLCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQogICAgICAgICBDYWxsIGFwcGVuZENhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBl
KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAgICAgIHsK
QEAgLTM5NCwzOSArMzk5LDM5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBQcm9wZXJ0
eSBpcyBpbnQtY2hlY2tlZCBhbmQgemVybyBleHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQu
CiAgICAgICAgIC8vIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLiBSZXR1cm5zIHRoZSBz
bG93IGNhc2VzLiBGYWxsLXRocm91Z2gKICAgICAgICAgLy8gY2FzZSBjb250YWlucyByZXN1bHQg
aW4gcmVnVDAsIGFuZCBpdCBpcyBub3QgeWV0IHByb2ZpbGVkLgotICAgICAgICBKdW1wTGlzdCBl
bWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSkgeyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRU
eXBlLCBJbnQzMlNoYXBlKTsgfQotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlz
dCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7Ci0g
ICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJy
YXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvKSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5
VmFsSW5mbywgSW50MzJTaGFwZSk7IH0KKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbyk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJ
bmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1
bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOworICAgICAgICBKdW1wTGlzdCBl
bWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOwogCiAgICAgICAgIC8v
IFByb3BlcnR5IGlzIGluIHJlZ1QxLCBiYXNlIGlzIGluIHJlZ1QwLiByZWdUMiBjb250YWlucyBp
bmRlY2luZyB0eXBlLgogICAgICAgICAvLyBUaGUgdmFsdWUgdG8gc3RvcmUgaXMgbm90IHlldCBs
b2FkZWQuIFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFuZAogICAgICAgICAvLyB6ZXJvLWV4dGVu
ZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQu
CiAgICAgICAgIC8vIHJldHVybnMgdGhlIHNsb3cgY2FzZXMuCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1
b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIEludDMyU2hhcGUpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBi
eVZhbEluZm8sIEludDMyU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZh
bEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3Vv
dXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgRG91YmxlU2hhcGUpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBi
eVZhbEluZm8sIERvdWJsZVNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRp
Z3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFs
SW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAg
IEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7
CisgICAgICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50
VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5
VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlw
ZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0
RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVk
QXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFs
KE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRB
cnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBFQ01B
TW9kZSBlY21hTW9kZShPcCk7CkBAIC04MzQsMTMgKzgzOSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRk
cmVzcyk7CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJu
VHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICNlbmRpZgogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25F
eGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
TWV0YWRhdGE+CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNz
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5h
YmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9B
c3NlbWJsZXI6OkNhbGw+CkBAIC04NTAsNiArODU5LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5h
YmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9B
c3NlbWJsZXI6OkNhbGw+CisgICAgICAgIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAgICAgICAg
ICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBh
cmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZz
ZXQpLCByZXN1bHQpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0
KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogICAgICAgICBzdHJ1Y3QgaXM2NEJp
dFR5cGUgewpAQCAtODcwLDYgKzg4NywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJl
dHVyblR5cGUob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAg
ICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0
aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIC8vIHg2NCBXaW5kb3dzIGNh
bm5vdCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhh
biA2NCBiaXRzLgorICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0VHlwZTx0eXBlbmFt
ZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46OnZhbHVlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoQWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbHNl
IC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFyZ3MuLi4gYXJn
cykKQEAgLTg3Nyw2ICs5MDQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0
LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9y
SW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2VuZGlmIC8vIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGEs
IHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC04ODcsNiArOTIx
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAg
ICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1
bHQsIE1hY3JvQXNzZW1ibGVyOjpDYWxsPgorICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2Zp
bGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0
V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0
Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4uLiBhcmdzKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCA2OTZlZjg2NGZmY2U4ZTQzNDFmMDE2ZDE3
ZjYwZWVjNDVkYTViN2ExLi5hZTNkMzdlMjQwNjc3NzVkNmEzMGQ0NGQ5NmJmZjg1YjJkOGFkOGJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTM5OCw4ICszOTgsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5
dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNDMyLDggKzQzMiwx
NSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICBhdXRvIGRvbmUgPSBqdW1wKCk7CiAKICAg
ICBub3RPYmplY3QubGluayh0aGlzKTsKQEAgLTQ4MCw4ICs0ODcsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAg
ICAgUmVnaXN0ZXJTZXQgcHJlc2VydmVkUmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKTsKICAgICAgICAgcHJlc2VydmVkUmVncy5hZGQodmFsdWVHUFIpOwogICAg
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKLSAgICAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9w
ZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1Zh
bHVlUmVncyhkb25lR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBtX2Nv
ZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkp
LCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwg
SlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCByZWdUMywg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9n
ZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQ5OSw4ICs1MDYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAg
SnVtcExpc3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdz
KGRvbmVHUFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsK
IAogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSks
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5k
ZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBK
U1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgcmVnVDQsIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJ
ZHMuYXBwZW5kKGdlbik7CkBAIC01MjgsMTYgKzUzNSwyMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93QwogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogICAgICAgICBKdW1wTGlzdCBu
b3RPYmplY3Q7CiAgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJS
ZXN1bHRHUFIpKTsKLSAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChp
dGVyUmVzdWx0R1BSKSk7CiAKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0o
KS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKICAgICAgICAgCiAgICAgICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0Jp
dHMoKSk7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJl
c3VsdEdQUikpOwogCisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9u
ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KGp1bXAoKSk7CkBAIC01NTYsOCArNTcwLDEzIEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDCiAKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAg
ICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Ci0KKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwog
ICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGYz
OTAzMjc2YjUyYTBiNTYwMDEyZGFiZmRjZWQwZjY1MWMxZTNkYTAuLmEwOTc3NmE5NWNhNWEyMWJh
NmRiNjY5NWVhNmFiOWE4YWYyYzUzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAKQEAgLTM5Niw2ICszOTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgSklUVHlwZTo6
QmFzZWxpbmVKSVQsCiAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAg
ICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkp
LAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCkBAIC00
MDUsNyArNDA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAg
IAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVu
ZChnZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIG5leHRSZWdzKTsKQEAgLTUwNSw2ICs1MDcsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAg
ICAgcHJlc2VydmVkUmVncy5hZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJ
VFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgcHJlc2VydmVkUmVncywKQEAgLTUxMyw3ICs1
MTYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKICAgICAgICAgICAgIGRvbmVSZWdzLAogICAgICAgICAgICAgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFPcHRp
b25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgICAgICBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCBkb25lUmVncyk7CkBAIC01MzMsNiArNTM3LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAg
ICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAg
ICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJ
bmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAg
ICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLApAQCAtNTQxLDcgKzU0
Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogICAgICAgICAgICAgcmVzdWx0UmVncywKICAgICAgICAgICAgIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0g
ICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghT3B0
aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmVzdWx0UmVncyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ29kZS5oCmluZGV4IDZmYTcyNDRlZjBhMDhjOWYwNDdhMzIyMDRmNzM3ZDI5Mjg3
MTkwNmYuLjg3NzcwYmY4NDhhM2FmYTlkZGJmMGIxODIyMzdmMTNjYTBlMmJiYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tl
ZFJlZmVyZW5jZXM7CiBjbGFzcyBWTTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7
Ci0gICAgTm9uZSwKLSAgICBIb3N0Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0g
ICAgQmFzZWxpbmVKSVQsCi0gICAgREZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAw
MCwKKyAgICBIb3N0Q2FsbFRodW5rID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBi
MDEwLAorICAgIEJhc2VsaW5lSklUID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAg
RlRMSklUID0gMGIxMDEsCiB9Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklU
VHlwZSA9IDM7CitzdGF0aWNfYXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19j
YXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsg
MSA9PSB3aWR0aE9mSklUVHlwZSk7CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogcHVibGljOgpAQCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFz
cyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICAg
ICAgcmV0dXJuIGppdFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBl
ID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHVzZVNo
YXJlZElDKEpJVFR5cGUgaml0VHlwZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpOworICAg
IH0KKwogICAgIHZpcnR1YWwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmli
dXRlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2
Mjk4YzNkZTY0NjIyY2UuLjJiZDBkZDgzMmM5Y2RhNTBmZjBlMWZjZGIxN2Q5YjFmYzI0NjM1NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCkBAIC00Myw5ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0dXJlU3R1YkluZm8q
IGdhcmJhZ2VTdHViSW5mbygpCiB9CiAKIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAgOiBtX2NvZGVCbG9j
ayhjb2RlQmxvY2spCisgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKIHsKICAgICBtX3N0dWJJbmZv
ID0gbV9jb2RlQmxvY2sgPyBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oYWNjZXNzVHlwZSwgY29k
ZU9yaWdpbikgOiBnYXJiYWdlU3R1YkluZm8oKTsKICAgICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUlu
ZGV4ID0gY2FsbFNpdGU7CkBAIC02MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcjo6ZmluYWxpemUoCiAKICAgICBtX3N0dWJJbmZvLT5kb25lTG9jYXRpb24gPSBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJ
bmZvLT5zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5h
bFB0clRhZz4obV9zbG93UGF0aENhbGwpOworICAgIGlmIChtX3Nsb3dQYXRoQ2FsbC5tX2xhYmVs
LmlzU2V0KCkpCisgICAgICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xv
d1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CiAgICAg
bV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxK
SVRTdHViUm91dGluZVB0clRhZz4obV9zbG93UGF0aEJlZ2luKTsKIH0KIAogSklUQnlJZEdlbmVy
YXRvcjo6SklUQnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Io
Y29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVy
cykKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1f
dmFsdWUodmFsdWUpCiB7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQ
UigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5m
by0+dmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsKQEAgLTgzLDI3ICs4Niw0MCBAQCBKSVRC
eUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6
OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsK
LSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRp
b25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
OjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRy
ID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAg
ICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgICAgICBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgfQogfQogCiB2b2lkIEpJVEJ5SWRH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3Qg
aW5saW5lSUNTaXplKQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBzaXplX3Qg
c3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7Ci0gICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQuanVtcCgpOwotICAgIHNpemVfdCBqdW1wU2l6ZSA9IGppdC5tX2Fz
c2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpIC0gc3RhcnRTaXplOwotICAgIHNpemVfdCBub3Bz
VG9FbWl0SW5CeXRlcyA9IGlubGluZUlDU2l6ZSAtIGp1bXBTaXplOwotICAgIGppdC5lbWl0Tm9w
cyhub3BzVG9FbWl0SW5CeXRlcyk7Ci0gICAgQVNTRVJUKGppdC5tX2Fzc2VtYmxlci5idWZmZXIo
KS5jb2RlU2l6ZSgpIC0gc3RhcnRTaXplID09IGlubGluZUlDU2l6ZSk7CisjaWYgMAorICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJ
bmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyNlbmRpZgorICAgICAgICBz
aXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7Cisg
ICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKKyAgICAgICAgc2l6ZV90IGp1bXBT
aXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgLSBzdGFydFNpemU7Cisg
ICAgICAgIHNpemVfdCBub3BzVG9FbWl0SW5CeXRlcyA9IGlubGluZUlDU2l6ZSAtIGp1bXBTaXpl
OworICAgICAgICBqaXQuZW1pdE5vcHMobm9wc1RvRW1pdEluQnl0ZXMpOworICAgICAgICBBU1NF
UlQoaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgLSBzdGFydFNpemUgPT0gaW5s
aW5lSUNTaXplKTsKKyNpZiAwCisgICAgfQorI2VuZGlmCiAgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7CiB9CiAKIEpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCi0gICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHZhbHVlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMs
IGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29k
ZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJl
Z2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICwgbV9pc0xlbmd0aEFjY2Vz
cyhwcm9wZXJ0eU5hbWUudWlkKCkgPT0gY29kZUJsb2NrLT52bSgpLnByb3BlcnR5TmFtZXMtPmxl
bmd0aC5pbXBsKCkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0g
dmFsdWUudGFnR1BSKCkpOwpAQCAtMTE1LDkgKzEzMSw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRHZXRC
eUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdGhpc1JlZ3MpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVy
cywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlw
ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQ
UlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRU
eXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1
c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQodGhpc1JlZ3MucGF5bG9hZEdQUigpICE9IHRoaXNSZWdzLnRhZ0dQUigpKTsKIApAQCAt
MTMzLDEwICsxNDksMTAgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUUHV0QnlJZEdlbmVyYXRv
cjo6SklUUHV0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hl
YWJsZUlkZW50aWZpZXIsCisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIAogICAgIEVDTUFNb2RlIGVjbWFN
b2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMs
IGJhc2UsIHZhbHVlKQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRU
eXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJz
LCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKICAgICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3MSwxNCArMTg3LDE1IEBA
IFZfSklUT3BlcmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5j
dGlvbigpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5VmFsR2VuZXJhdG9yOjpK
SVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJl
Z2lzdGVycykKK0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNl
KGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9
IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBh
eWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHku
cGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRH
UFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFn
R1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAt
MTkxLDI2ICsyMDgsMzUgQEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklURGVsQnlW
YWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAg
ICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7Cisg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVy
czo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAg
ICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6
ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRo
KQordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBh
dGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5t
X2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAg
IEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHVi
SW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7
CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9j
YXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0KIH0KIAotSklU
RGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQotICAgIDog
QmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRl
bGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlk
R2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNo
KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHVi
SW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICBBU1NFUlQoYmFzZS5wYXls
b2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQ
UiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIg
PSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxv
YWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQu
dGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpA
QCAtMjIzLDIyICsyNDksMzAgQEAgSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3IKIHZvaWQgSklURGVs
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewog
ICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRj
aGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsK
KyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQog
ICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6
OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0
aCkKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBh
dGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5t
X2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAg
IEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHVi
SW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7
CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9j
YXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0KIH0KIAogSklU
SW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDog
SklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29k
ZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVz
ZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAgICAvLyBGSVhNRTog
V2UgYXJlIG5vdCBzdXBwb3J0aW5nIGZhc3QgcGF0aCBmb3IgImxlbmd0aCIgcHJvcGVydHkuCiAg
ICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5TmFtZSk7CkBAIC0yNTEsMTUgKzI4NSwxNSBAQCB2b2lk
IEpJVEluQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogfQogCiBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAot
ICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAorICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5
cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3Jh
dGNoMiwgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0KQotICAgIDogSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IoCi0gICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKKyAgICA6IEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gdmFsdWU7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7
CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm90b3R5cGVHUFIgPSBwcm90b3R5cGU7CisgICAgbV9z
dHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9z
dHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjc5LDIxICszMTMsMjgg
QEAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKIAogdm9p
ZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
JiBqaXQpCiB7Ci0gICAgbV9qdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9H
UFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fanVtcCA9IGppdC5w
YXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCiB2
b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRo
LCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6
ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwKLSAgICAgICAgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9qdW1wKSk7Ci0gICAgCi0gICAgZmFz
dFBhdGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5vUHRyVGFnPiht
X3Nsb3dQYXRoQmVnaW4pKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBl
KSkgeworICAgICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgs
IHNsb3dQYXRoLCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJ
bmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9qdW1wKSk7CisgICAgICAgIGZhc3RQ
YXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgubG9jYXRpb25PZjxOb1B0clRhZz4obV9z
bG93UGF0aEJlZ2luKSk7CisgICAgfQogfQogCi1KSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQotICAgIDogQmFzZShjb2RlQmxvY2ss
IGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29k
ZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1
c2VkUmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3Jlc3VsdChyZXN1bHQp
CiB7CkBAIC0zMDIsNiArMzQzLDcgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFs
R2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBtX3N0
dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVn
cy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52
YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdH
UFIgPSByZXN1bHQudGFnR1BSKCk7CkBAIC0zMTIsMjAgKzM1NCwyOCBAQCBKSVRHZXRCeVZhbEdl
bmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZQogdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBt
X3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAg
ICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5w
YXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12
b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0g
ICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAg
IGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUp
KSB7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAg
ICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExv
Y2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwor
ICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0
aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKLUpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpCi0g
ICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlw
ZSwgdXNlZFJlZ2lzdGVycykKK0pJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGpp
dFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BS
KQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5cGUg
PT0gQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NU
eXBlOjpTZXRQcml2YXRlQnJhbmQpOwogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IGZhbHNlOwpAQCAtMzMzLDYgKzM4Myw3IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1
YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5m
by0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9H
UFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8t
PmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYuYnJhbmRUYWdH
UFIgPSBicmFuZC50YWdHUFIoKTsKQEAgLTM0MywxNiArMzk0LDI0IEBAIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsCiB2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwo
KTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJ
VFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVt
cCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgp
OwogfQogCi12b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoCi0g
ICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRo
LCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsK
LSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0
aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUo
ZmFzdFBhdGgsIHNsb3dQYXRoLCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIg
PSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQ
YXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4o
bV9zdGFydCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggZDZj
YTZlMTZhM2YzMmM2NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MS4uNjQ4NTEyYjEwYjAzZGIwN2Mw
M2ViNTMzZTUyMDk0NmY1NWZjOWU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNDEsMTIgKzQxLDEyIEBAIGNsYXNz
IENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vz
c1R5cGUgOiBpbnQ4X3Q7CitlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCiBjbGFzcyBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiBwcm90ZWN0ZWQ6CiAgICAgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IoKSB7IH0KLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAgQ29k
ZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKENv
ZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKICAgICAKIHB1YmxpYzoKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8oKSBjb25zdCB7IHJldHVybiBtX3N0dWJJbmZvOyB9
CkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICAK
IHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEpJVFR5cGUgbV9q
aXRUeXBlOwogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwogCiAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIG1fZG9uZTsKQEAgLTc3LDEzICs3OCwxMiBAQCBjbGFzcyBKSVRCeUlk
R2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRCeUlk
R2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHVi
SW5mb0dQUik7CiAKIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLmlzU2V0KCkp
OwogICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXA7CiAgICAgfQogCkBAIC0xMDYsOCArMTA2
LDggQEAgY2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9y
IHsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUpOworICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgQWNjZXNzVHlwZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJik7CiAKQEAgLTEyMCw4ICsxMjAsOCBAQCBjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgSklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRo
aXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJik7CiB9OwpAQCAtMTMzLDggKzEzMyw4IEBAIGNsYXNzIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgeyB9CiAKICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJ
VFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAorICAgICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwg
RUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTUxLDggKzE1MSw4IEBAIGNsYXNzIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVREZWxC
eVZhbEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBw
cm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENv
ZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQ
UlJlZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgp
IGNvbnN0CiAgICAgewpAQCAtMTc2LDggKzE3Niw4IEBAIGNsYXNzIEpJVERlbEJ5SWRHZW5lcmF0
b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgQ29kZUJsb2NrKiwg
SklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRj
aCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAg
IHsKQEAgLTIwMCw4ICsyMDAsOCBAQCBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMg
SklUQnlJZEdlbmVyYXRvciB7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBK
SVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVu
dGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7Cisg
ICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsK
QEAgLTIxMSw4ICsyMTEsOCBAQCBjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKCkg
eyB9CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIEdQUlJlZyByZXN1bHQsCi0gICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3Rv
dHlwZSwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCisgICAgICAgIENvZGVCbG9j
ayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAorICAgICAgICBHUFJSZWcgdmFsdWUsIEdQ
UlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJS
ZWcgc2NyYXRjaDIsCiAgICAgICAgIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZhbHNl
KTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKQEAg
LTIyOSw4ICsyMjksOCBAQCBjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAog
ICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yNTcsOCArMjU3LDgg
QEAgY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoKSB7
IH0KIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIGJyYW5kKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1
YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IGU3OWNk
MzZlZjU3ZDdiZGNlY2UxNzY4ZDA1ODhhZmVlZDg4ODUwMTUuLjE3N2RiNjA3YjI2MTQ0MzAwMTBl
NzMyODYxMzhmMTQzZjdiZjkyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCkBAIC0zMywxNyArMzMsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUp
IHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChj
dXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVREb3Vi
bGU6Ci0gICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJh
ZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9u
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAg
cmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwor
ICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFk
VHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0
dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7Cisg
ICAgICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMTI4LDYgKzEyOCwxNCBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdAogICAgIHJldHVybiBj
YWxsOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQoreworICAgIHVwZGF0ZVRv
cENhbGxGcmFtZSgpOworICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KGZ1bmN0aW9uKTsKKyAgICBleGNlcHRpb25DaGVjaygpOworICAgIHJldHVybiBjYWxsOworfQor
CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhS
ZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiB7
CkBAIC0xNTcsNiArMTY1LDE3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAgcmV0dXJu
IGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzIGZ1bmN0aW9u
LCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwg
PSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7Cisj
ZWxzZQorICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIp
OworI2VuZGlmCisgICAgcmV0dXJuIGNhbGw7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFk
YXRhPgogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1l
dGFkYXRhLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBWaXJ0
dWFsUmVnaXN0ZXIgZHN0KQogewpAQCAtMTcxLDYgKzE5MCwyMCBAQCBBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0
YT4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRh
ZGF0YSwgQWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5j
dGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1l
dGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YSwgSlNWYWx1ZVJlZ3MocmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUikpOworICAg
IGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlm
CisgICAgcmV0dXJuIGNhbGw7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93
Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFZp
cnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwo
cmVnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDU1ZThh
N2M3MTA4YTY5ZGQ2YjQzNTMxZDdhNzgwOWYyMjJjMDA2OTIuLmE3ZDNkNjM2Nzc1MTA4NmQzMjBh
YTY4ZDg0Y2Y2ZTE3OTllMzc1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtMTY0LDExICsxNjQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2Vv
Zihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAgSklUSW5zdGFuY2VPZkdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAgIHJl
Z1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgcmVnVDUsCiAg
ICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKQEAgLTE4Niw3ICsxODcs
MTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
JiBnZW4gPSBtX2luc3RhbmNlT2ZzW21faW5zdGFuY2VPZkluZGV4KytdOwogICAgIAogICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVn
VDEpOworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7
CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbnN0
YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8o
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbjxk
ZWNsdHlwZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUpPihBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJl
c3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIHJlZ1QxKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMiwgcmVnVDEpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTE2NDAsNyArMTY0OCw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBs
aWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1p
dExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUp
OworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKICAgICBK
dW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTE2NTUsOCArMTY2MywxMyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0
aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1YiBm
b3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwg
cmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUo
KSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJl
dHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRy
VGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFy
ZWRJQygpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5l
LT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICB9
CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE2OTAsMTEgKzE3MDMs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBM
aXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwg
bW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJh
eU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
IAogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkp
KSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAgaWYgKCFPcHRpb25z
Ojp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRT
bG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAt
MTcyMCw3ICsxNzM0LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50CiAgICAgCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsKKworICAg
IENhbGwgY2FsbDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBi
eVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURl
ZmF1bHQ7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb248ZGVjbHR5cGUob3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRzdCwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIEdQUkluZm86Om5v
bkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOwogCiAgICAg
bV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhU
YXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0
cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA4ZGIzNTllYmQ4Y2QwNTY2OTczYjg2
M2M0ODY3NDFhN2ZhZTIyNDVlLi5iNDNlZmViM2U3YjczNzBmYmY3MWIyYzQzZDA0ZDAyMTNjM2I4
ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CkBAIC0xNjIsMTEgKzE2MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIsIC8vIHZh
bHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdUNywKICAgICAgICAgcmVn
VDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChnZW4pOwpAQCAtMTE5OSw3ICsxMjAwLDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3Bl
cnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNv
ZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0
aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJu
QWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICBieVZhbEluZm8t
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEyNjcsNiArMTI2OCw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21f
YnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJl
c3MgPSBjYWxsOworICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFz
SW5kZXhlZFByb3BlcnR5RGVmYXVsdDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCsrOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBk
NzY1NWM3ZDhkZmY2YzAwNWIwM2FmNzFhODI5NWU5YzdjOThjNDg2Li5hOTQ2NWJiNWM1YWNhMDY2
ZDNiYTdiZGI5ZjUyYzBhZDMwMWU4NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwMDMsNyArMTAwMywxMCBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYQogICAgIGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsK
ICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlW
YWxHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAg
ICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5l
cmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMpOwogICAgIH0KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFs
KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVj
bWFNb2RlKSk7CiB9CkBAIC0xMDk1LDcgKzEwOTgsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVj
dCoKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAg
ICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRv
b2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhS
ZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAg
ICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1
cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZh
bHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CkBAIC0xMjc5LDcgKzEyODUsMTAgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXph
dGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGlt
aXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2Rl
QmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9
CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yNTgwLDcgKzI1ODksMTEgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29k
ZWRKU1ZhbHVlLCAoSlMKICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49
IDEwCiAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygp
KSB7CiAgICAgICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAg
ICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRV
Uk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
ICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBi
eVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdl
bmVyaWM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlS
ZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYjk5
NDNhMGEyYTMzMmMyYzJkNzE4MmRlZjVhZTcwMTE4MmZiMGNkMS4uOTgyNmM2NjViNGFhNjIwODU4
MzVjNzAxMmRkNzgxMjQyYTVkMzA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJUaHVu
a0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02OSwxMiArNzAsMTUgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgICAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkU2xv
d0Nhc2UoKTsKICAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3Vs
dFJlZ3MpOwpAQCAtOTMsMTQgKzk3LDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAg
ICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgICAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICAgICAgKyttX2dl
dEJ5VmFsSW5kZXg7CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5
VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlW
YWxPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCBwcm9maWxlLCByZWdUMCwgcmVnVDEpOwogI2Vsc2UKICAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CiAgICAgICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAt
MTE4LDcgKzEyMyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAg
ICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CiAgICAgICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTM4LDcgKzE0NSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsK
IAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFy
ZWRJQygpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC0xNTcsOSArMTY1LDEzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5l
cmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAg
IC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0
aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBj
bGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YXJlZElDKCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0
YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAorICAgICAg
ICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgorICAgICAgICBqaXQu
cmV0KCk7CisgICAgfQogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEwICsxOTQsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhy
ZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFs
dWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAg
ICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MsIHJlZ1QyKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRT
bG93Q2FzZSgpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3Mp
OwpAQCAtMjAxLDggKzIxNiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgKyttX2dldEJ5VmFsSW5kZXg7CisgICAg
SklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsr
XTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKQEAgLTIxMSw2ICsyMjUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZQogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
Uik7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CiAKQEAgLTIyNiw3ICsyNDEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2Fs
bCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgQ2Fs
bCBjYWxsOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9
IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRh
dGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI0NSw3ICsyNjIsOCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7
CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgaml0LnN0b3Jl
MzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpOwpAQCAtMjYzLDkgKzI4MSwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJv
cGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBG
SVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRh
cmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50
IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJ
QygpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBj
YWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKKyAgICAgICAgLy8g
b2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KKyAgICAgICAgaml0LnJldCgp
OworICAgIH0KIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKQEAgLTI4NSwxMCArMzA3LDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VHUFIs
IGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVt
aXQgd3JpdGUtYmFycmllciBhdCB0aGUgZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJp
ZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgpAQCAtMzAyLDggKzMyNyw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3By
aXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7
CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFu
ZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0z
MTIsNiArMzM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKICAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BS
LCBicmFuZEdQUik7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGlt
aXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogCkBAIC0zMjgsOSArMzUzLDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9z
ZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUo
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rp
b25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1
bWVudFR5cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25T
ZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghT3B0aW9u
czo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAj
ZW5kaWYKKwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKQEAgLTM0NiwxMCArMzc0LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQor
ICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4p
OwogfQogCkBAIC0zNTcsOCArMzg4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKIHsKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNz
SW5kZXhdOwotICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2
YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTM2Nyw2ICszOTcsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgYnJhbmRHUFIpOwog
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplOwogICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwog
CkBAIC0zODMsNyArNDE0LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46
OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghT3B0aW9uczo6dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNDE1LDggKzQ0OCwxNCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKICAgICBQ
YXRjaGFibGVKdW1wIG5vdEluZGV4OwogICAgIGlmICghcHJvcGVydHlOYW1lSXNJbnRlZ2VyQ29u
c3RhbnQpIHsKLSAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJl
Z1QxKTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICBpZiAoT3B0aW9u
czo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAgICAgYXV0byBpc0ludDMyID0gYnJhbmNoSWZJ
bnQzMihyZWdUMSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJ
bmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAg
ICAgICAgIGlzSW50MzIubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG5vdEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7CisgICAgICAgICAg
ICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIH0KICAgICAgICAgLy8gU2VlIGNvbW1l
bnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICAgICAgemVyb0V4dGVuZDMyVG9Xb3JkKHJlZ1QxLCBy
ZWdUMSk7CiAgICAgfQpAQCAtNDMyLDIzICs0NzEsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFy
cmF5TW9kZSBtb2RlID0gY2hvb3NlQXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9k
ZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMy
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5m
byk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBp
ZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUp
OwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxh
YmVsKCk7CkBAIC00NTcsNyArNDk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4
aW5nU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFs
dWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNDY1LDcgKzUwNSwxNiBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZAogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUg
PSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGlu
Z1NoYXBlKSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYg
KGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIo
RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgICAgICAgICAg
ZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0
aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAg
IH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworCiAgICAgCiAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAg
SnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3Mo
cmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtNTE1LDcgKzU2
NCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFs
SW5mbyogYnlWYWxJbmZvKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1f
dmFsdWU7CkBAIC01MjMsNyArNTcyLDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAg
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkp
OworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChieVZhbElu
Zm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBy
ZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJK
dW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAg
IH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdU
MiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtNTY4LDggKzYy
Niw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
T3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
cyhiYXNlLCByZWdUMCwgdmFsdWUsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21h
TW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJp
ZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3Jp
dGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBA
IC01ODAsNyArNjM4LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsK
IAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7
CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlv
bigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1l
LnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0Jp
dHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
ICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYxOSw2ICs2ODMsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8UwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJl
Y3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgp
KSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgYnlWYWxJbmZvLT5tX3Ns
b3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUg
OiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5
dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC02MzgsOCArNzAzLDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihlY21hTW9kZS52
YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgYXV0byogb3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKLSAg
ICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgQ2FsbCBjYWxsOworICAg
IGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
aXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0
QnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcyMyw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQg
aml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFPcHRpb25z
Ojp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC02NzUsOSArNzQyLDEzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1
dEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2
YWx1ZVBSLCBieVZhbEluZm9HUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFp
bCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBv
ZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAg
ICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVz
cyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAorICAgICAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0Lgor
ICAgICAgICBqaXQucmV0KCk7CisgICAgfQogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOwpAQCAtNjk2LDggKzc2Nywx
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIGJhc2UpOwogCi0gICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJs
ZUp1bXAoKTsKLSAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgUGF0Y2hhYmxlSnVt
cCBmYXN0UGF0aEptcDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
ZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAgICAgIGZhc3RQYXRoSm1w
ID0gcGF0Y2hhYmxlSnVtcCgpOworICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7Cisg
ICAgfQogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAgIApAQCAtNzI0LDYgKzgw
MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwg
YnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZN
JiB2bSA9IHRoaXMtPnZtKCk7CisgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVy
YXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5
dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC03NDMsNyArODIwLDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZh
bHVlKCkpLCBwdXRLaW5kR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
UHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghT3B0aW9u
czo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcgKzg0MCw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwog
CiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC03NzksOSArODU5LDEzIEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIHB1dEtpbmRHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVh
ZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0
LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBD
b25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9w
ZXJhdGlvbiBpbnN0ZWFkCisgICAgICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRv
IGNhbGwgaXQuCisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbCIpOwpAQCAtODQ2LDExICs5MzAsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QxLCBiYXNlKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVn
VDIpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVn
VDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQor
ICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAtODgxLDYgKzk2OCw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgp
KSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApA
QCAtODk4LDE1ICs5ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAgICBDYWxs
IGNhbGw7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdU
MCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC05MTgs
NyArMTAwNyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC05MzUsOSAr
MTAyNSwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKKyAgICAgICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRo
ZSBjbGllbnQgdG8gY2FsbCBpdC4KKyAgICAgICAgaml0LnJldCgpOworICAgIH0KIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOwpAQCAtOTU2LDEwICsxMDUwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5VmFs
cy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1Qw
KSk7CkBAIC05OTEsNiArMTA4OCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBy
ZWdUMCwgcmVnVDEsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsK
ICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAt
MTAwOCwxNSArMTEwNiwxNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAgQ2Fs
bCBjYWxsOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9
IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJl
Z1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJl
Z1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTEw
MjgsNyArMTEyNyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1
LDkgKzExNDUsMTMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRl
ciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlv
biBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4K
LSAgICBqaXQucmV0KCk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAg
IGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UgeworICAg
ICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkg
dG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAorICAgICAgICAvLyBvZiByZXR1cm5pbmcg
dG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgorICAgICAgICBqaXQucmV0KCk7CisgICAgfQogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9w
cmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4ICsxMTcyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5
X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlk
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5
cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdl
bik7CkBAIC0xMDk0LDYgKzExOTgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCByZXN1
bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNv
ZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTExMCw3
ICsxMjE1LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICgh
T3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7
CkBAIC0xMTMzLDggKzEyNDAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVl
UmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0
QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsK
QEAgLTExNjAsNiArMTI2Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGly
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeUlk
RGlyZWN0T3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGlt
aXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogCkBAIC0xMTc2LDcgKzEyODQsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5
SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2
YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXpl
KTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMTcsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlw
ZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1Qx
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtMTIzMyw4ICsxMzQzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhp
cy5hcHBlbmQoZ2VuKTsKQEAgLTEyNjAsNiArMTM3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
KyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOwogCkBAIC0xMjc1LDcgKzEzODYsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMo
KSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTI5NCw3ICsxNDA3LDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lk
X3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIU9w
dGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEzMTEsOSArMTQyNSwxMyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAot
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0
byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRo
ZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKE9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJU
YWcpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMg
YSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAorICAg
ICAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgorICAgICAgICBq
aXQucmV0KCk7CisgICAgfQogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xMzM3LDYgKzE0NTUsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsIHJlc3Vs
dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QwLCByZWdUMSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7
CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplOwogICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwog
CkBAIC0xMzU0LDcgKzE0NzMsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlH
UFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXNPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlz
T3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzczLDcgKzE0
OTQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjM7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTM5Miw5ICsxNTE0
LDEzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVh
ZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0
LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8g
RklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0
YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKKyAgICAgICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBj
bGllbnQgdG8gY2FsbCBpdC4KKyAgICAgICAgaml0LnJldCgpOworICAgIH0KIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
cHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1NDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCByZWdU
MiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3Qg
OiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHV0QnlJ
ZHMuYXBwZW5kKGdlbik7CkBAIC0xNDQ4LDYgKzE1NzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDEsIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNl
bHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTQ2NSw3ICsx
NTkxLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAg
aWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC0xNDgxLDcgKzE2MDksOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlm
ICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTUwMCw5ICsxNjI5LDEzIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBh
IHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAg
Ly8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7
CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTog
Q29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBv
cGVyYXRpb24gaW5zdGVhZAorICAgICAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0
byBjYWxsIGl0LgorICAgICAgICBqaXQucmV0KCk7CisgICAgfQogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBA
IC0xNTIxLDggKzE2NTQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMCksIHJlZ1QxKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5k
KGdlbik7CkBAIC0xNTQ2LDYgKzE2NzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJlc3Vs
dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNl
CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTE1NjQsNyArMTY5
OCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bkluQnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFPcHRpb25zOjp1c2VT
aGFyZWRJQygpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjI5MCw4ICsyNDI2
LDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChP
cCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywg
cmVnVDIpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0
eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwg
SW52YWxpZEdQUlJlZywgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgp
KTsKIApAQCAtMjMwMSw3ICsyNDM3LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICAv
LyBKSVRQdXRCeUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFz
ZSdzIHBheWxvYWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0YWcuCiAgICAgZW1pdExvYWRUYWco
YmFzZSwgcmVnVDEpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1Bh
dGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygp
LCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBw
cm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKE9w
dGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5z
dHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86
Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlO
YW1lLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9u
KGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkp
OwogCkBAIC0yMzUzLDI5ICsyNDk1LDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5
VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAg
ICBzd2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dD
YXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2Vz
ID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBl
bWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7
CiAgICAgICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJy
YXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwog
ICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5
cGVGb3JKSVRBcnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQot
ICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRB
cnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJp
Z1VpbnQ2NEFycmF5IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJy
YXkgLyBCaWdVaW50NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAg
QVNTRVJUKGlzRmxvYXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MjQwMiw4ICsyNTQ0LDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBt
X2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAg
ICAgIkJhc2VsaW5lIHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQg
JXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdn
ZWRWYWx1ZSgpKTsKICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFs
SW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4o
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3Mp
KSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYg
KE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1f
c2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmlj
IDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxv
Y2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0
dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0
aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5
IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNw
cCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBp
biBhZHZhbmNlLgpAQCAtMjQ0Miw4ICsyNTkwLDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5B
CiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGggY2FjaGVkIHByb3BlcnR5
IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgcHJvcGVydHlOYW1lLnVp
ZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVy
bkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2Vu
LnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZv
LT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVy
aWMpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBieVZhbElu
Zm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2Vu
ZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
YnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJl
c3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1
cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVHZW5lcmljKSk7CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAg
LTI0ODAsMTUgKzI2MzMsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRo
Q2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICAgICAgIkJh
c2VsaW5lIHB1dF9ieV92YWwlcyB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBm
b3IgJXMsIHJldHVybiBwb2ludCAlcCIsIChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCkgPyAi
X2RpcmVjdCIgOiAiIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJp
bmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsK
ICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2Rl
KCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlv
bkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFk
ZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIGlmIChPcHRpb25zOjp1c2VT
aGFyZWRJQygpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91
dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9u
ID0gcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQog
Ly8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlv
biB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4
cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwg
UmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0
ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFs
RGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0
ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yNTA0LDcgKzI2NjIsMTYgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkp
OworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChieVZhbElu
Zm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBp
bmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1w
KEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihO
b3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgIH0gZWxz
ZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5n
LCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNl
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWREb3VibGUoQmFz
ZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwgZnBSZWdUMCk7CkBAIC0yNTEz
LDcgKzI2ODAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIHJldHVybiBzbG93Q2FzZXM7
CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFw
ZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhp
bmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3Rl
cklEIGJhc2UgPSByZWdUMDsKQEAgLTI1MzEsNyArMjY5OCwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hh
cGUpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgICAgICAgICBm
YXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwg
SklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRo
aXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
aW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFk
ZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNz
KHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2Fk
VmFsdWUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwgcmVzdWx0KTsK
QEAgLTI1NDAsNyArMjcxNiw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgcmV0dXJu
IHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2Fk
KGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yNTU5LDcgKzI3MzUsMTYgQEAg
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBh
ZGQzMihUcnVzdGVkSW1tMzIoLUFycmF5U3RvcmFnZVNoYXBlKSwgaW5kZXhpbmcsIHNjcmF0Y2gp
OwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisK
KyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZv
KSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihCZWxvd09yRXF1
YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJh
eVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOwor
ICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNj
cmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3Jh
Z2VTaGFwZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3JhZ2U6OnZlY3Rv
ckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjU3MSw3ICsyNzU2LDcgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlw
ZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0yNTk2LDcgKzI3ODEsMTcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAg
CiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
ZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWws
IGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkp
OworCisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKGJ5VmFs
SW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWws
IGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkp
OworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRU
eXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29y
cmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBl
ID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMy
KHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZElt
bTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAgbG9hZDMyKEFkZHJlc3Mo
YmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBsYXRlU2NyYXRjaDIp
OwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIGxhdGVTY3Jh
dGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmls
ZSk7CkBAIC0yNjQ3LDcgKzI4NDIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVk
QXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFy
cmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJy
YXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAm
bWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0yNjcyLDcgKzI4NjcsMTcgQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAgbG9hZDgo
QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNo
KTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRj
aCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCisgICAgaWYg
KE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAg
ICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRj
aCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAg
ICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdl
dCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGlu
ayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBl
ZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hh
YmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JU
eXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAg
aW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAg
ZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApp
bmRleCBjMjJjNzcwNDI4OWFiYjA4MmY5ZGRmMjBkOGMyZmY2NjVkZmQ1NmUyLi5hODk4NjA4OTM5
YmM4OGZiMTU0NDk1NmRhNzAzYTcwZGU0YjIxNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEzMSwxMSArMTMx
LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBi
YXNlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwKICAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93
Q2FzZSgpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJl
Z1QwLCByZXN1bHRSZWdzKTsKQEAgLTE2NiwxMSArMTY5LDEzIEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIo
KSk7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJl
c3VsdFJlZ3MsIHJlZ1Q0KTsKLQogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdl
bik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCByZXN1bHRSZWdzKTsKQEAgLTI1NywxMiArMjYy
LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJl
c3VsdFJlZ3MpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQog
ICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAg
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQor
ICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5k
KGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMzA1LDEwICszMTMsMTMgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFt
ZSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5VmFs
cy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTM5MywxMCArNDA0LDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJh
c2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5k
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVC
cmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBi
YXNlUmVncywgYnJhbmRSZWdzKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0g
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CiAKICAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0
IHRoZSBlbmQgb2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3Rl
cnMuCkBAIC00MzMsMTAgKzQ0NywxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xv
d0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCkBA
IC02NjAsMTAgKzY3NywxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CiAgICAgCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtNzAxLDEwICs3
MjEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0
UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtNzQ4LDEwICs3NzEsMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQor
ICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CiAKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwg
cmVzdWx0UmVncyk7CkBAIC03OTEsMTAgKzgxNywxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAK
ICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJl
c3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1Q0LCByZWdUMykpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNl
CisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChn
ZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtODM1LDEzICs4NjQsMTYgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCiAgICAgICAg
IHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRp
cmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3B1dEJ5
SWRzLmFwcGVuZChnZW4pOwogICAgIAogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJl
IHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KQEAgLTg4MiwxMCArOTE0
LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJl
Z1QxKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRTbG93Q2FzZSgpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRTdG9y
ZShkc3QsIHJlZ1QxLCByZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJS
b3V0aW5lLmgKaW5kZXggODgxNDY0MGU2YWNjZWFjMWI5YjA2OGE0MGM4OTQyODM0ODZjZGZhYi4u
NDlhNmQ1MDY3ZTIzZDI1NGFiNGYwYzM1Njk4MDc2ZGE5YTA3NTA4NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogY2xhc3MgVk07CiAKK2NsYXNzIEFj
Y2Vzc0Nhc2U7CisKIC8vIFRoaXMgaXMgYSBiYXNlLWNsYXNzIGZvciBKSVQgc3R1YiByb3V0aW5l
cywgYW5kIGFsc28gdGhlIGNsYXNzIHlvdSB3YW50CiAvLyB0byBpbnN0YW50aWF0ZSBkaXJlY3Rs
eSBpZiB5b3UgaGF2ZSBhIHJvdXRpbmUgdGhhdCBkb2VzIG5vdCBuZWVkIGFueQogLy8gaGVscCBm
cm9tIHRoZSBHQy4gSWYgaW4gZG91YnQsIHVzZSBvbmUgb2YgdGhlIG90aGVyIHN0dWIgcm91dGlu
ZXMuIEJ1dApAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBKSVRTdHViUm91dGluZSB7CiAgICAgfQog
ICAgIAogICAgIHZpcnR1YWwgfkpJVFN0dWJSb3V0aW5lKCk7Ci0gICAgdmlydHVhbCB2b2lkIGFi
b3V0VG9EaWUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJvdXRUb0RpZShWTSYpIHsgfQogICAg
IAogICAgIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpcyBjb3B5YWJsZSwgYnV0IGF0IHRoZSBj
b3N0IG9mIHJlZmVyZW5jZQogICAgIC8vIGNvdW50aW5nIGNodXJuLiBSZXR1cm5pbmcgYSByZWZl
cmVuY2UgaXMgYSBnb29kIHdheSBvZiByZWR1Y2luZwpAQCAtOTgsNiArMTAwLDggQEAgY2xhc3Mg
SklUU3R1YlJvdXRpbmUgewogICAgIC8vIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRXZWFrKFZNJik7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4qIGtleXMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3Bw
CmluZGV4IDFmNzYwNjg2MjczZGRhODFjYmI2ZDAxY2QyMWRkMDk4OWNjNmUyYjguLjQ0NzA1NWJm
ZThhYmVmYWE1NmZlNzhlODA2OGQyY2M2Njg5MzIzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5o
IgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkZ1bGxDb2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2OCw3IEBAIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlUmVmLCBWTSYgdm0s
IGNvbnN0IEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsCiAgICAgQ2FsbExp
bmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mIGNhc2VzLAog
ICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCi0gICAgOiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCisgICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29k
ZVJlZiwgdm0sIHsgfSkKICAgICAsIG1fdmFyaWFudHMoY2FzZXMuc2l6ZSgpKQogICAgICwgbV9m
YXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCAzNTkzY2NlODg2MDg4MDE4MzQ2YTgwOGU1Zjg2NDc4NzFhNDQxYjI5
Li43MDA1M2IyZWVjYTRhN2YzYWJlZTA0ZjA3MWE0YmQ5NGRiNjJkYmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTcxLDggKzcxLDEwIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1zdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxs
VGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQ
dHJUYWc+IGNhbGwpCitzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0
SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCkKIHsKKyAgICBp
ZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICByZXR1cm4gc3R1YkluZm8ubV9z
bG93T3BlcmF0aW9uLnJldGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKTsKICNpZiBFTkFCTEUoRlRM
X0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6RlRMSklUKSB7
CiAgICAgICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPiB0YXJnZXQgPSBNYWNyb0Fzc2Vt
Ymxlcjo6cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+KGNhbGwpOwpAQCAtMTA1LDYgKzEw
NywxNSBAQCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoQ2FsbChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+
KCkpOwogfQogCitzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQ
dHJUYWc+IGNhbGwsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rp
b24pCit7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBzdHVi
SW5mby5tX3Nsb3dPcGVyYXRpb24gPSBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRp
b25QdHJUYWc+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgY2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24pOworfQorCiBlbnVt
IElubGluZUNhY2hlQWN0aW9uIHsKICAgICBHaXZlVXBPbkNhY2hlLAogICAgIFJldHJ5Q2FjaGVM
YXRlciwKQEAgLTIwOSw3ICsyMjAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAg
IEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIGNvbnN0IGJv
b2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lIHx8IGtpbmQgPT0g
R2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwog
CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7
CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VDZWxsKSkgewpAQCAtMjE5LDcgKzIzMCw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgICAgICBib29sIGdl
bmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgoc3R1
YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9u
KGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRBcnJheUxlbmd0
aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRl
cjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjI3LDEwICsyMzgsMTEgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0aCwgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmluZyhiYXNlQ2VsbCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldCAm
JiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKSkgeworICAg
ICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0
CisgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdM
ZW5ndGgoc3R1YkluZm8pKSB7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29k
ZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rp
b24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjgyLDEy
ICsyOTQsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgICYmICFz
bG90LndhdGNocG9pbnRTZXQoKQogICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJ
bXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAgICAgICYmICFsb2FkVGFyZ2V0
RnJvbVByb3h5KSB7Ci0KICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUg
PSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1
Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0
ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0
QnlTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsK
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JS
ZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxm
KGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtNDI1LDcgKzQzNiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayoKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJh
c2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM5LDcgKzQ1MCw3IEBAIHZvaWQgcmVwYXRj
aEdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU1ZhbHVlIGJhCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZUdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVV
cE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2lu
ZCkpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKIH0K
IAogCkBAIC01MjksNyArNTQwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
QXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKICAgICAgICAg
ICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFz
c0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDAsNyArNTUxLDcgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2QKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZSwgSlNWYWx1
ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIGlmICh0cnlDYWNo
ZUFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2UsIGluZGV4LCBzdHVi
SW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5
VmFsR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMpOwog
fQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3Qg
UHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQpIC0+IGRlY2x0eXBlKCZvcGVy
YXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2LDcgKzY0Nyw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5ICYmIChwdXRLaW5kID09IFB1dEtpbmQ6
OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZh
dGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3QuYmFzZSgpID09IGJhc2VW
YWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LnR5
cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5nUHJvcGVydHkpIHsKQEAgLTY1OCw3ICs2
NjksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICBib29s
IGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5
UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFNlbGZQYXRjaCwgb2xkU3RydWN0
dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5
SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShsb2Nr
ZXIsIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsK
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtODAxLDcgKzgxMiw3IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dC5jb2RlKCkpOwogCi0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04MTUsNyAr
ODI2LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVQdXRCeUlEKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5k
KSk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xv
dCwgcHV0S2luZCkpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxl
dGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCkBAIC04NDYs
NyArODU3LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKG9sZFN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVy
OwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAg
ICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5pc0RlbGV0
ZUhpdCgpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0OwpAQCAtODc0LDcgKzg4NSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAg
ICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgewogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRl
bEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7Ci0gICAgICAgICAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ss
IHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04OTEsOSArOTAyLDkgQEAgdm9pZCBy
ZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIERlbGV0ZVAKICAgICBpZiAodHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
c3R1YkluZm8sIGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAgICAgIExP
R19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0lu
Zm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJv
cGVydHlOYW1lLnVpZCgpKSkpOwogICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1h
bCkKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7Cisg
ICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsK
KyAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOwogICAgIH0K
IH0KIApAQCAtOTM3LDcgKzk0OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUluQnlJRCgKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewogICAg
ICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQnlJZFNlbGZQYXRjaCwgc3RydWN0
dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFj
ZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8uaW5pdEluQnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
dHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC05ODQsNyArOTk1LDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogCiAgICAgICAgIExPR19JQygo
SUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwg
c2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKKyAgICAgICAgUmVmPEFjY2Vz
c0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgICAgICAgICB2bSwgY29k
ZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5NaXNz
LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kID8gc2xvdC5jYWNoZWRPZmZzZXQoKSA6IGludmFsaWRP
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIHByb3BlcnR5TmFt
ZSwgV1RGTW92ZShuZXdDYXNlKSk7CkBAIC05OTMsNyArMTAwNCw3IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNs
b3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTEwMDcsNyArMTAxOCw3IEBAIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqCiAgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlSW5C
eUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdh
c0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWQpOwog
fQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgK
QEAgLTEwMzIsNyArMTA0Myw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNo
ZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
Q2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1By
aXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOwogCiAgICAgICAg
IHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsK
IApAQCAtMTA0MCw3ICsxMDUxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJp
dmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwg
aXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMDU0LDcgKzEwNjUsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jawogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNo
ZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBi
cmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCkBAIC0xMDkxLDcgKzExMDIsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAgICAgICAgIGJvb2wg
aXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlNldFByaXZh
dGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBp
c0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ss
IGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vz
c0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNv
ZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAg
IHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsK
IApAQCAtMTA5OSw3ICsxMTEwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
U2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRl
QnJhbmRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBp
c0Jhc2VQcm9wZXJ0eSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTExMTMsNyArMTEyNCw3IEBAIHZvaWQgcmVwYXRjaFNldFByaXZhdGVC
cmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBp
ZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VP
YmplY3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hl
KQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7Cisg
ICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKQEAgLTExMzMsNyArMTE0
NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAg
ICAgIAogICAgICAgICBKU0NlbGwqIHZhbHVlID0gdmFsdWVWYWx1ZS5hc0NlbGwoKTsKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nl
c3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7CiAgICAgICAgIGlmIChwcm90b3R5
cGUpIHsKICAgICAgICAgICAgIGlmICghanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB2YWx1
ZSkpIHsKQEAgLTExNjgsOSArMTE3OSwxMyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hK
dW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKLSAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHJlc3VsdC5jb2RlKCk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVt
cCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAorICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApAQCAt
MTE4NSw3ICsxMjAwLDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKIHsKICAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKHRyeUNhY2hlSW5z
dGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFs
dWUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlv
bkluc3RhbmNlT2ZHZW5lcmljKTsKIH0KIAogc3RhdGljIHZvaWQgbGlua1Nsb3dQYXRoVG8oVk0m
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiBjb2RlUmVmKQpAQCAtMTIwMiw3ICsxMjE3LDcgQEAgc3RhdGljIHZv
aWQgbGlua1Nsb3dGb3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVu
ayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICBsaW5rU2xvd1BhdGhU
byh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRT
bG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7
CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3Jl
YXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkpOwogfQogCiBzdGF0aWMgSlNDZWxsKiB3ZWJBc3Nl
bWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQpAQCAtMTMyMCw3ICsxMzM1LDcgQEAgc3RhdGljIHZv
aWQgbGlua1ZpcnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJ
bmZvJiBjYWxsTGlua0kKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8p
OwogICAgIHJldmVydENhbGwodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBj
YWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmly
dHVhbFRodW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklU
U3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKICAgICBjYWxsTGlu
a0luZm8uc2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0ICsxNjU2LDI2IEBA
IHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsK
LSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7
Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEdldEJ5
S2luZDo6Tm9ybWFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpUcnk6CisgICAgY2FzZSBHZXRCeUtp
bmQ6OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlLaW5kOjpEaXJlY3Q6CisgICAgICAgIElubGlu
ZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICBjYXNl
IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1l
QnlJZDoKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogfQogCiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHVzaW5nIEZ1bmN0aW9uVHlwZSA9IGRlY2x0eXBl
KCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwotICAgIEZ1bmN0aW9uVHlw
ZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJl
YWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
bikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVu
Y3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdl
dChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbikuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGltaXplZEZ1bmN0aW9uOwog
ICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwg
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpCiAg
ICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXpl
OwpAQCAtMTY2NSw0NSArMTY5Miw0OSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6ZWRG
dW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9
CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIElubGluZUFjY2Vzczo6
cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9u
KTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOworICAgIElubGluZUFjY2Vzczo6cmVz
ZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKIHsKICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkK
LSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgICAg
IHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVsc2UKLSAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAg
IElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUo
Y29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVt
cChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCitzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJs
ZUp1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
IHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVt
cCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxvY2st
PnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gc3R1YkluZm8u
c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbik7CisgICAgfQogfQogCiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAg
cmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCi12b2lkIHJlc2V0
SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5zdGFu
Y2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQog
ewotICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5mbyk7CisgICAgcmVzZXRQYXRjaGFibGVK
dW1wKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJh
bmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsK
LSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9w
dGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNp
bmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0U2V0UHJp
dmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsK
LSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNs
b3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFu
ZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90
VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5oCmluZGV4IDMxMzc5ZGM0ZTVhOWRjMmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1
MWEuLjNhMTlmZDM2NTQ5ZDFhODQ4MDlmOTRkYWRhMmRmYmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0
QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5
SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9m
KFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggYTdiMmRiMzhiZmM2MjA3ZTUwZTQyNmJh
NjJhYTljMjA1ZWMyZWYzOC4uNDM0OTJmOWNlNzA1NzU0YmFlNGMzM2JiOWQyZTdjZDk0MDNmYTEy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTYwNyw5
ICs2MDcsOSBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoT3B0aW9uczo6YWRkcmVzc09mT3B0aW9uKGZvcmNlT1NSRXhpdFRvTExJbnRJRCkg
PT0gICZPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkpOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoT3B0aW9uczo6YWRkcmVzc09mT3B0aW9uRGVmYXVsdChmb3JjZU9TUkV4aXRUb0xM
SW50SUQpID09ICAmT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludERlZmF1bHQoKSk7CiAKLSNp
Zm5kZWYgTkRFQlVHCisvLyNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBDb25maWc6OmVuYWJs
ZVJlc3RyaWN0ZWRPcHRpb25zKCk7Ci0jZW5kaWYKKy8vI2VuZGlmCiAgICAgICAgICAgICAvLyBJ
bml0aWFsaXplIGVhY2ggb2YgdGhlIG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlczoK
ICNkZWZpbmUgSU5JVF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFi
aWxpdHlfLCBkZXNjcmlwdGlvbl8pIHsgXAogICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBk
ZWZhdWx0VmFsdWVfOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAppbmRleCA3MDc3YWUyOGVlMzY2YjA4ODFjZDk5ZTM5NTdiMzM3OTMxZWIyYmEyLi43Y2Q1
YTNiYzAyMjdkYjI3ZDMxZTRkYzdlMjBmYjQxM2Q4M2VhNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUzNSw2ICs1MzUsOCBAQCBKU19FWFBP
UlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIHVzZVNoYXJlZEFy
cmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VUb3BM
ZXZlbEF3YWl0LCB0cnVlLCBOb3JtYWwsICJhbGxvdyB0aGUgYXdhaXQga2V5d29yZCBhdCB0aGUg
dG9wIGxldmVsIG9mIGEgbW9kdWxlLiIpIFwKICAgICB2KEJvb2wsIHZlcmJvc2VFeGVjdXRhYmxl
UG9vbEFsbG9jYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVz
ZVNoYXJlZElDLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYXJl
ZElDSW5PcHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAKIAogZW51bSBP
cHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
NzgxMmJiMDA5Njg2NmVhNGYwNjIzMGNlNzNhZTYxZDYyZWRjZjVmYS4uNGYyNDM3ZjcwMjRmMDg2
MDUyNzdkZDM0ODRmNTc0MjBjOTExMWY5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZN
LmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3Iu
aCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCkBAIC01
NjcsOCArNTY4LDggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBX
VEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAjZW5kaWYgLy8gRU5BQkxFKEZU
TF9KSVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVG
b3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29k
ZUZvckNvbnN0cnVjdCk7Ci0KICAgICAgICAgaml0U3R1YnMtPnByZWluaXRpYWxpemVDVElUaHVu
a3MoKnRoaXMpOworICAgICAgICBtX3NoYXJlZEpJVFN0dWJzID0gbWFrZVVuaXF1ZTxTaGFyZWRK
SVRTdHViU2V0PigpOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCkBAIC0xNzE1LDQg
KzE3MTYsNiBAQCB2b2lkIFZNOjpyZW1vdmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBtX2xvb3BIaW50RXhlY3V0aW9uQ291
bnRzLnJlbW92ZShpdGVyKTsKIH0KIAordWludDY0X3QgZ19udW1iZXJPZk9TUkV4aXRzOworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGExYWIy
MjMyMTY5OGU1NzAwMjk5NDczNTE0YmZhMDQxZjg4ZGNjNTQuLmI4MjI3ZWUwYTE5MDJjN2Y4OWE2
YWE1Zjk1OWYyMjg0Mjk0Mjg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
MTc0LDYgKzE3NCw3IEBAIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxp
bmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJ
VFN0dWJTZXQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7
CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwpAQCAtODQ2LDYgKzg0Nyw4IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPFZNPiB7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZU
TDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVk
SklUU3R1YlNldD4gbV9zaGFyZWRKSVRTdHViczsKKwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdl
dEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0
aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKQEAgLTEz
MDgsNCArMTMxMSw2IEBAIGV4dGVybiAiQyIgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk1JbXBsKFZN
Kik7CiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSYpOwogdm9p
ZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJik7CiAKK2V4dGVybiB1aW50NjRfdCBnX251bWJlck9mT1NS
RXhpdHM7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCmluZGV4IDZiZjM2MmYyMGY1NmYxZDVlNjE4ZWQ2NmExYjY3NWNmMDhk
YjQxNzEuLmQ0YmE5OWIwNDUxNDJlYjI2MmUwNzcyMzE0ZjNmZmE5ZjU1NDRhN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTI3LDkgKzI3LDExIEBA
CiAjaW5jbHVkZSAiSlNEb2xsYXJWTS5oIgogCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJBc3NlbWJsZXJDb21tb24uaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgi
CisjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgpAQCAtNDksOSArNTEsMTEgQEAKICNpbmNsdWRlICJTbmlwcGV0UGFyYW1zLmgiCiAj
aW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCisj
aW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgogI2luY2x1ZGUgIlZNVHJh
cHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2FzbUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIldh
c21Xb3JrbGlzdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdXZlcnNpb24uaD4KICNpbmNsdWRlIDx3
dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9DUFVUaW1lLmg+CkBAIC0xOTkxLDYgKzE5OTUs
MjUgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Vc2VKSVQpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc0dpZ2FjYWdlRW5hYmxl
ZCk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblRvVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
SXNQcml2YXRlU3ltYm9sKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uRHVtcFdvcmtsaXN0U3RhdGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25QcmVjaXNlVGltZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihm
dW5jdGlvbk51bWJlck9mT1NSRXhpdHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25OdW1iZXJPZkNhY2hlRmx1c2hlcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdpdGhWTUhhbHRzKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBsYWNlV2l0aEp1bXBz
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBs
YWNlV2l0aExvYWRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
TnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbnMpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlNldFBvaW50ZXJzKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBhdGNoSW50MzJzKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZWxpbmtK
dW1wcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9m
UmVsaW5rQ2FsbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25O
dW1iZXJPZlJlcGF0Y2hDb21wYWN0cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbk51bWJlck9mTmV3Q29kZUZpbmFsaXphdGlvbnMpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25zKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZTaGFyZWRT
dHViQ3JlYXRpb24pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25O
dW1iZXJPZlNoYXJlZFN0dWJDcmVhdGlvbkluQmFzZWxpbmUpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJIaXQpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlNoYXJlZFN0dWJIaXRJbkJh
c2VsaW5lKTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRG9sbGFyVk06OnNfaW5mbyA9IHsgIkRvbGxh
clZNIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU0RvbGxhclZNKSB9OwogCkBAIC0zNTkxLDYgKzM2MTQsMTQzIEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbklzUHJpdmF0ZVN5bWJvbCwgKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKiBjCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNTeW1ib2wo
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSktPnVpZCgpLmlzUHJpdmF0ZSgpKSk7CiB9CiAKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkR1bXBXb3JrbGlzdFN0YXRlLCAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOworCisgICAgZGF0YUxvZygiREZHIFdvcmtsaXN0OiAiLCBwb2ludGVyRHVtcChERkc6OmV4
aXN0aW5nR2xvYmFsREZHV29ya2xpc3RPck51bGwoKSksICJcbiIpOworICAgIGRhdGFMb2coIkZU
TCBXb3JrbGlzdDogIiwgcG9pbnRlckR1bXAoREZHOjpleGlzdGluZ0dsb2JhbEZUTFdvcmtsaXN0
T3JOdWxsKCkpLCAiXG4iKTsKKyAgICBkYXRhTG9nKCJXYXNtIFdvcmtsaXN0OiAiLCBwb2ludGVy
RHVtcChXYXNtOjpleGlzdGluZ1dvcmtsaXN0T3JOdWxsKCkpLCAiXG4iKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvblByZWNpc2VUaW1lLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51
bWJlck9mT1NSRXhpdHMsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERv
bGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZPU1JFeGl0cykpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZkNhY2hlRmx1c2hlcywgKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZkNhY2hlRmx1c2hl
cykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGxh
Y2VXaXRoVk1IYWx0cywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9s
bGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZ19udW1iZXJPZlJlcGxhY2VXaXRoVk1IYWx0cykpOworfQorCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMsIChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNz
ZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVy
T2ZSZXBsYWNlV2l0aEp1bXBzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbk51bWJlck9mUmVwbGFjZVdpdGhMb2FkcywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
KikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZlJlcGxhY2VXaXRoTG9hZHMpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZXBsYWNlV2l0
aEFkZHJlc3NDb21wdXRhdGlvbnMsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQorewor
ICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZSZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlv
bnMpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZTZXRQ
b2ludGVycywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoZ19udW1iZXJPZlNldFBvaW50ZXJzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvbk51bWJlck9mUmVwYXRjaEludDMycywgKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZlJlcGF0Y2hJbnQzMnMp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVyT2ZSZWxpbmtK
dW1wcywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3Nl
cnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZ19udW1iZXJPZlJlbGlua0p1bXBzKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbk51bWJlck9mUmVsaW5rQ2FsbHMsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdfbnVtYmVyT2ZSZWxpbmtDYWxscykpOworfQor
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1iZXJPZlJlcGF0Y2hDb21wYWN0
cywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRT
Y29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
Z19udW1iZXJPZlJlcGF0Y2hDb21wYWN0cykpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25OdW1iZXJPZk5ld0NvZGVGaW5hbGl6YXRpb25zLCAoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mTmV3Q29kZUZp
bmFsaXphdGlvbnMpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVt
YmVyT2ZJblBsYWNlRmluYWxpemF0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikp
Cit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZkluUGxhY2VGaW5hbGl6YXRpb25zKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mU2hhcmVkU3R1
YkNyZWF0aW9uLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJW
TUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihnX251bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9uKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihmdW5jdGlvbk51bWJlck9mU2hhcmVkU3R1YkhpdCwgKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ19udW1iZXJPZlNoYXJl
ZFN0dWJIaXQpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTnVtYmVy
T2ZTaGFyZWRTdHViQ3JlYXRpb25JbkJhc2VsaW5lLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9u
SW5CYXNlbGluZSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25OdW1i
ZXJPZlNoYXJlZFN0dWJIaXRJbkJhc2VsaW5lLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihnX251bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxp
bmUpKTsKK30KKwogY29uc3RleHByIHVuc2lnbmVkIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0
ZXMgPSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZTsKIAogdm9pZCBKU0RvbGxhclZN
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCkBAIC0zNzQ4LDYgKzM5MDgsMjYgQEAgdm9pZCBKU0Rv
bGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBhZGRGdW5jdGlvbih2bSwgImlz
UHJpdmF0ZVN5bWJvbCIsIGZ1bmN0aW9uSXNQcml2YXRlU3ltYm9sLCAxKTsKIAorICAgIGFkZEZ1
bmN0aW9uKHZtLCAiZHVtcFdvcmtsaXN0U3RhdGUiLCBmdW5jdGlvbkR1bXBXb3JrbGlzdFN0YXRl
LCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgInByZWNpc2VUaW1lIiwgZnVuY3Rpb25QcmVjaXNl
VGltZSwgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZk9TUkV4aXRzIiwgZnVuY3Rp
b25OdW1iZXJPZk9TUkV4aXRzLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mQ2Fj
aGVGbHVzaGVzIiwgZnVuY3Rpb25OdW1iZXJPZkNhY2hlRmx1c2hlcywgMCk7CisgICAgYWRkRnVu
Y3Rpb24odm0sICJudW1iZXJPZlJlcGxhY2VXaXRoVk1IYWx0cyIsIGZ1bmN0aW9uTnVtYmVyT2ZS
ZXBsYWNlV2l0aFZNSGFsdHMsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZSZXBs
YWNlV2l0aEp1bXBzIiwgZnVuY3Rpb25OdW1iZXJPZlJlcGxhY2VXaXRoSnVtcHMsIDApOworICAg
IGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZSZXBsYWNlV2l0aExvYWRzIiwgZnVuY3Rpb25OdW1i
ZXJPZlJlcGxhY2VXaXRoTG9hZHMsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZS
ZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbnMiLCBmdW5jdGlvbk51bWJlck9mUmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb25zLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9m
U2V0UG9pbnRlcnMiLCBmdW5jdGlvbk51bWJlck9mU2V0UG9pbnRlcnMsIDApOworICAgIGFkZEZ1
bmN0aW9uKHZtLCAibnVtYmVyT2ZSZXBhdGNoSW50MzJzIiwgZnVuY3Rpb25OdW1iZXJPZlJlcGF0
Y2hJbnQzMnMsIDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZSZWxpbmtKdW1wcyIs
IGZ1bmN0aW9uTnVtYmVyT2ZSZWxpbmtKdW1wcywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJu
dW1iZXJPZlJlbGlua0NhbGxzIiwgZnVuY3Rpb25OdW1iZXJPZlJlbGlua0NhbGxzLCAwKTsKKyAg
ICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mUmVwYXRjaENvbXBhY3RzIiwgZnVuY3Rpb25OdW1i
ZXJPZlJlcGF0Y2hDb21wYWN0cywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJudW1iZXJPZk5l
d0NvZGVGaW5hbGl6YXRpb25zIiwgZnVuY3Rpb25OdW1iZXJPZk5ld0NvZGVGaW5hbGl6YXRpb25z
LCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMi
LCBmdW5jdGlvbk51bWJlck9mSW5QbGFjZUZpbmFsaXphdGlvbnMsIDApOworICAgIGFkZEZ1bmN0
aW9uKHZtLCAibnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb24iLCBmdW5jdGlvbk51bWJlck9mU2hh
cmVkU3R1YkNyZWF0aW9uLCAwKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mU2hhcmVk
U3R1YkhpdCIsIGZ1bmN0aW9uTnVtYmVyT2ZTaGFyZWRTdHViSGl0LCAwKTsKKyAgICBhZGRGdW5j
dGlvbih2bSwgIm51bWJlck9mU2hhcmVkU3R1YkNyZWF0aW9uSW5CYXNlbGluZSIsIGZ1bmN0aW9u
TnVtYmVyT2ZTaGFyZWRTdHViQ3JlYXRpb25JbkJhc2VsaW5lLCAwKTsKKyAgICBhZGRGdW5jdGlv
bih2bSwgIm51bWJlck9mU2hhcmVkU3R1YkhpdEluQmFzZWxpbmUiLCBmdW5jdGlvbk51bWJlck9m
U2hhcmVkU3R1YkhpdEluQmFzZWxpbmUsIDApOworCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZl
Y3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmpl
Y3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRleCA2
N2FiYTExYWYxOTczYTM5NTFmNWMzM2M1MDZkMjA5ZjdhNmI1ZmFhLi4wNDQ2YzM1MmU5ZTY1Y2Qx
NDk3MjczMGE4ZGU0ZWM4ZTM2NzFlZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRp
b25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTY3Myw3ICs2NzMsNyBA
QCBjbGFzcyBPcHRpb25hbDxUJj4KICAgfQogCiAgIGNvbnN0ZXhwciBUJiB2YWx1ZSgpIGNvbnN0
IHsKLSAgICBSRUxFQVNFX0FTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChyZWYoKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQocmVmKTsKICAgICByZXR1
cm4gKnJlZjsKICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429955</attachid>
            <date>2021-05-27 16:43:09 -0700</date>
            <delta_ts>2021-05-27 17:20:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527164308.patch</filename>
            <type>text/plain</type>
            <size>417533</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5jODI1NWZlMTFmNjExOWJh
MmQ2NDg0MDE2M2RlOWUyODM3YjgzZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNTIgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNl
OjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9t
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjbG9uZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpTaGFy
ZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1
YlNldDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleTo6
S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjplcXVh
bCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9y
OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5z
bGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRy
YW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVy
VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjphZGQp
OgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpyZW1vdmUpOgorICAgICAgICAoSlND
OjpTaGFyZWRKSVRTdHViU2V0OjpmaW5kKToKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
aDoKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlc2V0SklURGF0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlU2hh
cmVkSUMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpnZXRTY3JhdGNoUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXApOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFj
Y2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xv
bmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldDo6aGFzaCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omlu
c3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpz
dWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKToK
KyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZSk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGxXaXRob3V0RXhjZXB0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJv
dXRUb0RpZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFwcGVuZENhbGwpOgor
ICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6
OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2gpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250
ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFy
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtl
Q2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRo
Q2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRW
aXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0NvbGxlY3Rpb24pOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hFeHRyYVJlZ0FyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaE5vbkFyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRHUFJFeHRyYUFyZyk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkU3RhY2tBcmcpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFBva2UpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBva2VPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjptYXJz
aGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50
c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNFbnRyeUltcGwpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbCk6CisgICAgICAgICogaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSk6Cisg
ICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJh
dG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGpp
dC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZVNoYXJlZElDKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpK
SVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUQnlJ
ZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpK
SVRHZXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpK
SVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
OjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6
OkpJVEdldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChK
U0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
cml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0
ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFy
cmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVs
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAo
SlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9h
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFib3V0
VG9EaWUpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6a2V5cyBjb25zdCk6CisgICAg
ICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRQdXRJQ0NhbGxU
YXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2FsbCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlEKToKKyAg
ICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQ
cml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2Yp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OmxpbmtT
bG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAoSlNDOjpy
ZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6
cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6CisgICAgICAg
IChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0
U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3Ry
dWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5k
ZXggZTUxNzU3ZTliOGZjNjQyODc4MjdjMTZkMDJkMjFjYzIxOGZiMTMyNi4uODNjYjM2ZDA2Zjgz
MTJjODk1ZjZhNDliMjU2YmJlYzM0NjI3M2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTIzNCw4ICsyMzQsOCBAQCBjbGFzcyBMaW5rQnVm
ZmVyIHsKICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIENvZGVMb2NhdGlvbkNhbGw8dGFn
PiBsb2NhdGlvbk9mKENhbGwgY2FsbCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYWxsLmlzRmxh
Z1NldChDYWxsOjpMaW5rYWJsZSkpOwotICAgICAgICBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENh
bGw6Ok5lYXIpKTsKKyAgICAgICAgLy8gQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6Okxpbmth
YmxlKSk7CisgICAgICAgIC8vIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOwog
ICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbDx0YWc+KGdldExpbmtlckFkZHJlc3M8dGFn
PihhcHBseU9mZnNldChjYWxsLm1fbGFiZWwpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVmZjc4MjI2MmU3MTg1Yjg3
NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNTc5ZDg1OGRkNzcyYzY1N2IyYmI0YzVhNzRhYmExMDNm
ZWRmYjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3
IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIs
IG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
OwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBu
ZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmll
ciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAor
UmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAgICBW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3
U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQs
IG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2Uo
KQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1
Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHN3
aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09iamVj
dCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRpdGlv
blNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiArMTA2Myw4IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9j
YXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAg
aWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEzMTcs
NiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0
eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BS
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBA
IC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQg
QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgVk0mIHZtID0gc3Rh
dGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBNb2R1
bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0
MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgorICAg
IGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJp
YzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2Ug
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nl
c3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7
CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7CisgICAgICAgICAgICBpZiAo
IWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gc3Ry
dWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3VyclN0cnVjdHVy
ZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgIGN1cnJTdHJ1
Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNo
YWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpX
YXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKKyAgICAgICAgICAgIHN0
YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5vdywgd2Ugb25seSBhbGxv
dyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVp
dmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlk
aXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgLy8g
VGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0
IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgICAgIC8vIEFj
Y2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1ZS4KKworICAgICAgICAg
ICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1ldDogIiwgY29uZGl0aW9u
LCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0IGhhcyBhIHdlYWsgcmVm
ZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVyZS4KKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlNDZWxsPih2
bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAtMTQxNyw3ICsxNTAyLDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOwog
CiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVX
YXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb25k
aXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJsb2NrLCBj
b25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTU4Miw3
ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2Fy
eSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0
ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgwMiw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5k
aWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJ
bmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9
PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE4MTQsOCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRl
Lm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChj
b2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0
ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBz
cGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsK
KyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFs
dWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyAr
MTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVy
QnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUu
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOwor
CisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJz
Ojpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsyMDMz
LDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFz
ZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1
ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYg
KzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygp
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0yMTkxLDYgKzIyOTcsMTMg
QEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5VHlwZShBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBKSVRTdHVi
Um91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tD
b25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nl
c3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3Qg
Y2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhl
bSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0Fj
Y2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1f
dHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhz
Lm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5
ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5t
X3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobGhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSAhPSByaHMubV9jb25k
aXRpb25TZXQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxpdGVy
ID0gbGhzLm1fY29uZGl0aW9uU2V0LmJlZ2luKCk7CisgICAgYXV0byByaXRlciA9IHJocy5tX2Nv
bmRpdGlvblNldC5iZWdpbigpOworICAgIGZvciAoOyBsaXRlciAhPSBsaHMubV9jb25kaXRpb25T
ZXQuZW5kKCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAgICAgaWYgKCEoKmxpdGVyID09ICpy
aXRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChs
aHMubV90eXBlKSB7CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CisgICAgY2FzZSBSZXBsYWNlOgorICAgIGNhc2UgTWlzczoKKyAgICBjYXNlIEdl
dEdldHRlcjoKKyAgICBjYXNlIEluSGl0OgorICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQXJy
YXlMZW5ndGg6CisgICAgY2FzZSBTdHJpbmdMZW5ndGg6CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBDaGVj
a1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICBjYXNlIEluZGV4
ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0
QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAg
Y2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVy
OiB7CisgICAgICAgIC8vIEdldHRlciBhbmQgU2V0dGVyIHJlbGllcyBvbiBDb2RlQmxvY2ssIHdo
aWNoIG1ha2VzIHNoYXJpbmcgaW1wb3NzaWJsZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3Nv
ckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNj
ZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCk7CisgICAgICAgIGlmIChsaHNkLm1fZG9tQXR0cmlidXRlIHx8IHJoc2QubV9k
b21BdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBs
aHNkLm1fY3VzdG9tU2xvdEJhc2UgPT0gcmhzZC5tX2N1c3RvbVNsb3RCYXNlCisgICAgICAgICAg
ICAmJiBsaHNkLm1fY3VzdG9tQWNjZXNzb3IgPT0gcmhzZC5tX2N1c3RvbUFjY2Vzc29yOworICAg
IH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBs
aHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9
IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhz
ZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAgICB9
CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9
IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNk
ID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBs
aHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1fbW9k
dWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSByaHNk
Lm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAgIGNh
c2UgSW5zdGFuY2VPZk1pc3M6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAgICAg
ICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBh
dXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1
cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdk
NjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uOWMyZmIzZWE2YWQyOGIxNzQ0YzA5Nzc4
OGRjNjRiMzU1YjRkMGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIsNyBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8v
IFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBv
bHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBh
bGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVm
dWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNl
IHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNz
Q2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVS
KEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpA
QCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVu
dHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0
dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9
IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJy
YW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRl
QnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8
QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQpAQCAtMjUzLDExICsyNTYsMzkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9
CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRpdGlvblNl
dC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5LCBtX3N0
cnVjdHVyZS5nZXQoKSwgbV9vZmZzZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFs
SW5TaGFyaW5nKGNvbnN0IEFjY2Vzc0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsK
LSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2Uo
Y29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vz
c0Nhc2UmJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQor
ICAgICAgICAsIG1fc3RhdGUoV1RGTW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3Zp
YVByb3h5KFdURk1vdmUob3RoZXIubV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RG
TW92ZShvdGhlci5tX29mZnNldCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhl
ci5tX3N0cnVjdHVyZSkpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5t
X2NvbmRpdGlvblNldCkpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3Zl
KG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNv
bnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisg
ICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3Ro
ZXIubV92aWFQcm94eSkKKyAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlv
blNldChvdGhlci5tX2NvbmRpdGlvblNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0No
YWluKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVy
KG90aGVyLm1faWRlbnRpZmllcikKKyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9y
PShjb25zdCBBY2Nlc3NDYXNlJikgPSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBt
X3N0YXRlID0gUHJpbW9yZGlhbDsgfQpAQCAtMjc1LDcgKzMwNiw3IEBAIGNsYXNzIEFjY2Vzc0Nh
c2UgewogCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNj
ZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFj
dGlvbiB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBp
biB3aGljaCB0aGUgY2FzZQogICAgIC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdh
dGNocG9pbnQgc2V0cyB0aGF0IHdpbGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0
NiwxNjggQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCitjbGFzcyBTaGFyZWFibGVKSVRTdHViUm91dGluZSBmaW5hbCA6IHB1
YmxpYyBKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgU2hhcmVhYmxlSklUU3R1YlJvdXRp
bmUoVk0mIHZtLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKKyAgICAg
ICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwg
bV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9r
ZXlzOyB9CisKKyAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1f
a2V5czsKK307CisKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKFNoYXJlZEpJVFN0dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJT
ZXQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBrZXlzKQorICAgIHsKKyAgICAgICAgSGFzaGVyIGhh
c2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAgICAgICAgV1RGOjph
ZGQoaGFzaGVyLCBrZXktPmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwor
ICAgIH0KKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7CisgICAgICAg
ICAgICBLZXkoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAg
ICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQ
UihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAg
ICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0
dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJz
KHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChi
aXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRTdHViUm91
dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAg
ICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAg
ICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAg
ICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAg
ICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCAhPSBiLm1fd3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
SklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJl
ZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAg
IEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAg
ICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVkLT5rZXlz
KCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBh
LCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJjaGVyIHsK
KyAgICAgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5cyk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6
OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byYgYXZlYyA9ICphLm1fd3JhcHBlZC0+a2V5cygpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBhdXRvJiBidmVjID0gYi5tX2tleXM7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdmVjLnNpemUoKSA9PSBidmVjLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYnZlYy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFy
aW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgIEdQ
UlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgR1BS
UmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsK
KyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYgbV9rZXlzOwor
ICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5LCBKSVRT
dHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleS5tX3dy
YXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChIYXNoOjpL
ZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0KKworICAg
IHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAgICAgaWYg
KGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3ZlKGl0ZXIp
OworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVyJiBzZWFy
Y2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hhcmVkSklU
U3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKGVu
dHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1fd3JhcHBl
ZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4
NC4uNDJkMDc5NGRkNjI0MGM2MzgwYzliYTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBz
dHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihC
eVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdkZjA1ZTEw
YmM5MGI2NTZmMzUwM2M4NWMwNTRjNWQzYWZhN2M2YjkuLjE4OWE1ODQ3NzBmMDJjYjM4N2Y3NWQ5
YTQ0MzZmY2I1MDg0Y2U0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC04NjEsNyArODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkK
ICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgp
KSB7CiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+
bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAg
ICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5m
by0+ZGVyZWYoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAg
ICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KSB7Ci0gICAgICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1
YkluZm8tPmFib3V0VG9EaWUoKm1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IDc3MzI5ZjNhNDFlMDRhMWM3MmRiNjJjMWQ1OGY0ZjVjMzYzOTcyNTEuLjgxYWI5N2Zi
ZDgxOGIxZmI3YzFmYmZlZDQwMjQ5ZmM5MzcxNjNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMCw2ICs0MjAsMTEgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09
IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKworICAgIGJvb2wgdXNlU2hhcmVkSUMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEpJVENvZGU6OnVzZVNoYXJlZElDKGppdFR5cGUo
KSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5
N2ZmMWNmZjdjZjM4MzYuLmNlNWVlZDFlNWY1Zjg4ZGEwYTBkZjkyZDA5MzE2ZmE5YjljNjhjNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1heUJlTnVsbCh2bSwgb3duZXIsIGN1c3Rv
bVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFs
U2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLCBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9
IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0
ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51
bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RC
YXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVl
U2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2N1c3Rv
bUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJU
YWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05
MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nh
c2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAgbV9kb21BdHRyaWJ1dGUg
PSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTEyNSw2ICsxMjUsNyBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
cwogewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKnN0YXRlLmppdDsKICAgICBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1YkluZm87CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3Rh
dGUudmFsdWVSZWdzOwogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGUuYmFzZUdQUjsKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRlLnNjcmF0Y2hHUFI7CkBAIC0xMzksNiArMTQwLDggQEAg
dm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxs
b2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJ
bmZvLmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgaWYg
KHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc2Ny
YXRjaEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNlR1BSID0gSW52YWxpZEdQUlJlZzsKQEAg
LTIyMyw2ICsyMjYsMTAgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklU
R2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBmb3IgKEZQUlJl
ZyByZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQo
cmVnKTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6
cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2Fs
bC5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogCiAgICAgQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3Jh
dGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0LT5nZW5lcmF0b3IoKS0+cnVu
KGppdCwgcGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDg3M2U3YzM1ODg4ZWIzYjEyMWRiZmQ3
YWYwNmUyY2FiZWI3ZDMzYjIuLjEwMGZiMjdlZTg1NjYxNmZiNDE4NDI1ZWMyYzcyMzQ5NGE0YWVm
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuaApAQCAtNTMsMTcgKzUzLDE3IEBAIGNsYXNzIEdldHRlclNldHRl
ckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAKICAgICB2
b2lkIGVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgRE9NSklU
OjpHZXR0ZXJTZXR0ZXIqLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAgICAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50
U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3Vz
dG9tR2V0dGVyLAogICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIE9wdGlvbmFsPERP
TUF0dHJpYnV0ZUFubm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94eSA9IGZhbHNl
LAogICAgICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0dGVy
ID0gbnVsbHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7CiAKICAgICB2
b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAg
UmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbmxpbmVBY2Nlc3MuY3BwCmluZGV4IDgzMmNkMGI4ZmFmZDk4ZDBiMjg1OTNjYmJiMDU3YmFl
OTZmYjMyMWEuLjEyZDFiNWEwZWM3ZGU1ZjY3N2FkMzZkYTEyYmFjZTQwNjI1YTBmYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0y
MTYsNiArMjE2LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNjcmF0Y2hSZWdp
c3RlcihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVRhZ0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udmFsdWVUYWdH
UFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAg
ICAgR1BSUmVnIHNjcmF0Y2ggPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAg
aWYgKGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gSW52YWxp
ZEdQUlJlZzsKQEAgLTM3OSw4ICszODEsNDUgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRl
U2VsZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKgogICAg
IHJldHVybiBsaW5rZWRDb2RlSW5saW5lOwogfQogCi12b2lkIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiB0YXJnZXQpCiB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMo
KSkgeworICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgYXV0byBqdW1wID0gaml0
Lmp1bXAoKTsKKworICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ug
bm9ib2R5IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KKyAgICBi
b29sIG5lZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNlOworICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcihqaXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNp
emUoKSwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVz
dFN1Y2NlZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQobGlu
a0J1ZmZlci5pc1ZhbGlkKCkpOworICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQpOwor
CisgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2Vzczog
bGlua2luZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdl
dCkKK3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChz
dHViSW5mby5tX2NvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSA9PSBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkgeworICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZzdHViSW5mbyksIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOworICAgICAgICAgICAg
aml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAgIGJv
b2wgbGlua2VkQ29kZUlubGluZSA9IGxpbmtDb2RlSW5saW5lKCJzdHViIGNhbGxzIiwgaml0LCBz
dHViSW5mbywgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtlZENvZGVJbmxpbmUpOworICAg
ICAgICB9CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKICAgICBhdXRvIGp1bXAgPSBq
aXQuanVtcCgpOwpAQCAtMzk0LDYgKzQzMywyNiBAQCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYgog
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxp
bmtpbmcgY29uc3RhbnQganVtcCIpOwogfQogCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHVi
QXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQor
eworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwor
CisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hv
dWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNC
cmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwg
c3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwg
bmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlz
VmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAi
SW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVB
Y2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgcmV3aXJl
U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCBmNDliMzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIy
Yjg0NzFkMTJkLi44ZDY2MDFjOGI5OGQ4MTI1ZWM2YjEwMGEwNzljNTFlMTEyYTM4M2NmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQs
NyArMTA0LDEwIEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNo
ZWFibGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0
aWMgYm9vbCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAg
IHN0YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0Fy
cmF5Kik7Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5m
byYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGlj
IHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNp
bmdJbmxpbmVDb2RlKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3RhdGlj
IHZvaWQgcmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHVi
SW5mbyYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3Ro
KFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIxZjI0NTNiYWM3YWZh
ZTc3MjQxY2IwNGEyNWQyMGZkZDk5M2JjMzQuLjk5NDkwOGQ2OGI2MmJiZTA2ZTA5YWEwYjM3ZTc3
YzExMGM2NjkyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYgY29uZGl0aW9uU2V0LCBKU09iamVjdCogcHJvdG90eXBlKQogewotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNj
ZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOwogfQogCiB2b2lk
IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVBy
aW50ZXImIGNvbW1hKSBjb25zdApAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc3RhbmNlT2ZBY2Nl
c3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1hKSBj
b25zdAogICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSA9ICIsIEpTVmFsdWUocHJvdG90
eXBlKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nl
c3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nh
c2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdGFuY2VPZkFjY2Vz
c0Nhc2U+IHJlc3VsdChuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAg
ICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaApp
bmRleCA2OWUyYjMxYWE5NGE1OWQzMGRmYjRjYWYyMjQ0OTlkNjAyNzc4NDdjLi5hZDcxZTY5NDJm
NDQ5MmZhOGFiZGVhYWM3ZWEwZmM0NmI3MDc5ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaApAQCAtMzQsMTUgKzM0
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UgZmluYWwg
OiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEFjY2Vzc0Nh
c2U7CisgICAgZnJpZW5kIGNsYXNzIEFjY2Vzc0Nhc2U7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNl
PiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLAogICAgICAgICBKU09iamVjdCogcHJv
dG90eXBlKTsKICAgICAKICAgICBKU09iamVjdCogcHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFt
JiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3QgZmluYWw7CiAgICAgCiAgICAgfkluc3RhbmNlT2ZBY2Nlc3NDYXNlKCkgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCA2MzAxZGMyMzM2OTMzZDY3NmMzYmU5ZTkwYzYw
MTg5YTEzMTczODE3Li4zNGIxYTgwMjc4ODk1ZjcxYWJmZTY4Mjk2OWNkZTQzMGYzMmU3ZDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0zOSwxOCArMzksMTggQEAgSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2gKICAgICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGludHJp
bnNpY0Z1bmN0aW9uKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNl
dCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNH
ZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQs
IEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlk
ZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0
aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RGTW92
ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6fkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVm
PEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5l
dyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1
bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
LmgKaW5kZXggNjI4NzAwNDE1ODczMWQ1YjhmZWI1MDYzNTNkZTU1OWI2NDQ3NjQ0Ni4uNDdhZjFh
MmJmMWRkNmNiOTEzNjI2MzIxMDE5M2I0N2EzZmYyYWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5o
CkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UgZmluYWwg
OiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJvb2wgY2FuRW1pdEludHJpbnNpY0dl
dHRlcihKU0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBlbWl0SW50cmluc2ljR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2Vs
bCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0
aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+
IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjk1NmRkMGNkNWQwZWFlNjFh
MDhlM2RjNzY1YmY3NDM0NDFjNWY4ZC4uYzI5YzFkZGZhZjQ4MTU1NjYxNTE3MDg1YTg4ZTE5YTA3
M2FiZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAtNDUsMTggKzQ1LDE4IEBAIE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIG93
bmVyLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmly
b25tZW50LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVO
YW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50LCBT
Y29wZU9mZnNldCBzY29wZU9mZnNldCkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRp
ZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVPZmZz
ZXQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
KHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZp
cm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKIH0KIAogTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6
fk1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFj
Y2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9w
dFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQt
PnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgK
aW5kZXggOTJhMGI4YTM1YjU0NzE2MjQxMzBkNjUwNjUzZDA1YmY1ZDc5MzM3Ny4uZDQzOTUwYmYw
NjMxMzdjZjc3M2I4NGM0YWFlNDk0NGIwNGM5YTNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCkBA
IC00NCw5ICs0NCw5IEBAIGNsYXNzIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UgZmluYWwgOiBw
dWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJv
bm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOyB9CiAgICAg
U2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zmc2V0OyB9
CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsKKyAgICBzdGF0aWMgUmVmPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zm
c2V0KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZp
bmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBlbWl0KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFsbFRocm91Z2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDVkOTA1NDU5NzRmMWVk
MzdmMjhjYWYzYTJhZWIzNDZhNDkxMGEyODMuLjZkYWNjYmY4NzFjMDg3YWFiYTk4NjM1YzUwMWE3
OGI3ZjRmZDEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
ZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODks
NiArOTAsMTQgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBtX2RhdGEtPm1fdmVjdG9yLmVuZCgp
OwogICAgIH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgSGFz
aGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBjb25kaXRpb24gOiAqdGhpcykKKyAgICAg
ICAgICAgIGFkZChoYXNoZXIsIGNvbmRpdGlvbi5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFz
aGVyLmhhc2goKTsKKyAgICB9CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9y
T2JqZWN0KEpTT2JqZWN0KikgY29uc3Q7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9y
Q29uZGl0aW9uS2luZChQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRl
eCAwM2EyZjY3MWY3NDQ2ZTRhY2FkY2Q3NGI5Yzg3ZTg5YTdkMDlhMDE1Li41ZDNmMTM2N2VhNGQ1
NGNiZDUxZmFiNDJkY2IzMTY5MWJkMTlmZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTU5LDEwICs1OSw5IEBA
IHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogICAgICAgICBvdXQucHJpbnQoIjoiLCBtX2NvZGUpOwogfQogCi12b2lkIEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24mIGNvbmRpdGlvbikKK3ZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hw
b2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
IGNvbmRpdGlvbikKIHsKLSAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3Vy
ZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KAotICAgICAgICB3YXRjaHBvaW50cywgaml0
LT5jb2RlQmxvY2soKSwgc3R1YkluZm8sIGNvbmRpdGlvbik7CisgICAgV2F0Y2hwb2ludHNPblN0
cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCh3YXRj
aHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgY29uZGl0aW9uKTsKIH0KIAogdm9pZCBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkKQEAgLTczLDcgKzcyLDEwIEBAIHZv
aWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCiB2b2lkIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6c3VjY2VlZCgpCiB7CiAgICAgcmVzdG9yZVNjcmF0Y2goKTsKLSAgICBz
dWNjZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CisgICAgaWYgKGppdC0+Y29kZUJsb2NrKCktPnVz
ZVNoYXJlZElDKCkpCisgICAgICAgIGppdC0+cmV0KCk7CisgICAgZWxzZQorICAgICAgICBzdWNj
ZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CiB9CiAKIGNvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGU6OmxpdmVSZWdpc3RlcnNGb3JDYWxsKCkKQEAgLTEyNiwxMCArMTI4LDEx
IEBAIGF1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNlCiAgICAgfTsKIH0KIAotYXV0byBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4
Y2VwdGlvbnMoKSAtPiBTcGlsbFN0YXRlCithdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJl
c2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBS
ZWdpc3RlclNldCYgZXh0cmEpIC0+IFNwaWxsU3RhdGUKIHsKICAgICBSZWdpc3RlclNldCBsaXZl
UmVnaXN0ZXJzID0gYWxsb2NhdG9yLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgbGl2ZVJlZ2lzdGVy
cy5leGNsdWRlKGNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgbGl2ZVJlZ2lzdGVycy5tZXJn
ZShleHRyYSk7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQgZXh0cmFTdGFja1BhZGRpbmcgPSAw
OwogICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNr
Rm9yQ2FsbCgqaml0LCBsaXZlUmVnaXN0ZXJzLCBleHRyYVN0YWNrUGFkZGluZyk7CkBAIC0yNTIs
NyArMjU1LDcgQEAgUG9seW1vcnBoaWNBY2Nlc3M6On5Qb2x5bW9ycGhpY0FjY2VzcygpIHsgfQog
CiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAg
ICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAotICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2FzZXNUb0FkZCkKKyAgICBW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIApAQCAtMjY4
LDkgKzI3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKAogICAgIC8vICAgYWRkIG1vcmUgdGhpbmdzIGFmdGVyIGZhaWx1cmUuCiAgICAgCiAg
ICAgLy8gRmlyc3QgZW5zdXJlIHRoYXQgdGhlIG9yaWdpbmFsQ2FzZXNUb0FkZCBkb2Vzbid0IGNv
bnRhaW4gZHVwbGljYXRlcy4KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
PiBjYXNlc1RvQWRkOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdpbmFsQ2FzZXNUb0FkZC5zaXplKCk7
ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbXlDYXNlID0gV1RG
TW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOworICAgICAgICBhdXRvIG15Q2FzZSA9IFdURk1v
dmUob3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKIAogICAgICAgICAvLyBBZGQgaXQgb25seSBpZiBp
dCBpcyBub3QgcmVwbGFjZWQgYnkgdGhlIHN1YnNlcXVlbnQgY2FzZXMgaW4gdGhlIGxpc3QuCiAg
ICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTM0Niw5ICszNDksOSBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKIH0KIAogQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSgKLSAgICBjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gbmV3QWNjZXNzKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2Vy
LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIFJlZjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCiB7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CiAgICAgbmV3QWNjZXNzZXMuYXBwZW5kKFdURk1vdmUo
bmV3QWNjZXNzKSk7CiAgICAgcmV0dXJuIGFkZENhc2VzKGxvY2tlciwgdm0sIGNvZGVCbG9jaywg
c3R1YkluZm8sIFdURk1vdmUobmV3QWNjZXNzZXMpKTsKIH0KQEAgLTQ0MCw3ICs0NDMsNyBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIHVuc2lnbmVkIHNyY0luZGV4ID0gMDsKICAgICB1
bnNpZ25lZCBkc3RJbmRleCA9IDA7CiAgICAgd2hpbGUgKHNyY0luZGV4IDwgbV9saXN0LnNpemUo
KSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZN
b3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBzb21l
Q2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKICAgICAgICAgCiAgICAgICAgIC8v
IElmIHRoZSBjYXNlIGhhZCBiZWVuIGdlbmVyYXRlZCwgdGhlbiB3ZSBoYXZlIHRvIGtlZXAgdGhl
IG9yaWdpbmFsIGluIG1fbGlzdCBpbiBjYXNlIHdlCiAgICAgICAgIC8vIGZhaWwgdG8gcmVnZW5l
cmF0ZS4gVGhhdCBjYXNlIG1heSBoYXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkIGJ5
IHRoZSBjb2RlIHRoYXQgaXQKQEAgLTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRK
U0xvYwogICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRj
aEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDUs
NiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0
YXRlLmppdCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRl
ID0KLSAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGpp
dCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFj
ZSk7CiAKICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MjEsMTIg
KzUyMCwzMCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNl
czogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAKKworICAgIGJvb2wgZG9lc0NhbGxz
ID0gZmFsc2U7CisgICAgYm9vbCBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGZhbHNlOworICAg
IGJvb2wgY2FuQmVTaGFyZWQgPSB0cnVlOworICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFy
azsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGtleXMoY2FzZXMuc2l6ZSgp
KTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2Vz
KSB7CisgICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01h
cmspOworICAgICAgICBpZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwg
ZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCisgICAgICAgICAgICBkb2VzSlNH
ZXR0ZXJTZXR0ZXJDYWxscyA9IHRydWU7CisgICAgICAgIGtleXNbaW5kZXhdID0gZW50cnk7Cisg
ICAgICAgICsraW5kZXg7CisgICAgfQorICAgIHN0YXRlLm1fZG9lc0NhbGxzID0gZG9lc0NhbGxz
OworICAgIHN0YXRlLm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSBkb2VzSlNHZXR0ZXJTZXR0
ZXJDYWxsczsKKyAgICAvLyBHZXR0ZXIgLyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIg
YWRqdXN0bWVudCwgd2hpY2ggaXMgdGllZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2gg
bWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVhYmxlLgorICAgIGlmIChkb2VzSlNHZXR0ZXJTZXR0ZXJD
YWxscykKKyAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKwogICAgIC8vIEF0IHRoaXMgcG9p
bnQgd2UncmUgY29udmluY2VkIHRoYXQgJ2Nhc2VzJyBjb250YWlucyB0aGUgY2FzZXMgdGhhdCB3
ZSB3YW50IHRvIEpJVCBub3cgYW5kIHdlCiAgICAgLy8gd29uJ3QgY2hhbmdlIHRoYXQgc2V0IGFu
eW1vcmUuCiAgICAgCiAgICAgYm9vbCBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayA9IHRydWU7
Ci0gICAgYm9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBmYWxzZTsKICAgICBib29sIG5lZWRz
SW50MzJQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N0cmluZ1Byb3BlcnR5
Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayA9IGZhbHNl
OwpAQCAtNTQyLDEwICs1NTksNzEgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhp
Y0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAg
fQogICAgICAgICBjb21taXQobG9ja2VyLCB2bSwgc3RhdGUud2F0Y2hwb2ludHMsIGNvZGVCbG9j
aywgc3R1YkluZm8sICpuZXdDYXNlKTsKICAgICAgICAgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hl
Y2sgJj0gbmV3Q2FzZS0+Z3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2soc3R1YkluZm8pOwotICAgICAg
ICBpZiAobmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBuZXdDYXNlLT50
eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQotICAgICAgICAgICAgaGFzSlNHZXR0ZXJTZXR0
ZXJDYWxsID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5ld0Nhc2UtPnVzZXNQb2x5UHJvdG8oKSkKKyAg
ICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgfQorICAgIGlmIChuZWVkc1N5bWJv
bFByb3BlcnR5Q2hlY2sgfHwgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzSW50MzJQ
cm9wZXJ0eUNoZWNrKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCisgICAgUmVmUHRy
PEpJVFN0dWJSb3V0aW5lPiBzdHViOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkp
IHsKKyAgICAgICAgaWYgKGNhbkJlU2hhcmVkKSB7CisgICAgICAgICAgICBTaGFyZWRKSVRTdHVi
U2V0OjpTZWFyY2hlciBzZWFyY2hlciB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQ
UiwKKyAgICAgICAgICAgICAgICBzdHViSW5mby52YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICBz
dHViSW5mby5yZWdzLnRoaXNHUFIsCisgICAgICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5m
b0dQUiwKKyAgICAgICAgICAgICAgICBzdHViSW5mby51c2VkUmVnaXN0ZXJzLAorICAgICAgICAg
ICAgICAgIGtleXMKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBzdHViID0gdm0ubV9zaGFy
ZWRKSVRTdHVicy0+ZmluZChzZWFyY2hlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRv
IGZpbmlzaENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxKSVRTdHViUm91dGluZT4mJiBzdHVi
KSB7CisgICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZNb3ZlKHN0dWIpOworICAgICAgICBtX3dh
dGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CisgICAgICAgIGlmICghc3Rh
dGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV93ZWFrUmVmZXJlbmNl
cyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtS
ZWZlcmVuY2VzKSk7CisgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJi
b3NlKQorICAgICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5j
b2RlKCksICJcbiIpOworCisgICAgICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOworICAgICAg
ICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKKworICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
OjpLaW5kIHJlc3VsdEtpbmQ7CisgICAgICAgIGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6
Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKKyAgICAg
ICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5h
bENvZGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOworCisgICAgICAgIHJldHVybiBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkp
OworICAgIH07CisKKyAgICBpZiAoc3R1YikgeworICAgICAgICBmb3IgKGF1dG8mIGFjY2Vzc0Nh
c2UgOiBjYXNlcykKKyAgICAgICAgICAgIGFjY2Vzc0Nhc2UtPmNvbGxlY3RJbnZhcmlhbnRzRm9y
Q29kZVJldXNlKHN0YXRlLCBjb2RlQmxvY2spOworICAgICAgICByZXR1cm4gZmluaXNoQ29kZUdl
bmVyYXRpb24oV1RGTW92ZShzdHViKSk7CiAgICAgfQogCisgICAgQ0NhbGxIZWxwZXJzIGppdChj
b2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5tX2RvZXNKU0dldHRlclNldHRlckNh
bGxzKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGd1YXJhbnRlZSB0aGF0IHN0YWNrLXBv
aW50ZXIgaXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhpcyBpcyBub3QgYSBwcm9ibGVtIGlmIHdlIGFy
ZSBub3QgaGF2aW5nIEpTIGdldHRlciAvIHNldHRlciBjYWxscyBzaW5jZSBzdGFjay1wb2ludGVy
IGlzCisgICAgICAgICAgICAvLyBjYWxsZWUtc2F2ZSByZWdpc3RlciBhbmQgaXQgaXMga2VwdCBi
ZXlvbmQgY2FsbHMuIEhvd2V2ZXIsIG91ciBKUyBleGVjdXRhYmxlIGNhbGwgZG9lcyBub3Qgc2F2
ZSBzdGFjay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0aW5nIHN0YWNrLXBvaW50ZXIgYWZ0ZXIK
KyAgICAgICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRlciBjYWxscy4gQnV0IHRoaXMgY291bGQg
YmUgZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3RhY2stcG9pbnRlciwgYW5kIG1ha2VzIFBB
QyB0YWdnaW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8vIFRvIGVuc3VyZSBQQUMtdGFnZ2luZyB3
b3JrLCB3ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRlciB0byB0aGUgYXBwcm9wcmlhdGUgb25l
LgorICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2Rl
QmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB9CisKKyAgICBzdGF0ZS5wcmVz
ZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KKyAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1
c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRy
YVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAgCiAgICAgaWYgKGNhc2VzLmlzRW1wdHko
KSkgewogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIHVubGlrZWx5LCBidXQgd2UgbWFrZSBpdCBs
ZWdhbCBhbnl3YXkuCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuanVt
cCgpKTsKQEAgLTY5MCw3ICs3NjgsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3Jw
aGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzID0gbnVsbHB0cjsK
ICAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFu
ZGxpbmc7Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24o
KSAmJiBoYXNKU0dldHRlclNldHRlckNhbGwpIHsKKyAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3Rv
cmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGRvZXNKU0dldHRlclNldHRlckNhbGxzKSB7CiAg
ICAgICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLgogICAgICAgICAvLyBOb3RlIHRo
YXQgdGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gZG9pbmcgZ2VuZXJpY1Vud2luZCBm
cm9tIGEgcHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4KICAgICAgICAgLy8gTm90ZSBhbHNvIHRoYXQg
dGhpcyBpcyBub3QgcmVhY2hhYmxlIGZyb20gY3VzdG9tIGdldHRlci9zZXR0ZXIuIEN1c3RvbSBn
ZXR0ZXIvc2V0dGVycyB3aWxsIGhhdmUgCkBAIC03MzAsNiArODA4LDE1IEBAIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9jCiAgICAgICAgIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyA9
IHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZygpOwogICAgIH0KIAorICAg
IGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgZmFpbHVyZS5saW5rKCZq
aXQpOworICAgICAgICAvLyBJbiBBUk02NCwgd2UgZG8gbm90IHB1c2ggYW55dGhpbmcgb24gc3Rh
Y2sgc3BlY2lhbGx5LgorICAgICAgICAvLyBTbyB3ZSBjYW4ganVzdCBqdW1wIHRvIHRoZSBzbG93
LXBhdGggZXZlbiB0aG91Z2ggdGhpcyB0aHVuayBpcyBjYWxsZWQgKG5vdCBqdW1wZWQpLgorICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRhaWwgY2FsbCB0byB0aGUgdGh1bmsgd2hpY2ggY2Fs
bHMgdGhlIHNsb3cgcGF0aCBmdW5jdGlvbi4KKyAgICAgICAgLy8gQW5kIHdlIHNob3VsZCBlbGlt
aW5hdGUgSUMgc2xvdy1wYXRoIGdlbmVyYXRpb24gaW4gQmFzZWxpbmVKSVQuCisgICAgICAgIGpp
dC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9CisKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0
LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxh
dGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsK
ICAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03Mzks
OSArODI2LDEyIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBzdWNjZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRp
b247CiAKLSAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsK
LQotICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIEFTU0VS
VChzdGF0ZS5zdWNjZXNzLmVtcHR5KCkpOworICAgIGVsc2UgeworICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKKyAgICAgICAgbGlua0J1ZmZlci5s
aW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgfQogICAg
IAogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBk
YXRhTG9nKEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1YkluZm8uY29kZU9yaWdpbiksICI6
IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIgZm9yICIsIGxpc3REdW1wKGNhc2Vz
KSwgIlxuIik7CkBAIC03NDksMzUgKzgzOSwyMSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZSA9IEZJ
TkFMSVpFX0NPREVfRk9SKAogICAgICAgICBjb2RlQmxvY2ssIGxpbmtCdWZmZXIsIEpJVFN0dWJS
b3V0aW5lUHRyVGFnLAogICAgICAgICAiJXMiLCB0b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZvciAi
LCAqY29kZUJsb2NrLCAiICIsIHN0dWJJbmZvLmNvZGVPcmlnaW4sICIgd2l0aCByZXR1cm4gcG9p
bnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAiLCBsaXN0RHVtcChjYXNlcykpLmRhdGEoKSk7Ci0KLSAg
ICBib29sIGRvZXNDYWxscyA9IGZhbHNlOwotICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFy
azsKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpCi0gICAgICAgIGRvZXNDYWxscyB8PSBl
bnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOwotICAgIAotICAgIG1fc3R1YlJvdXRp
bmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMs
IGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1Ro
YXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGlu
Zyk7Ci0gICAgbV93YXRjaHBvaW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwotICAg
IGlmICghc3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZl
cmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUu
d2Vha1JlZmVyZW5jZXMpKTsKLSAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVy
Ym9zZSkKLSAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7
CiAgICAgCi0gICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7Ci0gICAgbV9saXN0LnNocmlua1Rv
Rml0KCk7Ci0gICAgCi0gICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5k
OwotICAgIGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0
U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKLSAgICBlbHNlCi0gICAgICAg
IHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOwot
ICAgIAotICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIGNvZGUu
Y29kZSgpKTsKKyAgICBzdHViID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgV1RGTW92ZShr
ZXlzKSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0
ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBj
YWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworCisgICAgaWYgKGNvZGVCbG9jay0+
dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpCisgICAgICAgICAgICB2
bS5tX3NoYXJlZEpJVFN0dWJzLT5hZGQoU2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5KHN0dWJJ
bmZvLmJhc2VHUFIsIHN0dWJJbmZvLnZhbHVlR1BSLCBzdHViSW5mby5yZWdzLnRoaXNHUFIsIHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsIHN0dWIuZ2V0KCkp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHVi
KSk7CiB9CiAKLXZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoKQordm9pZCBQb2x5
bW9ycGhpY0FjY2Vzczo6YWJvdXRUb0RpZShWTSYgdm0pCiB7CiAgICAgaWYgKG1fc3R1YlJvdXRp
bmUpCi0gICAgICAgIG1fc3R1YlJvdXRpbmUtPmFib3V0VG9EaWUoKTsKKyAgICAgICAgbV9zdHVi
Um91dGluZS0+YWJvdXRUb0RpZSh2bSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRl
eCAyOTIwMzI2ZGNjOTE1NDc0YjNmMWVlYjdmNzI1ZTZhYjM0YWVjYjQxLi5mOWY4Y2JmMGQ1NTk4
ZTFmMWVmMjMwMWI0NThmYmFkYjAzMzQ0ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMTQxLDEwICsxNDEsMTAgQEAg
Y2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIC8vIFdoZW4gdGhpcyBmYWlscyAocmV0dXJu
cyBHYXZlVXApLCB0aGlzIHdpbGwgbGVhdmUgdGhlIG9sZCBzdHViIGludGFjdCBidXQgeW91IHNo
b3VsZCBub3QgdHJ5CiAgICAgLy8gdG8gY2FsbCB0aGlzIG1ldGhvZCBhZ2FpbiBmb3IgdGhhdCBQ
b2x5bW9ycGhpY0FjY2VzcyBpbnN0YW5jZS4KICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFk
ZENhc2VzKAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiwgMj4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBW
TSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPiwgMj4pOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlKAotICAgICAg
ICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAgY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIFJlZjxBY2Nlc3NDYXNlPik7CiAgICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblJl
c3VsdCByZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgU3RydWN0dXJlU3R1YkluZm8mKTsK
ICAgICAKQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAg
Ly8gb3B0aW1pemF0aW9uIHRvIHRoZW4gYXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBhZ2FpbiBk
dXJpbmcgdGhlIGZpeHBvaW50LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wg
cHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OwogCi0gICAgdm9pZCBhYm91dFRv
RGllKCk7CisgICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BDKHZvaWQqIHBjKSBjb25zdApA
QCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBmcmllbmQg
Y2xhc3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OwogICAgIAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwg
Mj4gTGlzdFR5cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBM
aXN0VHlwZTsKICAgICAKICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVj
dHVyZVN0dWJJbmZvPiYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwKQEAgLTE5Niw2
ICsxOTYsOCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3Zt
KHZtKSAKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwg
bV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxz
KGZhbHNlKQorICAgICAgICAsIG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3Vs
YXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAg
LCBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwg
bV9jYWxjdWxhdGVkQ2FsbFNpdGVJbmRleChmYWxzZSkKQEAgLTIyNSw4ICsyMjcsMTAgQEAgc3Ry
dWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9p
bnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7CiAgICAgVmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2Nh
bGxMaW5rSW5mb3M7CisgICAgYm9vbCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzIDogMTsKKyAg
ICBib29sIG1fZG9lc0NhbGxzIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50
KENvZGVCbG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAKICAgICB2b2lk
IHJlc3RvcmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgsNyArMjUyLDcg
QEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQm
IGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKIAog
ICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3Qg
UmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBTcGlsbFN0YXRl
IHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29u
c3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdp
c3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBTcGlsbFN0YXRl
Jik7CiAgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3Qg
U3BpbGxTdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2Fz
ZS5jcHAKaW5kZXggY2MyOTczYzk0ZTExNjJhMzg5ZTJlZjUwZWVhNmEzYjM0ZTc1ZmE5ZC4uNGJm
NzgwZWQzMTc2NmVkZTZiY2M1NjA0NDZhNTA3OWFjYmNjMTJmMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcApAQCAt
MzgsMTkgKzM4LDE5IEBAIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2Uo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2VzCiAgICAgbV92aWFQcm94eSA9
IHZpYVByb3h5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25k
aXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQogewogICAgIEFTU0VSVCh0eXBlID09IExvYWQgfHwgdHlwZSA9PSBN
aXNzIHx8IHR5cGUgPT0gR2V0R2V0dGVyIHx8IHR5cGUgPT0gUmVwbGFjZSk7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQ
cm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0K
IAogUHJveHlhYmxlQWNjZXNzQ2FzZTo6flByb3h5YWJsZUFjY2Vzc0Nhc2UoKQogewogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBj
b25zdAorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QK
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJveHlhYmxlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigq
bmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUo
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKaW5kZXggZGMzOWUyNmNhMmY0YjJiN2Fi
YTEyYjVhNTVmMzI2NjQ0MTBlZmE1Yy4uZTg0Mzg1Y2E3NWM5Zjc1MmU4ZThlMTZjZGRlMGFiY2Fj
N2JjYzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJv
eHlhYmxlQWNjZXNzQ2FzZS5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgUHJveHlhYmxlQWNj
ZXNzQ2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIAogICAgIFdhdGNocG9pbnRTZXQqIGFkZGl0
aW9uYWxTZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9uYWxTZXQuZ2V0KCk7
IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwg
SlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
IFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0KCksCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgYm9vbCB2aWFQcm94eSA9IGZhbHNl
LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3Ry
ZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEFjY2Vzc0Nhc2U+
IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB+UHJveHlhYmxlQWNjZXNzQ2FzZSgpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcAppbmRleCBjOGU2YmM2M2EzNmEzOWI4NDU4YjkwMGNiMmE1MmVmNGYx
NTExMjBmLi5kZTAyNWU3NGVkZDgyZmZlODYxYjczNzczMWQ1MGEyNDZjNDk5Yzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAKQEAgLTUyLDYgKzUyLDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZv
KEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAgICAsIHByb3Bl
cnR5SXNJbnQzMihmYWxzZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2UpCiB7CisgICAg
cmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1YkluZm86On5T
dHJ1Y3R1cmVTdHViSW5mbygpCkBAIC0xMjAsMTEgKzEyMSwxMSBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpkZXJlZigpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSgpCit2b2lkIFN0cnVjdHVyZVN0dWJJ
bmZvOjphYm91dFRvRGllKFZNJiB2bSkKIHsKICAgICBzd2l0Y2ggKG1fY2FjaGVUeXBlKSB7CiAg
ICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSgpOwor
ICAgICAgICB1LnN0dWItPmFib3V0VG9EaWUodm0pOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBDYWNoZVR5cGU6OlVuc2V0OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKQEAg
LTEzOSw3ICsxNDAsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKCkKIH0K
IAogQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2Fz
ZSgKLSAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFN
b2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gYWNjZXNzQ2FzZSkKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVD
TUFNb2RlIGVjbWFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBSZWZQdHI8QWNjZXNz
Q2FzZT4gYWNjZXNzQ2FzZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTE1NSw3
ICsxNTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRB
Y2Nlc3NDYXNlKAogICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAg
ICAgCiAgICAgICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIpIHsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0
aGlzLCBXVEZNb3ZlKGFjY2Vzc0Nhc2UpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+
YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBhY2Nlc3NDYXNlLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoU3RydWN0dXJlU3R1Yklu
Zm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYWQgc3R1Yiwg
cmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTcwLDkgKzE3MSw5IEBAIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFj
Y2VzcyA9IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nh
c2VzOworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2Fz
ZXM7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNv
ZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKKyAgICAgICAgICAgIGF1dG8gcHJldmlvdXNDYXNlID0g
QWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAq
dGhpcyk7CiAgICAgICAgICAgICBpZiAocHJldmlvdXNDYXNlKQogICAgICAgICAgICAgICAgIGFj
Y2Vzc0Nhc2VzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzQ2FzZSkpOwogICAgICAgICAgICAgCkBA
IC0yNzYsNyArMjc3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRJ
bkJ5SUQoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNz
VHlwZTo6SW5zdGFuY2VPZjoKLSAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKKyAgICAg
ICAgcmVzZXRJbnN0YW5jZU9mKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAgIHJlc2V0RGVsQnkoY29kZUJs
b2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4ODI1NjhjMjZlYWQ2MmU0
MGVhZTdmMjcwODBmMDkyMWVkZWM3NjQ1Li4yZjZjYmEzMWJmZmJhYzRjMWMwYTJmOTUxODMyNmYy
YzMzMDc3NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaApAQCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJ
bmZvIHsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9w
ZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0SW5CeUlkU2Vs
Zihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBi
YXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7
CiAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9k
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAg
ICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+KTsKIAogICAgIHZvaWQgcmVzZXQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayopOwogCiAgICAgdm9pZCBk
ZXJlZigpOwotICAgIHZvaWQgYWJvdXRUb0RpZSgpOworICAgIHZvaWQgYWJvdXRUb0RpZShWTSYp
OwogCiAgICAgREVDTEFSRV9WSVNJVF9BR0dSRUdBVEU7CiAKQEAgLTM0NywxNiArMzQ3LDI0IEBA
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJu
YWxQdHJUYWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9uOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb247CiAKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fY29kZVB0cjsKKyAgICBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKworICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlUHRyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVj
dHVyZVN0dWJJbmZvLCBtX2NvZGVQdHIpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1
cmVTdHViSW5mbywgc2xvd1BhdGhTdGFydExvY2F0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVj
dHVyZVN0dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisKICAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzOwogCi0gICAgR1BSUmVnIGJhc2VHUFI7Ci0gICAgR1BSUmVnIHZhbHVlR1BSOwor
ICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyB2YWx1ZUdQ
UiB7IEludmFsaWRHUFJSZWcgfTsKICAgICB1bmlvbiB7CiAgICAgICAgIEdQUlJlZyB0aGlzR1BS
OwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwogICAgICAgICBHUFJSZWcgcHJvcGVydHlH
UFI7CiAgICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAgICB9IHJlZ3M7CisgICAgR1BSUmVnIG1f
c3R1YkluZm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICBHUFJSZWcgdmFsdWVUYWdHUFI7CiAgICAgLy8gRklYTUU6IFszMi1iaXRzXSBDaGVjayBpZiBT
dHJ1Y3R1cmVTdHViSW5mbzo6YmFzZVRhZ0dQUiBpcyB1c2VkIHNvbWV3aGVyZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA4YWRlYWQ1MGY0NTU2Y2Zm
MjVlN2M3Yzk5NzgzMDRkNDE3NzA5NzQ3Li45NjVkYWYzMGE2OTI2NjRkMDViYTEyZDVhZTY0ZDUx
ZWVkMDM2NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CkBAIC0xNTQsNiArMTU0LDEyIEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVs
cGVycyB7CiAgICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVjb3JkKGZ1bmN0aW9uQ2Fs
bCwgZnVuY3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CisKKyAg
ICBDYWxsIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBDYWxsIGZ1bmN0aW9uQ2FsbCA9IGNhbGwoYWRkcmVzcywgT3BlcmF0aW9uUHRyVGFn
KTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBl
eGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggOTgxZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAwMWJl
ODE2MDEyNi4uZmE0YWRhYmNmYWYwMjI5MGRkNGJmZDcxZDMwYTdmZDhjNzdjZjJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAt
MTg4LDYgKzE4OCw4IEBAIGNsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBsZTxB
cmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwogfTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1lIEp1
bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBAIC0yNjMsNiArMjY1LDY2IEBAIGlubGluZSBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAgZnJv
bSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNT
bG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVibGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1bWVu
dHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2
ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rp
b25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwg
QXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8
SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20sIGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwg
cmVzdWx0KQorICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAgICwg
bV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Moc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQorICAg
ICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9hcmd1bWVudHMoc3RkOjpm
b3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0
dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90Li4u
IEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQgdW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRpdmVK
SVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAgewor
ICAgICAgICB0aGlzLT5zZXRVcChqaXQpOworICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dPcGVy
YXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAgICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVzdWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1ZSkK
KyAgICAgICAgICAgIHRoaXMtPnJlY29yZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9u
VHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIHN0ZDo6Z2V0PEFyZ3VtZW50c0luZGV4
PihtX2FyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy0+cmVj
b3JkQ2FsbChqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0
aW9uQWRkcmVzcywgZXh0cmFjdFJlc3VsdCh0aGlzLT5tX3Jlc3VsdCksIHN0ZDo6Z2V0PEFyZ3Vt
ZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0
KTsKKyAgICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGpp
dCkgZmluYWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtl
X2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+
Ojp2YWx1ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0
aW9uVHlwZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3Vt
ZW50czsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBS
ZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBT
cGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVz
cywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1
bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5m
bywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxs
TW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0
VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3Vs
YXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4u
IGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHVi
SW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0
LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRp
ZiAvLyBFTkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0
ZTZkMjhmOC4uYzMwNjY2NjUwNmFmNTU4NmM2NDExMWIxOGE2NmI1MjkyNTVmNWMwNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEw
MjYsMjQgKzEwMjYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9k
ZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAg
ICAgICAgYmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVy
OjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7
CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
IH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUx
LDcgKzEwNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBu
b2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NU
eXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VS
ZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewog
ICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHVi
SW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVn
cyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFz
ZS51c2UoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdl
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFj
Y2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNh
c2UgVW50eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAg
R1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsK
KyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAK
ICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTEwOTYsNyArMTEyMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZv
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNj
ZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRh
Rm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMTExMSwxNCArMTEzNSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJ
ZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpOwpAQCAtMTEyOCwyMCArMTE1NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
cmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0K
ICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTExNzAsMjIgKzEyMTQsMjcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+
Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBub2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgICAgIH0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAg
ICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRS
ZWdzLnBheWxvYWRHUFIoKTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQy
KCkpOworCiAgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0Nl
bGwpKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
a2V5UmVncykpOwogCkBAIC0xMTk0LDIwICsxMjQzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAg
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hH
UFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5m
bygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNl
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
a2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAg
ICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEz
MDAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsK
KyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOwogCkBAIC0xMjQ4LDE0ICsxMzE4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0g
bV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElm
TmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUsCi0gICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29t
cGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFk
ZEluQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNTYxLDkgKzM2NDIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlMKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9w
KCkgPT0gR2V0UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9k
ZSwgbV9ncmFwaC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBz
cGVjdWxhdGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBPcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgfQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisg
ICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworCiAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFu
ZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTM1
NzQsMTQgKzM2NjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVO
YW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgSklUR2V0QnlW
YWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAg
ICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZSwgcHJvcGVydHks
IHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1
dG8gYmFzZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkg
eworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAg
cmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAg
ICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkp
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAg
ICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAg
LTM1ODksOCArMzY4Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRl
TmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93
bkNlbGwKLSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2UucGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOwor
ICAgICAgICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
LnBheWxvYWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAg
ICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwyOCArMzY5OSw0MCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUp
CiB7CiAgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAg
IGNhc2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQo
bm9kZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdl
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxs
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxk
KG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxs
ID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5h
bWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1h
dEpTKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzIyLDI5ICszODMxLDQwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAg
T3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdl
IGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBu
ZWVkCiAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVG
aWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNo
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5v
ZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQo
Tm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJh
bmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNo
aWxkMigpLCBicmFuZEdQUik7CkBAIC0zNzU4LDE2ICszODc4LDI0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwg
dXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklU
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVz
ZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJyYW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNz
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTM3NzgsOSArMzkwNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzc5MiwxNiArMzkyNiwyNCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZv
R1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVz
dWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5k
R1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xv
d1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKQEAgLTM5MTksMjIgKzQwNjEsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92
ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIs
IEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFs
dWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3Vs
dEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0
Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVn
aXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJv
dG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2
YWx1ZVJlZ3MsCi0gICAgICAgIHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVS
ZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFu
Y2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4u
c3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAg
bV9qaXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTQ1LDYgKzQwOTIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAg
ICAgICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAg
IE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0z
OTUyLDEzICs0MTAwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAg
ICB9CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJS
ZWcgcHJvdG90eXBlR1BSID0gcHJvdG90eXBlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAg
ICAgICAKLSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRj
aEdQUiwgc2NyYXRjaDJHUFIpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5v
ZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVz
dWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAK
ICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMzk2OCwxMiArNDEyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19B
U1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwogICAgIAorICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
ICAgICAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZv
LmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgIH0KICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwog
ICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsK
ICAgICAKQEAgLTM5ODksNyArNDE0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nh
c2UgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAgY29t
cGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJl
c3VsdEdQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNvbXBp
bGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1
bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7
CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKQEAgLTEzMDE5LDQ2ICsxMzE3OCw2NCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7
CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNo
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9k
ZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJ
ZChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2Rl
KCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2
YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jl
c3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJl
Y3QoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsK
KyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBz
dHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsK
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgp
KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFs
dWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQo
bm9kZSk7CiB9CkBAIC0xNDY5MCwxOCArMTQ4NjcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFN
b2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgLy8gV2Un
dmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQg
dG8gc3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNl
KTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAg
IGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lz
dGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGlu
Z09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
R1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1v
ZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ3
MTEsOSArMTQ4OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZv
KCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3Ms
CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmll
ci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigp
LCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIu
cmF3Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MmUx
ZThjZDUyYTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYzLi42MTczYjQ1NjBjODc3Y2YzZmJk
OGFkZDQzMjVhNWNlMWIyMWRlOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MTksMTYgKzcxOSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja0RldGFjaGVkKE5vZGUqKTsKIAotICAgIHZv
aWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVk
UHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
LCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1v
ZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAo
KSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0
QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9p
ZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRU
b1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9p
ZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQ
UlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpK
dW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAg
dm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVz
dWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUp
OworICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQ
YXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdH
UFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BS
UmVnIHJlc3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAg
IHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BS
T3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBH
UFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExp
c3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQg
Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVn
IGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsK
KyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRh
Z0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9u
ZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6
Okp1bXBMaXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUq
KTsKQEAgLTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBn
ZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFs
c2UpOwogICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQg
PSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUq
LCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcg
cmVzdWx0R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY29t
cGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFs
dWVSZWdzIHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BS
LCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3Rh
bmNlT2YoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKQEAgLTk0OSw2ICs5
NDksMjYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjpl
bmFibGVfaWZfdDwKKyAgICAgICAgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jl
c3VsdCwKKyAgICBKSVRDb21waWxlcjo6Q2FsbD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJncy4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3Bl
cmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBhZGRy
ZXNzLm9mZnNldCksIHJlc3VsdCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAg
ICAgICAhRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwKKyAgICBKSVRD
b21waWxlcjo6Q2FsbD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRkcmVzcyBh
ZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFy
Z0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0
aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewogICAgICAgICAv
LyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4KQEAgLTk4OCw2
ICsxMDA4LDEzIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIG1faml0
LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgIH0KIAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGFw
cGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBw
cmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CisgICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmln
aW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgcmV0dXJuIG1faml0
LmFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBw
ZW5kT3BlcmF0aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0
aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTAxMCw2
ICsxMDM3LDE0IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGNhbGw7
CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBp
ZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgICAgICByZXR1cm4gY2FsbDsKKyAgICB9
CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewog
ICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCBiNTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li42YmEw
YTJjMjkzODc5NmU4MWM0YTEwM2Q3YWI0NTkyNDYyYTExZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIwMCw4
ICsyMDAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIAogICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRl
RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNp
emUoKSk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBK
U1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCB0eXBlKTsKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VU
YWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZywgdHlwZSk7CiAgICAgCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjM1LDggKzIzNSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKICAgICAKICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAg
IEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSlNWYWx1
ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlz
VGFnR1BSLCB0aGlzUGF5bG9hZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklU
VHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRp
ZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BS
KSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVl
UmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIzNDEsOCArMjM0MSw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncy50YWdH
UFIoKSkpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAg
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgICAgICBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6
R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgYmFzZVJlZ3MsIHByb3Bl
cnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAKICAgICAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNT
dHJpbmcpKQogICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5n
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IGI5MTE4YjYyZTg3ZDk3MGFjNTQ2MWY2M2JkM2MzODBmYjhiMDEyNjAu
LjMzNmIxYTk1ZDI0NmU3MTk0YTc3NDEwMjY1M2MzMjlkMzQzNGY1YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTQ3LDEy
ICsxNDcsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2Up
CiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmln
aW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
LCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGls
bFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5
SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIGlkZW50aWZpZXIsIHNsb3dQYXRo
VGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIo
KSwgcmVzdWx0LmdwcigpLCBzdHViSW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQs
IG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFy
Z2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwpAQCAtMTYwLDI2ICsxNjAsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAg
ICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdl
IGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJh
c2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxz
ZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHR5cGUpOworICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSLCB0eXBlKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwK
LSAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBi
YXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9u
KHR5cGUpLAorICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAg
ICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVk
LAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogICAgIAogICAgIG1faml0
LmFkZEdldEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMTg3
LDIwICsxOTcsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlz
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAgICB1c2VkUmVnaXN0ZXJz
LnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQodGhpc0dQUiwgZmFs
c2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgIGlmIChz
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChz
dHViSW5mb0dQUiwgZmFsc2UpOwogICAgIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpKTsKKyAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQ
UiksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlzR1BSKSwgc3R1YkluZm9H
UFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhU
YXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
c09wdGltaXplLAotICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6
OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAg
fQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0yNjgx
LDE2ICsyNzAxLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwotCisgICAgICAg
ICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHko
dGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHByb3Bl
cnR5KTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKIAorICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworCiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5n
T1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgICAgICAg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAg
LTI3MDAsOCArMjcyNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2Vs
bChiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJl
c3VsdEdQUikpOworICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpE
RkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAK
ICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAxKSkuaXNUeXBlKFNwZWNTdHJpbmcpKQogICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygp
LT5wcm9wZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKQEAgLTI3MTIsMTEgKzI3MzksMTkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0gICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBu
dWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVy
YXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BS
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmFkZEdldEJ5
VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzk4NCw5ICs0MDE5LDE2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlz
OiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSAmJiBu
b2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICAgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1Zh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAg
LTM5OTQsMTQgKzQwMzYsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgICAgICAgICBjYWNo
ZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFs
dWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICAKICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdw
cigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CkBAIC00MDEzLDcgKzQwNjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKSk7CiAgICAgICAgICAgICBub3RDZWxs
TGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQ
UikpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOworICAgICAgICAgICAgY2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1Zh
bHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIG5vdENlbGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODE2N2ZhM2QwNTJjMTBiZGYxYjZmNjQ5MGNl
MzU5MDdkYWQ4YmYzNS4uM2E2MjBmNDcyNGZkMmNhYjI5OGRkNTMwODE5ZmYyNGE4M2FiOGMxNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
Mzk3OCw2ICszOTc4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC0zOTk5LDEwICs0MDAwLDExIEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFt
c1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNb
Ml0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZh
bGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0
QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiks
IEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVl
UmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAgICAg
ICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQwMTYsMTMgKzQwMTgsMjUgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0
KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2lu
ID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBy
ZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAog
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0
aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDExMCw2ICs0MTI0LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkg
PyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhj
ZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQp
OwogCkBAIC00MTMwLDEwICs0MTQ1LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgR1BS
UmVnIGJyYW5kR1BSID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5n
cFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICBhdXRvIGdlbmVyYXRv
ciA9IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRl
SW5kZXgsIGFjY2Vzc1R5cGUsCi0gICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOwor
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCkBAIC00
MTU5LDEzICs0MTc1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAg
ICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmso
JmppdCk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOworICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhC
ZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2
YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBhcHByb3ByaWF0ZVByaXZhdGVB
Y2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0
ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgp
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhD
YWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00NTE2LDYgKzQ1NDQsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OnJlZyhHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJ
VCkgPyAxIDogMDsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIFB1dEJ5SWRGbHVz
aCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9sYXRpbGUgcmVnaXN0ZXJzLgogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyODQ4CkBA
IC00NTM4LDEwICs0NTY3LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgLy8gSlMgc2V0dGVyIGNhbGwgSUNzIGdlbmVyYXRlZCBieSB0aGUgUHV0QnlJZCBJQyB3aWxs
IG5lZWQgdGhpcy4KICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpG
VExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAg
ICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRl
KAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNo
UmVnaXN0ZXIsIGVjbWFNb2RlLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJh
bXNbMV0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdp
c3RlciwgZWNtYU1vZGUsCiAgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CkBAIC00NTUzLDEyICs0
NTg0LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5z
bG93UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBz
dHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50
aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQ
YXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJh
d0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CkBAIC01MjM5LDYgKzUyODIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9u
cyhwYXRjaHBvaW50KTsKIApAQCAtNTI1OSwxMCArNTMwMywxMSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7
CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAg
ICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworICAgICAg
ICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAg
ICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6
Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsCi0gICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIp
KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlW
YWwsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVn
cyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5nOwogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gcHJvcGVy
dHlJc0ludDMyOwpAQCAtNTI4MCwxMyArNTMyNSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
CiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwo
KTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJ
bmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCByZXN1bHRHUFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01ODM2
LDcgKzU4OTMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZh
bHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
LSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSA/IDIgOiAxOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtNTg1Niw5ICs1OTEzLDExIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVl
UmVncyhwYXJhbXNbMV0uZ3ByKCkpOwogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0g
cGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgICAgIGF1dG8gc2NyYXRjaEdQUiA9IHBhcmFt
cy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICAgICAgYXV0byBzdHViSW5mb0dQUiA9IEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDEpIDog
SW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSByZXR1
cm5HUFIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHBhcmFtcy5ncFNj
cmF0Y2goMCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gcGFyYW1zLmdw
U2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gc2NyYXRj
aEdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBzY3JhdGNoR1BSKTsK
IAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZO
b3RDZWxsKGJhc2UpKTsKQEAgLTU4NzQsNyArNTkzMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5v
cm1hbCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKICAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1zLmdwU2NyYXRjaCgw
KSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNj
cmF0Y2hHUFIgIT0gcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1
ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CkBAIC01ODg0LDE5ICs1OTQzLDIwIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3Ig
PSBbJl0gewogICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlL
aW5kOjpOb3JtYWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVs
QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwg
YmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIp
LCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJ
VERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRM
SklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIp
LCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJz
Y3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwotICAgICAgICAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgp
OwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKApAQCAtNTkwNSwxMiArNTk2
NSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBi
YXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJldHVybkdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R1YkluZm9HUFIsIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNj
cmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQ
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2Fs
bCk7CkBAIC0xMjI0Miw4ICsxMjMxNCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotCiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0
cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAg
ICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtMTIyNjAs
MTAgKzEyMzMyLDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgQm94
PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGpp
dCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRH
UFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbkJ5SWRH
ZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKLSAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7CisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSKTsK
IAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAt
MTIyNzQsMTIgKzEyMzQ4LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGpp
dC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQ
Uik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
cGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRo
QmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjQ4Niw3ICsxMjU3Miw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm90b3R5
cGUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IDI7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAzIDogMjsKICAgICAgICAgcGF0Y2hw
b2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciB9
OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CiAgICAgICAgIApAQCAtMTI1MDIsNiArMTI1ODgsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwYXJhbXNb
Ml0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHBhcmFtcy5n
cFNjcmF0Y2goMSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMikgOiBJ
bnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBkb25lSnVtcDsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlSXNDZWxsKSB7
CkBAIC0xMjUyMyw4ICsxMjYxMCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+
anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVy
YXRvciA9IEJveDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwg
c3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BS
LCBwcm90b3R5cGVJc09iamVjdCk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0
ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25l
ID0gaml0LmxhYmVsKCk7CkBAIC0xMjUzNywxMiArMTI2MjQsMjQgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRH
UFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
dmFsdWVHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mb0dQUiwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0
aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwp
OwpAQCAtMTM5ODYsNiArMTQwODUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywg
VmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlz
IGEgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2UgbWlnaHQgZ2V0IHNvbWUgcGVy
Zm9ybWFuY2UgYm9vc3QgaWYgd2UgY2xhaW0gdGhhdCBpdAogICAgICAgICAvLyBjbG9iYmVycyB2
b2xhdGlsZSByZWdpc3RlcnMgbGF0ZS4gSXQncyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVz
cywgdGhvdWdoLCBzaW5jZSB0aGUKQEAgLTE0MDE0LDEwICsxNDExNCwxMiBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAg
ICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5k
KHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdw
U2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVy
YXRvciA9IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdz
KHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFt
c1swXS5ncHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJh
bXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDMwLDEyICsxNDEzMiwyNCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0
aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVy
LnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJl
Z2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTQwNjAsOCArMTQxNzQsOCBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVl
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjps
YXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEg
OiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRp
b25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBh
dGNocG9pbnQpOwpAQCAtMTQwODMsMTAgKzE0MTk3LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBj
YWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhw
YXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNb
MV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJd
LmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5l
cmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBk
b25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDA5OSwxMiArMTQyMTUsMjQgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1
bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdw
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0u
Z3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBz
dHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJh
bXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sx
XS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigp
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRl
eCAyYWRkNDk0YzUzMmFhZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRmLi5iNGU0NzU4ZTU4ZmIx
ZTc5MjZjNmEwNzE4MzczMTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHdvcmRTaXplID0gODsK
IAogU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKLSAgICBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywg
R1BSUmVnIHJldHVyblJlZ2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIEND
YWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIs
IEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6IG1faml0KGppdCkKICAg
ICAsIG1fbnVtQXJncyhudW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdpc3RlcihyZXR1cm5SZWdp
c3RlcikKQEAgLTYzLDYgKzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxs
Q29udGV4dCgKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm1lcmdlKG1fYXJndW1l
bnRSZWdpc3RlcnMpOwogICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQog
ICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisgICAgaWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KGluZGlyZWN0
Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLmZp
bHRlcih1c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxs
aW5nQ29udmVudGlvblJlZ2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEyIEBAIFNsb3dQYXRoQ2Fs
bENvbnRleHQ6On5TbG93UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1BhdGhDYWxsS2V5IFNsb3dQ
YXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBjYWxsVGFyZ2V0KSBjb25zdAogewotICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVu
a1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0KTsKKyAg
ICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2Fy
Z3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQYXRoQ2FsbEtleSBTbG93
UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRy
ZXNzKSBjb25zdAoreworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQs
IG51bGxwdHIsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBhZGRyZXNzLm9mZnNldCk7
CiB9CiAKIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0s
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKQEAgLTEzMyw2ICsxNDAs
MjIgQEAgU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Ns
b3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIENDYWxsSGVs
cGVyczo6QWRkcmVzcyBjYWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXkgPSBr
ZXlXaXRoVGFyZ2V0KGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCByZXN1bHQgPSBTbG93
UGF0aENhbGwobV9qaXQuY2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7CisKKyAgICBtX2ppdC5h
ZGRMaW5rVGFzaygKKyAgICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aHVuayA9CisgICAgICAgICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVu
ayh2bSwgcmVzdWx0LmtleSgpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3Vs
dC5jYWxsKCksIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih0aHVuay5jb2RlKCkp
KTsKKyAgICAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luKQogewogICAgIGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4MWYyNzdmNmI4MjE3YWM5
ZjNmYTgwYzEyYS4uZDZmMjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBmNDgyYTgzMWQ0YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCkBAIC01NCwxNSAr
NTQsMTcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2lsbCBiZSBhbiBSQUlJIHRo
aW5neSB0aGF0IHdpbGwgc2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sgc2l6ZXMgYW5kIG9mZnNl
dHMgYW5kIHN1Y2guCiBjbGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBT
bG93UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVy
cyYsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlcik7CisgICAgU2xvd1Bh
dGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1
bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENh
bGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRleHQoKTsKIAogICAgIC8v
IE5PVEU6IFRoZSBjYWxsIHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVhZHkgZ29pbmcgdG8gYmUg
bGlua2VkIGJ5IHRoZSBKSVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAgICAvLyBzbyB0aGVyZSBp
cyBubyBuZWVkIGZvciB5b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAgICBTbG93UGF0aENhbGwg
bWFrZUNhbGwoVk0mLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpOwor
ICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CiAK
IHByaXZhdGU6CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBTbG93UGF0aENhbGxLZXkg
a2V5V2l0aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0OwogICAgIAogICAgIFJl
Z2lzdGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsaW5n
Q29udmVudGlvblJlZ2lzdGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxP
cGVyYXRpb24oCiB7CiAgICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAgewotICAgICAgICBTbG93
UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJn
dW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIpOworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0
IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAx
LCByZXN1bHRHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAgICAgICAgY2FsbCA9IGNv
bnRleHQubWFrZUNhbGwodm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0xMTcsNiArMTE5LDQ4IEBA
IFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4u
Lik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENh
bGwgY2FsbE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0
aW9uVGFyZ2V0LAorICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJl
c3VsdEdQUiwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgU2xvd1BhdGhDYWxs
IGNhbGw7CisgICAgeworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJl
Z2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEdQ
UkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFyZ3VtZW50cy4uLik7Cisg
ICAgICAgIGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7CisgICAgfQorICAgIGlmIChl
eGNlcHRpb25UYXJnZXQpCisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+YXBwZW5kKGppdC5lbWl0
RXhjZXB0aW9uQ2hlY2sodm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAg
IFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYg
aml0LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCogZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQ
UlJlZyByZXN1bHRHUFIsCisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAg
aWYgKGNhbGxTaXRlSW5kZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAgIHJldHVybiBjYWxsT3Bl
cmF0aW9uKHZtLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24s
IHJlc3VsdEdQUiwgYXJndW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4Rm9yQ29kZU9yaWdpbihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3Rh
dGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJz
JiBqaXQsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVn
IHJlc3VsdCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIGNhbGxP
cGVyYXRpb24oCisgICAgICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3RlcnMsIGppdCwgY2FsbFNp
dGVJbmRleEZvckNvZGVPcmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBleGNlcHRpb25UYXJnZXQs
IGZ1bmN0aW9uLAorICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCmluZGV4IDJkMzA2
YzYyMDMzYTgzOTA4ZTZmY2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdlODI2MWZkNDczNmIxZDMz
NzJiZWY1NTEzZWZlNWFhMzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3Vz
ZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwg
UmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50
UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKKyAgICBvdXQucHJpbnQo
Ijx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29m
ZnNldCwgIiwgaW5kaXJlY3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zmc2V0LCAiLCBjYWxsVGFy
Z2V0ID0gIiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIs
IGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKIH0KIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsS2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJjN2NlODNkNzA1MjBlNzYx
Mzg0MmJkZDMzZC4uMGNlNjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0MWFlMTAwMGQxMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCkBAIC01
MSwxMSArNTEsMTIgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0
aENhbGxLZXkoCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQsIEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVn
aXN0ZXJzLAotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAgICBwdHJkaWZmX3Qgb2Zm
c2V0LCBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhz
ZXQpCiAgICAgICAgICwgbV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9u
UHRyVGFnPigpKQogICAgICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMoYXJndW1lbnRSZWdpc3Rl
cnMpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1faW5kaXJlY3RPZmZz
ZXQoaW5kaXJlY3RPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYzLDEwICs2NCwxMSBA
QCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4gY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIGNvbnN0
IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1l
bnRSZWdpc3RlcnM7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9v
ZmZzZXQ7IH0KKyAgICBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9p
bmRpcmVjdE9mZnNldDsgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSB3aXRoQ2FsbFRhcmdl
dChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCiAgICAgewotICAgICAg
ICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJn
dW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxs
S2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zm
c2V0KCksIGluZGlyZWN0T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxL
ZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVlVGFnKQogICAgICAgICA6
IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkKLSAgICAgICAgLCBtX29m
ZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KERlbGV0ZWRW
YWx1ZVRhZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkRlbGV0ZWRW
YWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05Mywx
OCArOTMsMjAgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7CiAgICAgICAgIHJldHVy
biBtX3VzZWRSZWdpc3RlcnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJzCiAgICAgICAgICAgICAm
JiBtX2NhbGxUYXJnZXQgPT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAgICAgICAgICAmJiBtX29m
ZnNldCA9PSBvdGhlci5tX29mZnNldDsKKyAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVy
Lm1fb2Zmc2V0CisgICAgICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0ID09IG90aGVyLm1faW5k
aXJlY3RPZmZzZXQ7CiAgICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFz
aChtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldDsKKyAgICAgICAg
cmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2Nh
bGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCArIG1faW5kaXJlY3RPZmZz
ZXQ7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsK
ICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRhcmdldDsKICAgICBSZWdp
c3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZfdCBtX29mZnNldDsKKyAg
ICBwdHJkaWZmX3QgbV9vZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBtX2luZGlyZWN0T2Zmc2V0
IHsgMCB9OwogfTsKIAogc3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2ggewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWExMmFhZGRkMjc2YTkzMzEz
M2MwYjM2Yzg2NjEzYWQuLjM5OWNkYjcwNmQ3Nzg4OWE2N2RjODkzOWM3YzVhMDJiNTZiNzc1NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTc4LDggKzc4LDgg
QEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dl
bmVyYXRpb25UaHVua0dlbmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGppdCwgYnVmZmVy
KTsKICAgICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0
Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgo
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjEpOwogCiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAsMTMgKzIwMCwyMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2Vu
ZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihk
b3VibGUpOwogICAgIH0KICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25B
cmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihHUFJJ
bmZvOjpub25BcmdHUFIxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5
LmFyZ3VtZW50UmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyID0ga2V5
LmFyZ3VtZW50UmVnaXN0ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRhcmdldCgpKQorICAgICAg
ICBkb250Q2xvYmJlci5zZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgcmVnaXN0ZXJDbG9i
YmVyQ2hlY2soaml0LCBXVEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAgICBBc3NlbWJseUhlbHBl
cnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgQXNzZW1ibHlI
ZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGNh
bGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9
IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBrZXku
aW5kaXJlY3RPZmZzZXQoKSksIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBqaXQubG9hZFB0cihB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwog
ICAgIGppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVz
ZXJ2ZWROb25SZXR1cm5HUFIpOwpAQCAtMjMyLDcgKzIzOSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBj
b25zdCBTCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMVGh1bmspOwotICAgIHBh
dGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CisgICAgaWYgKGtleS5jYWxs
VGFyZ2V0KCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQo
KSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRvQ1N0cmluZyhrZXkpLmRhdGEo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cAppbmRleCAzNTRmOTU0N2I0YWJmMzI4OTZkMWNlYjRlYTIwMGZiYjRhNGRlY2NkLi5iZjhhMDgw
NDBjZWM4N2I2NGY3N2MzNmFlYWRiZmVkOWRlNDAyNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCkBAIC02NTIsNyArNjUzLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmVtaXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGwKICAgICAgICAgYXV0byBjYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbDxKSVRDb21waWxhdGlvblB0clRhZz4oY2FsbCk7CiAgICAgICAgIGxpbmtCdWZmZXIuYWRk
TWFpblRocmVhZEZpbmFsaXphdGlvblRhc2soWz0sICZ2bV0gKCkgewogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2
aXJ0dWFsVGh1bmtGb3Iodm0sICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHVi
KEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICAg
ICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZp
cnR1YWxUaHVuaywgdm0sIHsgfSkpOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hOZWFyQ2FsbChjYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPih2aXJ0dWFsVGh1bmsuY29kZSgpKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjhiMTIxM2Y2ZDI0Yzcw
YWZiNTAzMzIwZWFhNzJkODllN2Q4NmJlOS4uZTkwOTZiNTc3M2YzMjE3MzE2OWU3M2ZhZTM0MTEx
ODg2OTg5N2VhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBA
IC0yMDcsNyArMjA3LDcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAKICAgICAvLyBleHRyYUdQUkFyZ3MgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJn
dW1lbnQgdHlwZXMgcGFzc2VkIGluIHJlZ2lzdGVyIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgog
ICAgIC8vIGV4dHJhUG9rZSBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBw
YXNzZWQgb24gdGhlIHN0YWNrLgotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KICAgICBzdHJ1Y3Qg
QXJnQ29sbGVjdGlvbiB7CiAgICAgICAgIEFyZ0NvbGxlY3Rpb24oKQogICAgICAgICB7CkBAIC0y
MTksOCArMjE5LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucy5maWxsKEludmFsaWRHUFJSZWcpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5z
aWduZWQgYywgdW5zaWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZz4K
LSAgICAgICAgQXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGc+
JiBvdGhlcikKKyAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWdu
ZWQgYywgdW5zaWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZywgdW5z
aWduZWQgaD4KKyAgICAgICAgQXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQs
IGUsIGYsIGcsIGg+JiBvdGhlcikKICAgICAgICAgewogICAgICAgICAgICAgZ3ByU291cmNlcyA9
IG90aGVyLmdwclNvdXJjZXM7CiAgICAgICAgICAgICBncHJEZXN0aW5hdGlvbnMgPSBvdGhlci5n
cHJEZXN0aW5hdGlvbnM7CkBAIC0yMzAsNjUgKzIzMCw3NCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMg
OiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25z
ID0gb3RoZXIuY3Jvc3NEZXN0aW5hdGlvbnM7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVz
aFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRp
b24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEs
IG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5n
cHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQu
Z3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBS
UmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMg
KyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNv
dXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZnByU291cmNlc1tu
dW1GUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmZwckRlc3RpbmF0
aW9uc1tudW1GUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVu
dCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0Fy
ZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
ICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVz
dWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmNyb3NzU291cmNlc1tudW1Dcm9zc1Nv
dXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NEZXN0aW5hdGlvbnNb
bnVtQ3Jvc3NTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3Vt
ZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoRXh0
cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
ICsgMSwgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQ
UlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25z
W251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBv
a2U+IHB1c2hOb25BcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJh
UG9rZT4gcmVzdWx0KCp0aGlzKTsKKworICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVt
R1BSU291cmNlc10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlv
bnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KKworICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAK
LSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4
dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJFeHRy
YUFyZygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3Rh
Y2tBcmcoR1BSUmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAx
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4g
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBS
UmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZSArIDE+IGFkZFBva2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwor
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKICAgICAgICAgfQogCiAjaWYg
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKQEAgLTMzMSwxMiArMzQwLDE0IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9m
ZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1
bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBv
a2VPZmZzZXQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBS
QXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewogICAgICAg
ICAvLyBDbGFuZyBjbGFpbXMgdGhhdCBpdCBjYW5ub3QgZmluZCB0aGUgc3ltYm9sIGZvciBGUFJS
ZWcvR1BSUmVnOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHdoZW4gdGhleSBhcmUgcGFzc2Vk
IGRpcmVjdGx5IHRvIHN0ZDo6bWF4Li4uIHNlZW1zIGxpa2UgYSBidWcKICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJz
ID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKIAorICAgICAgICBVTlVTRURf
UEFSQU0obm9uQXJnR1BScyk7CisKICAgICAgICAgY3VycmVudEdQUkFyZ3VtZW50ICs9IGV4dHJh
R1BSQXJnczsKICAgICAgICAgY3VycmVudEZQUkFyZ3VtZW50IC09IG51bUNyb3NzU291cmNlczsK
ICAgICAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCkBAIC0zNTAsMTUg
KzM2MSwxNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmdUeXBlPgotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJB
cmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1
cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BS
cywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNl
dCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJn
dW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAg
ICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJn
dW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsK
ICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1
cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
KQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2Fs
Y3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2ln
bmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwg
Y3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcmV0dXJuICEocG9rZU9mZnNldCAmIDEpOwogICAg
IH0KIApAQCAtMzc2LDggKzM4Nyw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9w
dGltaXphdGlvbiB0aW1lIGV4cGxvc2lvbiBhc3NvY2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBp
biByZWN1cnNpdmUgdGVtcGxhdGVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
IFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNW
QyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBB
cmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5F
X0VYQ0VQVF9NU1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgUmVnVHlwZSBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVzaW5n
IEluZm9UeXBlID0gSW5mb1R5cGVGb3JSZWc8UmVnVHlwZT47CiAgICAgICAgIHVuc2lnbmVkIG51
bUFyZ1JlZ2lzdGVycyA9IEluZm9UeXBlOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwpAQCAt
MzkyLDMxICs0MDMsMzEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRv
IGEgZG91YmxlIik7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBt
YXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJn
LCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1Zh
bHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1l
bnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENl
bGxWYWx1ZSBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJn
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9
CkBAIC00MjQsOCArNDM1LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQogI2lmIENQVShBUk1fVEhVTUIyKSB8
fCBDUFUoTUlQUykKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6
dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsK
IApAQCAtNDY5LDI1ICs0ODAsMjUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2Vt
Ymx5SGVscGVycyB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQg
PCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsg
MSwgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkU3RhY2tB
cmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAjZW5kaWYKIAogICAgICAgICAvLyBPdGhlcndpc2UgcGFzcyBGUCBhcmd1bWVudCBvbiBz
dGFjay4KLSAgICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIGlmIChzdGFja0FsaWduZWQo
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCkuYWRkUG9r
ZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHNpemVv
ZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQ+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7
CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1Nv
dXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKQEAgLTQ5NywzNCArNTA4LDM0IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0Fy
ZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgcG9r
ZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4u
LiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFy
ZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBw
b2tlQXJndW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJn
MiBhcmcyLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQUkluZm86OnJl
Z1QwKTsKIAogICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50ICsgMSA9PSBudW1BcmdSZWdpc3Rl
cnMpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7Ci0g
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UgKyAxKTsKKyAgICAg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7Cisg
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2Ug
KyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4u
KTsKLSAgICAgICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGln
bmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgp
LCBhcmdzLi4uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlICsgMSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSArIDIpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlICsgMik7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCkuYWRkUG9rZSgp
LCBhcmdzLi4uKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxs
VmFsdWUgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVt
QXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAg
ICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChwYXls
b2FkLmdwcigpKTsKQEAgLTU0NCw5ICs1NTUsOSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIHBheWxvYWQuZ3ByKCksIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4K
LSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBK
U1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51
bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAg
ICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJn
LnRhZ0dQUigpKTsKQEAgLTU2OSwxMSArNTgwLDExIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2VuZGlmIC8vIENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
TUlQUykKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
ICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfYmFz
ZV9vZjxUcnVzdGVkSW1tLCBBcmc+Ojp2YWx1ZQogICAgICAgICB8fCBzdGQ6OmlzX2NvbnZlcnRp
YmxlPEFyZywgVHJ1c3RlZEltbT46OnZhbHVlPiAvLyBXZSBoYXZlIHRoaXMgc2luY2UgREZHU3Bl
Y3VsYXRpdmVKSVQgaGFzIGl0J3Mgb3duIGltcGxlbWVudGF0aW9uIG9mIFRydXN0ZWRJbW1QdHIK
LSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywg
QXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgb25seSBzdXBw
b3J0cyBub24tZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlIGFyZ3VtZW50cyBzaW5jZSB3ZSBuZXZl
ciBjYWxsIG9wZXJhdGlvbnMgd2l0aCBub24tcmVnaXN0ZXIgdmFsdWVzLgogICAgICAgICAvLyBJ
ZiB3ZSBldmVyIG5lZWRlZCB0byBzdXBwb3J0IGltbWVkaWF0ZSBmbG9hdGluZyBwb2ludCBhcmd1
bWVudHMgd2Ugd291bGQgbmVlZCB0byBkdXBsaWNhdGUgdGhpcyBsb2dpYyBmb3IgYm90aCB0eXBl
cywgd2hpY2ggc291bmRzCkBAIC01OTEsNDYgKzYwMiw0NiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMg
OiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBz
dGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFLCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJH
VU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9U
WVBFKSA8PSA0KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBB
cmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW0zMihhcmcpLCBhcmdz
Li4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUg
c3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRf
VFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FS
R1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRf
VFlQRSkgPT0gOCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywg
QXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tNjQoYXJnKSwgYXJn
cy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5F
IHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VN
RU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoKHN0ZDo6aXNfcG9pbnRlcjxBcmc+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVf
cG9pbnRlcl90PEFyZz4+KiwgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpCiAgICAgICAg
ICAgICB8fCBzdGQ6OmlzX3NhbWU8QXJnLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVlKT4KLSAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCiAg
ICAgLy8gU3BlY2lhbCBjYXNlIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZSBiZWNhdXNlIGl0J3Mg
cmVhbGx5IGFubm95aW5nIHRvIGRlYWwgd2l0aCBvdGhlcndpc2UuLi4KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3Rk
Ojppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgU3RydWN0dXJlKj46OnZhbHVlCiAgICAg
ICAgICYmIHN0ZDo6aXNfc2FtZTxBcmcsIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVl
PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJn
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcuZ2V0KCkpLCBhcmdzLi4u
KTsKICAgICB9CkBAIC02MzksOCArNjUwLDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGlj
IEFzc2VtYmx5SGVscGVycyB7CiAjdW5kZWYgUkVTVUxUX1RZUEUKIAogICAgIC8vIEJhc2UgY2Fz
ZTsgc2V0IHVwIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQog
ICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6YXJpdHkgPT0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3MsICJPbmUgbGFzdCBzYW5pdHkgY2hl
Y2siKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjU1LDMxICs2NjYsNDQgQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHNldHVwU3R1YkFy
Z3M8bnVtRlBSU291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMs
IEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXpl
PG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAg
fQogCi1wdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNFbnRyeUltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmdzLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICB1c2luZyBGaXJzdEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD47CisgICAgICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19zYW1lPEZpcnN0QXJndW1lbnRUeXBlLCBDYWxsRnJhbWUqPjo6dmFs
dWUpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxs
eSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3Ig
MzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNh
bml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFy
Z3MuLi4pOworICAgICAgICB9IGVsc2UgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAg
ICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdz
IG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQo
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4o
QXJncyksICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAg
ICAgICB9CisgICAgfQogCi0jZGVmaW5lIEZJUlNUX0FSR1VNRU5UX1RZUEUgdHlwZW5hbWUgRnVu
Y3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPgorcHVi
bGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4g
QXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEZJ
UlNUX0FSR1VNRU5UX1RZUEUsIENhbGxGcmFtZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJn
cy4uLiBhcmdzKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhBcmdzLi4u
IGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSBy
ZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAg
Zm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNh
bml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAs
IDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAg
c2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJ
TkUgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPEZJUlNUX0FSR1VNRU5UX1RZUEUsIENh
bGxGcmFtZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChHUFJSZWcgZnVuY3Rp
b25HUFIsIEFyZ3MuLi4gYXJncykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
Ly8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBt
ZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyks
ICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAw
LCAwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRy
eUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
PigpLnB1c2hOb25BcmcoZnVuY3Rpb25HUFIsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4u
KTsKICAgICB9CiAKLSN1bmRlZiBGSVJTVF9BUkdVTUVOVF9UWVBFCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoQWRkcmVzcyBhZGRyZXNzLCBBcmdz
Li4uIGFyZ3MpCisgICAgeworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRp
b25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCkucHVzaE5vbkFy
ZyhhZGRyZXNzLmJhc2UsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKKyAgICB9CiAK
ICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91
dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5jcHAKaW5kZXggZjdhYTMyOWZlMjVkMTljNzM3MTg0NzBhZWZmYjNiNGFhZWEwNWRiNi4uMmJm
MTFmZDY5NTk2MWExMTczZjMyYjRjZTkyMTYyYjAwNzIxODM0OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb25EYXRhLmgiCiAjaW5jbHVk
ZSAiSGVhcC5oIgpAQCAtMzksOCArNDAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCisgICAg
Y29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwg
Vk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKICAgICA6IEpJ
VFN0dWJSb3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQorICAgICwgbV9rZXlzKFdURk1vdmUo
a2V5cykpCiB7CiAgICAgdm0uaGVhcC5tX2ppdFN0dWJSb3V0aW5lcy0+YWRkKHRoaXMpOwogfQpA
QCAtNDksNiArNTIsOSBAQCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6On5HQ0F3YXJlSklUU3R1YlJv
dXRpbmUoKSB7IH0KIAogdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVm
Q291bnQoKQogeworICAgIGlmIChtX3ZtLm1fc2hhcmVkSklUU3R1YnMpCisgICAgICAgIG1fdm0u
bV9zaGFyZWRKSVRTdHVicy0+cmVtb3ZlKHRoaXMpOworCiAgICAgaWYgKG1faXNKZXR0aXNvbmVk
KSB7CiAgICAgICAgIC8vIFRoaXMgY2FzZSBpcyBuZWVkZWQgZm9yIHdoZW4gdGhlIHN5c3RlbSBz
aHV0cyBkb3duLiBJdCBtYXkgYmUgdGhhdAogICAgICAgICAvLyB0aGUgSklUIHN0dWIgcm91dGlu
ZSBzZXQgZ2V0cyBkZWxldGVkIGJlZm9yZSB3ZSBnZXQgYXJvdW5kIHRvIGRlbGV0aW5nCkBAIC03
NSw5ICs4MSw5IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpkZWxldGVGcm9tR0MoKQog
fQogCiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4mIGNvZGUsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwKKyAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBjb25zdCBKU0NlbGwqIG93bmVy
LAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYg
Y2FsbExpbmtJbmZvcykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkKKyAg
ICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSkKICAgICAs
IG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlua0luZm9zKFdURk1vdmUoY2Fs
bExpbmtJbmZvcykpCiB7CkBAIC0xMDYsOSArMTEyLDkgQEAgdm9pZCBNYXJraW5nR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZp
c2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAotICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgIGNvbnN0
IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlu
a0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4mJiBrZXlzLCAgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpT
Q2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0
ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5r
SW5mb3MpKQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RG
TW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogICAgICwg
bV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5k
bGVycykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIG1fY29kZU9yaWdpblBvb2woJm1fY29k
ZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXItPmNvZGVPcmlnaW5zKCkpCkBAIC0xMzEsNyArMTM3
LDcgQEAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6On5HQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGEKICNlbmRpZgogfQogCi12b2lkIEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKCkKK3ZvaWQgR0NB
d2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUoVk0mKQog
ewogICAgIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOwogI2lmIEVO
QUJMRShERkdfSklUKQpAQCAtMTU0LDYgKzE2MCw3IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogCiBSZWY8SklU
U3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2Vs
bCogb3duZXIsCiAgICAgYm9vbCBtYWtlc0NhbGxzLApAQCAtMTY1LDE4ICsxNzIsMTggQEAgUmVm
PEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBpZiAoIW1ha2VzQ2Fs
bHMpIHsKICAgICAgICAgLy8gQWxsb2NhdGluZyBDYWxsTGlua0luZm9zIG1lYW5zIHdlIHNob3Vs
ZCBoYXZlIGNhbGxzLgogICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpOwot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKHZtLCBjb2Rl
LCBXVEZNb3ZlKGtleXMpKSk7CiAgICAgfQogICAgIAogICAgIGlmIChjb2RlQmxvY2tGb3JFeGNl
cHRpb25IYW5kbGVycykgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMtPmppdFR5cGUoKSkpOwotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3Mp
LCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRl
SW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBj
ZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxl
cnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CiAgICAgfQogCiAgICAgaWYgKGNl
bGxzLmlzRW1wdHkoKSAmJiBjYWxsTGlua0luZm9zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtKTsKKyAgICAgICAgcmV0dXJu
IEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKTsK
ICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUs
IHZtLCBXVEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRleCA0OGJlZmJjNDg3ZmNhMjU3MGM2NWM5
MjlmOTRkMThlNmNlMWNhOWZkLi5iMDQ2YzhlNzc5YWYwNTM5MDc5MjM2YjY1MGI2MDBiZjY2M2Yx
ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHVi
Um91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBDb2RlT3Jp
Z2luUG9vbDsKIH0KIAorY2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNzIENhbGxMaW5rSW5mbzsKIGNs
YXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogCkBAIC01NCwxMiArNTUsMTIgQEAgY2xhc3MgSklUU3R1
YlJvdXRpbmVTZXQ7CiAvLyBsaXN0IHdoaWNoIGRvZXMgbm90IGdldCByZWNsYWltZWQgYWxsIGF0
IG9uY2UpLgogY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0
aW5lIHsKIHB1YmxpYzoKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJik7CisgICAgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJik7CiAgICAgfkdD
QXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFJlZjxKSVRTdHVi
Um91dGluZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKKyAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBj
cmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShj
b2RlLCB2bSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWaXNpdG9yPgpAQCAtNjgsNiArNjksOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogICAgICAgICBtYXJrUmVxdWlyZWRPYmpl
Y3RzSW50ZXJuYWwodmlzaXRvcik7CiAgICAgfQogICAgIAorICAgIGNvbnN0IEZpeGVkVmVjdG9y
PFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9rZXlz
OyB9CisKICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOwogICAgIAogcHJvdGVjdGVkOgpAQCAtODEs
NiArODQsOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJv
dXRpbmUgewogCiAgICAgYm9vbCBtX21heUJlRXhlY3V0aW5nIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNKZXR0aXNvbmVkIHsgZmFsc2UgfTsKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1fa2V5czsKIH07CiAKIC8vIFVzZSB0aGlzIGlmIHlvdSB3
YW50IHRvIG1hcmsgb25lIGFkZGl0aW9uYWwgb2JqZWN0IGR1cmluZyBHQyBpZiB5b3VyIHN0dWIK
QEAgLTg4LDcgKzkzLDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJ
VFN0dWJSb3V0aW5lIHsKIGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJs
aWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKICAgICBNYXJraW5nR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKAotICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8
SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKKyAgICAgICAgY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+PiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlND
ZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKICAgICB+TWFya2luZ0dDQXdhcmVKSVRTdHVi
Um91dGluZSgpIG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMTA5LDEwICsxMTQsMTAg
QEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwg
OiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdDQXdhcmVK
SVRTdHViUm91dGluZSBCYXNlOwogCi0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2Vw
dGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+Jiwg
QmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgp
OworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVj
dG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXgpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9u
SGFuZGxlcigpIGZpbmFsOwogCi0gICAgdm9pZCBhYm91dFRvRGllKCkgZmluYWw7CisgICAgdm9p
ZCBhYm91dFRvRGllKFZNJikgZmluYWw7CiAgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkg
ZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMzIsNiArMTM3LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdh
cmVKSVQKIC8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAvLyAg
ICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2Rl
LAogLy8gICAgVk0mIHZtLAorLy8gICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYm
IGtleXMsCiAvLyAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogLy8gICAgYm9vbCBtYWtlc0NhbGxz
LAogLy8gICAgLi4uKTsKQEAgLTE0Myw3ICsxNDksNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJ
VAogLy8gd2F5LgogCiBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAot
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBW
TSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKKyAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBt
YWtlc0NhbGxzLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+
JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGluZ0NhbGxTaXRl
SW5kZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDhmNDViMzc3YzE2
OTZhNTE2YTg0MzAwYjg5MjFmNmFkZDZhM2Q0ZGQuLjA2N2FiZmYxZDZhZDIwMDc1NDUxODAwNzdi
MGM0YTU1Yzc3NzIyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC00NjAs
NiArNDYwLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
YXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDMKICNlbmRpZgogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8g
cmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9u
QXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJz
OjplZHg7IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdU
NCBvbiBXaW5kb3dzKQpAQCAtNjUyLDYgKzY1Myw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSNiA9IEFSTTY0UmVnaXN0ZXJzOjp4Njsg
Ly8gcmVnVDYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjcgPSBBUk02
NFJlZ2lzdGVyczo6eDc7IC8vIHJlZ1Q3CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9u
QXJnR1BSMCA9IEFSTTY0UmVnaXN0ZXJzOjp4ODsgLy8gcmVnVDgKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25BcmdHUFIxID0gQVJNNjRSZWdpc3RlcnM6Ong5OyAvLyByZWdUOQogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNNjRSZWdpc3RlcnM6
OngwOyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BS
MiA9IEFSTTY0UmVnaXN0ZXJzOjp4MTsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk02NFJlZ2lzdGVyczo6eDI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNTU1NjMwMzdhZWI1OGZlYzliM2YwM2Y3Y2ZlZTFm
YzBkZTNlY2UyMy4uZGQ4Nzc5ODIxMDAwMWJlNzFmY2JmY2YxMDE0ZDE5YjZmNmQyMDM0MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtOTI0LDYgKzkyNCwxMCBAQCB2b2lkIEpJVDo6
bGluaygpCiAgICAgICAgICAgICAgICAgZG9uZVRhcmdldCwKICAgICAgICAgICAgICAgICBuZXh0
SG90UGF0aFRhcmdldCwKICAgICAgICAgICAgICAgICBzbG93UGF0aFRhcmdldCk7CisgICAgICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAgICAgICAgIGJ5VmFs
Q29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBzbG93UGF0
aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAgICAgICAg
ICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBz
bG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzVj
OWNiOTZiMTM2NTMyZjA4NjFmMmYwYTgwNThlZmM2YjA1NmIyNC4uZmFkYmNiZTJjODQ5NjIxNzQ5
ZWQ4NWYyMDA0MGNjOTc0NDAzZDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yOTQs
NiArMjk0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
Q2FsbDsKICAgICAgICAgfQogCisgICAgICAgIENhbGwgYXBwZW5kQ2FsbChBZGRyZXNzIGZ1bmN0
aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY2FsbChmdW5jdGlvbiwgT3BlcmF0
aW9uUHRyVGFnKTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkK
ICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CkBAIC0zOTUsMzkg
KzQwMCwzOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW50LWNo
ZWNrZWQgYW5kIHplcm8gZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLgogICAgICAgICAv
LyBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4gUmV0dXJucyB0aGUgc2xvdyBjYXNlcy4g
RmFsbC10aHJvdWdoCiAgICAgICAgIC8vIGNhc2UgY29udGFpbnMgcmVzdWx0IGluIHJlZ1QwLCBh
bmQgaXQgaXMgbm90IHlldCBwcm9maWxlZC4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
IHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgSW50MzJT
aGFwZSk7IH0KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRp
Z3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5k
ZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwotICAgICAgICBKdW1w
TGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25z
dCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Cisg
ICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykgeyByZXR1
cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8sIElu
dDMyU2hhcGUpOyB9CisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOwor
ICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBl
IGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0
QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JB
cnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKIAogICAgICAgICAvLyBQcm9wZXJ0eSBp
cyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29udGFpbnMgaW5kZWNpbmcgdHlw
ZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5vdCB5ZXQgbG9hZGVkLiBQcm9w
ZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVyby1leHRlbmRlZC4gQmFzZSBp
cyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLgogICAgICAgICAv
LyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJ
bnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAg
ICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBE
b3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0g
ICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
ICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBl
bWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBK
dW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBl
ID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAg
ICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQ
dXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAg
ICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUpOwogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRB
cnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7
CisgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlKTsK
IAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgRUNNQU1vZGUgZWNtYU1v
ZGUoT3ApOwpAQCAtODcwLDEzICs4NzUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MpOwogI2lm
IE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3Qg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25z
dCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9m
aWxlKE1ldGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgQWRkcmVzcywgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpD
YWxsPgpAQCAtODg2LDYgKzg5NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpD
YWxsPgorICAgICAgICBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7Cisg
ICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0
KTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KICAgICAgICAgc3RydWN0IGlzNjRCaXRUeXBlIHsKQEAg
LTkwNiw2ICs5MjMsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9w
ZXJhdGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRh
cmdldCwgYXJncy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBjYW5ub3QgdXNlIHN0
YW5kYXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRoYW4gNjQgYml0cy4K
KyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5hbWUgRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAjZWxzZSAvLyBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBBcmdzLi4uIGFyZ3MpCkBAIC05MTMs
NiArOTQwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHM8
T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBh
cmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2Fs
bDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0
YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUo
WDg2XzY0KQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtOTIzLDYgKzk1NywxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFi
bGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKE1ldGFkYXRh
JiBtZXRhZGF0YSwgQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxl
KG1ldGFkYXRhLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCBy
ZXN1bHQpOworICAgICAgICB9CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbldpdGhSZXN1bHQoT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MsIEFyZ3MuLi4gYXJncykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKaW5kZXggMWI0OWQ0ODlkYWEyYjc4NmFiNzkzOTJmOWEzNGViYzY0NGNk
YWIxOC4uOTM2ODkyMGQ1N2ViNmEyMTRmNGQ5N2Q2NzI0NmFhZjJiMDdjZmMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0zOTgsOCArMzk4LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+
aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5
cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMiw4ICs0MzIsMTUgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0MKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoT3B0
aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
bmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVy
YXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihpZGVudCkucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOworCiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0
LmxpbmsodGhpcyk7CkBAIC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVy
U2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCk7CiAgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+
ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9u
ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVk
UmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdz
KGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBw
ZW5kKGdlbik7CkBAIC00OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0
ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwg
c2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7
CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRC
eUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChn
ZW4pOwpAQCAtNTI4LDE2ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0Owog
ICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7
Ci0gICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQ
UikpOwogCiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlO
YW1lcy0+ZG9uZS5pbXBsKCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAg
ICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsK
IAorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygp
KSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5z
dHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBjYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdH
UFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkb25lVlJl
ZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBp
dGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVu
dGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
ZG9uZVZSZWcsIHJlZ1QxKTsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX3ZhbHVlLCByZWdUMCk7CiAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2lu
dChqdW1wKCkpOwpAQCAtNTU2LDggKzU3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Qwog
CiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlk
ZW50KS5yYXdCaXRzKCkpOwotCisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAg
ICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2Zp
bGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBlY2M0ZTVmM2ZmNmQw
N2Y5OWMwNzg0ZGQ0YzEyZGViYTBlMjEwZGNmLi4xNTI1MTRhZmRjYWM3ODJhYzljODc0ZTU1MGFm
ZmI5YzcyOGJlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCkBAIC0zOTYsMTIgKzM5NiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVu
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVK
SVQsCiAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAg
ICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwo
KSksCiAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJhdG9yR1BSLCBwYXlsb2FkSXRlcmF0b3JH
UFIpLAogICAgICAgICBuZXh0UmVncywKKyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwpAQCAtNTA1LDEyICs1MDcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIHByZXNlcnZlZFJlZ3Mu
YWRkKHBheWxvYWRWYWx1ZUdQUik7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwK
ICAgICAgICAgICAgIHByZXNlcnZlZFJlZ3MsCiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9u
ZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5
bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgZG9uZVJlZ3MsCisgICAgICAgICAgICBJ
bnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKQEAgLTUzMywxMiArNTM3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAg
ICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBs
KCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0
ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgcmVzdWx0UmVncywKKyAgICAgICAgICAgIEludmFs
aWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAppbmRleCA2ZmE3MjQ0ZWYw
YTA4YzlmMDQ3YTMyMjA0ZjczN2QyOTI4NzE5MDZmLi44Nzc3MGJmODQ4YTNhZmE5ZGRiZjBiMTgy
MjM3ZjEzY2EwZTJiYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaApAQCAtNTIs
MTMgKzUyLDE1IEBAIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwogY2xhc3MgVk07CiAKIGVudW0g
Y2xhc3MgSklUVHlwZSA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgSG9zdENhbGxUaHVuaywK
LSAgICBJbnRlcnByZXRlclRodW5rLAotICAgIEJhc2VsaW5lSklULAotICAgIERGR0pJVCwKLSAg
ICBGVExKSVQKKyAgICBOb25lID0gMGIwMDAsCisgICAgSG9zdENhbGxUaHVuayA9IDBiMDAxLAor
ICAgIEludGVycHJldGVyVGh1bmsgPSAwYjAxMCwKKyAgICBCYXNlbGluZUpJVCA9IDBiMDExLAor
ICAgIERGR0pJVCA9IDBiMTAwLAorICAgIEZUTEpJVCA9IDBiMTAxLAogfTsKK3N0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgd2lkdGhPZkpJVFR5cGUgPSAzOworc3RhdGljX2Fzc2VydChXVEY6Omdl
dE1TQlNldENvbnN0ZXhwcihzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEpJVFR5
cGU+PihKSVRUeXBlOjpGVExKSVQpKSArIDEgPT0gd2lkdGhPZkpJVFR5cGUpOwogCiBjbGFzcyBK
SVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKIHB1YmxpYzoK
QEAgLTE1Niw2ICsxNTgsMTUgQEAgY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxKSVRDb2RlPiB7CiAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEpJVFR5cGU6Oklu
dGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9
CiAKKyAgICBzdGF0aWMgYm9vbCB1c2VTaGFyZWRJQyhKSVRUeXBlIGppdFR5cGUpCisgICAgewor
ICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlU2hhcmVk
SUNJbk9wdGltaXppbmdKSVQoKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGNvbnN0IERPTUpJVDo6
U2lnbmF0dXJlKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCiAg
ICAgZW51bSBjbGFzcyBTaGFyZUF0dHJpYnV0ZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBm
NTJjM2M3NjIxNWFhMzI2ZGRlOWY4OTg1NjI5OGMzZGU2NDYyMmNlLi41OWEzYzMxYTBkNTQ0Mjlk
YjUxYWM2MTVmZjk3MWYwODQ1YTIwYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtNDMsOSArNDMsMTAgQEAg
c3RhdGljIFN0cnVjdHVyZVN0dWJJbmZvKiBnYXJiYWdlU3R1YkluZm8oKQogfQogCiBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzKQogICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9qaXRUeXBlKGpp
dFR5cGUpCiB7CiAgICAgbV9zdHViSW5mbyA9IG1fY29kZUJsb2NrID8gbV9jb2RlQmxvY2stPmFk
ZFN0dWJJbmZvKGFjY2Vzc1R5cGUsIGNvZGVPcmlnaW4pIDogZ2FyYmFnZVN0dWJJbmZvKCk7CiAg
ICAgbV9zdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9IGNhbGxTaXRlOwpAQCAtNjAsMjAgKzYxLDIy
IEBAIHZvaWQgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAogCiAgICAgbV9zdHVi
SW5mby0+ZG9uZUxvY2F0aW9uID0gZmFzdFBhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihtX2RvbmUpOwogCi0gICAgbV9zdHViSW5mby0+c2xvd1BhdGhDYWxsTG9jYXRpb24gPSBzbG93
UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsKKyAgICBp
ZiAobV9zbG93UGF0aENhbGwubV9sYWJlbC5pc1NldCgpKQorICAgICAgICBtX3N0dWJJbmZvLT5z
bG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4obV9zbG93UGF0aENhbGwpOwogICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlv
biA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc2xvd1BhdGhC
ZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJ
VFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1
YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5
cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQogewogICAgIG1fc3R1YkluZm8t
PmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9
IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnRoaXNHUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNl
LnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7
CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigK
IAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0g
ICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1f
c3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsK
IH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3Nl
bWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2l6ZSkKIHsKKyAgICAvLyBXZSBnZW5lcmF0ZSB0
aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBTaGFyZWRJQyBpcyBlbmFibGVkIGJl
Y2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2UgSW5saW5lQWNjZXNzCisgICAgLy8gZm9yIHRoZSBw
ZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogICAgIHNpemVf
dCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKICAgICBt
X3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7CkBAIC0xMDEsOSArMTA2LDkgQEAgdm9pZCBKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6
ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVy
YXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
LSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKLSAgICA6IEpJVEJ5SWRH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5
cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQorICAgIDogSklUQnlJZEdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NU
eXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgLCBtX2lz
TGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51aWQoKSA9PSBjb2RlQmxvY2stPnZtKCkucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLnBheWxv
YWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7CkBAIC0xMTUsOSArMTIwLDkgQEAgdm9pZCBKSVRH
ZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9
CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJs
b2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1
c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
VHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0
aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2FkR1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BS
KCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgCiAgICAgRUNN
QU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICAgICAgOiBKSVRCeUlkR2VuZXJh
dG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVz
ZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAgICAgICAgLCBtX2VjbWFN
b2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQogewpAQCAtMTcxLDE0
ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpz
bG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHBy
b3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQotICAgIDogQmFzZShj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5
VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkK
KyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJ
bmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICBBU1NFUlQoYmFzZS5wYXls
b2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQ
UiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIg
PSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1
bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5m
b0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigpICE9
IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFn
R1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzNSBAQCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogdm9p
ZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9
IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0
VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1f
c3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5VmFs
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc2xv
d1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkp
IHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCB7IH0pOworICAg
ICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9j
YXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVt
cC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBm
YXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAg
fQogfQogCi1KSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0
Y2gpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKK0pJVERlbEJ5SWRHZW5lcmF0b3I6
OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlw
ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BS
UmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKIHsK
ICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAgIEFTU0VS
VChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5w
cm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHVi
SW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigp
ICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CkBAIC0yMjMsMjIgKzIzOCwzMCBAQCBKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVRE
ZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcgog
dm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
JiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1w
ID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9q
aXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2Fs
bChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlJ
ZEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZm
ZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc2xv
d1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkp
IHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCB7IH0pOworICAg
ICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9j
YXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVt
cC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBm
YXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAg
fQogfQogCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFs
dWUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAg
IC8vIEZJWE1FOiBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBw
cm9wZXJ0eS4KICAgICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI1MSwxNSArMjc0
LDE1IEBAIHZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5
cGUsCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BS
UmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIEdQUlJlZyBzY3JhdGNoMSwg
R1BSUmVnIHNjcmF0Y2gyLCBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QpCi0gICAgOiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQorICAgIDog
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQogewog
ICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQ
UiA9IHJlc3VsdDsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3RvdHlw
ZTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQUlJl
ZzsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0yNzks
MjEgKzMwMiwyOCBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yKAogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyht
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2Rl
UHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9q
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7CiB9CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLAotICAgICAg
ICBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKLSAg
ICAKLSAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQYXRoLmxvY2F0aW9uT2Y8
Tm9QdHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6
ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0
ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAg
ICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKKyAg
ICAgICAgZmFzdFBhdGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5v
UHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pKTsKKyAgICB9CiB9CiAKLUpJVEdldEJ5VmFsR2VuZXJh
dG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCi0gICAgOiBCYXNl
KGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJl
Z2lzdGVycykKK0pJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAg
IDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFj
Y2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fcmVz
dWx0KHJlc3VsdCkKIHsKQEAgLTMwMiw2ICszMzIsNyBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZQogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0
dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAgIG1f
c3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZv
LT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKQEAgLTMxMiwyMCArMzQzLDI4IEBAIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJl
bCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwg
SklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fc2xvd1BhdGhK
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7CiB9CiAKLXZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUR2V0QnlWYWxH
ZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6
ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRo
LCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93
UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fc3RhcnQu
aXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFz
dFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0K
IH0KIAotSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBicmFuZCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcg
c3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBBU1NFUlQo
YWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCB8fCBhY2Nlc3NUeXBl
ID09IEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCk7CiAgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CkBAIC0zMzMsNiArMzcyLDcgQEAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJs
b2NrKiBjb2RlQmwKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7
CiAgICAgbV9zdHViSW5mby0+cmVncy5icmFuZEdQUiA9IGJyYW5kLnBheWxvYWRHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
bV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
di5icmFuZFRhZ0dQUiA9IGJyYW5kLnRhZ0dQUigpOwpAQCAtMzQzLDE2ICszODMsMjQgQEAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3IoQ29kZUJsb2NrKiBjb2RlQmwKIHZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9
IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29k
ZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0g
aml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpm
aW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
Cit2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0
LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBCYXNl
OjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8t
Pm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6Zmlu
YWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAppbmRleCBkNmNhNmUxNmEzZjMyYzY0MGY5NmNiMjU1MTk1NTQ4YjBmMmViNjUxLi41ZGI4MGE3
Mzk2ZDg1OTllZjMyNDQyZDM0ZmFjNjBhNjg4NTdjYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC00MSwxMiArNDEs
MTIgQEAgY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0g
Y2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKK2VudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7
CiAKIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyk7CisgICAgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IoQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOwogICAgIAogcHVi
bGljOgogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
c3R1YkluZm87IH0KQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewogICAgIAogcHJvdGVjdGVkOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAg
SklUVHlwZSBtX2ppdFR5cGU7CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiAK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwpAQCAtNzcsMTMgKzc4LDEzIEBAIGNs
YXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igewog
ICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwg
R1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVibGljOgogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1
bXAuaXNTZXQoKSk7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQo
KSk7CiAgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcDsKICAgICB9CiAKQEAgLTEwNiw4ICsx
MDcsOCBAQCBjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSk7Cisg
ICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIApAQCAtMTIwLDggKzEyMSw4IEBAIGNsYXNzIEpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigK
LSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpT
VmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncyk7
CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAor
ICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
dGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CkBAIC0xMzMsOCArMTM0LDggQEAgY2xhc3MgSklUUHV0
QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICB7IH0KIAogICAg
IEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwg
R1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgQ29kZUJsb2NrKiwg
SklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCisgICAg
ICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNo
LCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNTEsOCArMTUyLDggQEAgY2xhc3MgSklURGVsQnlW
YWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVERl
bEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAg
Q29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwg
R1BSUmVnIHNjcmF0Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1w
KCkgY29uc3QKICAgICB7CkBAIC0xNzYsOCArMTc3LDggQEAgY2xhc3MgSklURGVsQnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklURGVsQnlJZEdl
bmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBDb2RlQmxvY2sq
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAg
ICAgewpAQCAtMjAwLDggKzIwMSw4IEBAIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1Ymxp
YyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAg
IEpJVEluQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisg
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1Yklu
Zm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiB9
OwpAQCAtMjExLDggKzIxMiw4IEBAIGNsYXNzIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3Io
KSB7IH0KICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgR1BSUmVnIHJlc3VsdCwKLSAgICAgICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJv
dG90eXBlLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwKKyAgICAgICAgQ29kZUJs
b2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsCisgICAgICAgIEdQUlJlZyB2YWx1ZSwg
R1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaDEsIEdQ
UlJlZyBzY3JhdGNoMiwKICAgICAgICAgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFs
c2UpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwpA
QCAtMjI5LDggKzIzMCw4IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigpIHsgfQog
CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTI1Nyw4ICsyNTgs
OCBAQCBjbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcigp
IHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAotICAgICAgICBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBz
dHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggZTc5
Y2QzNmVmNTdkN2JkY2VjZTE3NjhkMDU4OGFmZWVkODg4NTAxNS4uMTc3ZGI2MDdiMjYxNDQzMDAx
MGU3MzI4NjEzOGYxNDNmN2JmOTJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlN
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBzd2l0Y2ggKGFycmF5TW9k
ZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHJldHVybiBlbWl0SW50MzJMb2FkKGN1
cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0SW50MzJMb2Fk
KGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVERv
dWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwg
YmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAg
ICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7
CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBy
ZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsK
KyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwg
YmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0xMjgsNiArMTI4LDE0IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0CiAgICAgcmV0dXJu
IGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCit7CisgICAgdXBkYXRl
VG9wQ2FsbEZyYW1lKCk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENh
bGwoZnVuY3Rpb24pOworICAgIGV4Y2VwdGlvbkNoZWNrKCk7CisgICAgcmV0dXJuIGNhbGw7Cit9
CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0
aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikK
IHsKQEAgLTE1Nyw2ICsxNjUsMTcgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1
cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVuY3Rp
b24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsK
KyNlbHNlCisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQ
Uik7CisjZW5kaWYKKyAgICByZXR1cm4gY2FsbDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgTWV0
YWRhdGE+CiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYg
bWV0YWRhdGEsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIFZp
cnR1YWxSZWdpc3RlciBkc3QpCiB7CkBAIC0xNzEsNiArMTkwLDIwIEBAIEFMV0FZU19JTkxJTkUg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
SlNWYWx1ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1ldGFk
YXRhPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1l
dGFkYXRhLCBBZGRyZXNzIGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1
bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1l
dGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKSk7Cisg
ICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUik7CisjZW5k
aWYKKyAgICByZXR1cm4gY2FsbDsKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Ns
b3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwg
VmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2Vs
bChyZWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYmQ1
NWEzZDA1MTZkNDZiNjdhZTU5N2I2YzNhNGY1ODdiNWZkZDczMC4uZmIyYWEyODI1YmJmN2YyYzk1
ZjRjNDAwMGQwNzBmNmE0ZDFiZWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0xNjQsMTEgKzE2NCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAg
cmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdUNSwK
ICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChnZW4pOwpAQCAtMTg2LDcgKzE4
NywxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3ImIGdlbiA9IG1faW5zdGFuY2VPZnNbbV9pbnN0YW5jZU9mSW5kZXgrK107CiAgICAgCiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCBy
ZWdUMSk7CisKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkp
IHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5m
bygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9u
PGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+KEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
cmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAgIH0gZWxzZQorICAgICAgICBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzI3LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5B
ZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVz
IGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBl
bWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlw
ZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVu
dEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1
c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogICAg
IEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsxNzQyLDEzIEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJv
dXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHVi
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgp
LCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29k
ZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8
UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQ
dHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YXJlZElDKCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0
aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2Fs
bChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAg
IH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0
eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTc2OSwxMSArMTc4
MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVt
cExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9u
LCBtb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFy
cmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAg
ICAgCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVl
KSkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIU9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBA
IC0xNzk5LDcgKzE4MTMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAg
IGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
RGVmYXVsdDsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ5VmFsSW5mbyksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdH
UFIwLCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZHN0LCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFsSW5mbyk7CiAKICAg
ICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0
aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDhkYjM1OWViZDhjZDA1NjY5NzNi
ODYzYzQ4Njc0MWE3ZmFlMjI0NWUuLmNmMTJkYjJkYjgzMjdmZmQxMjgzNDE3MWY3NzQ4YzliMWE5
NTI5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTE2MiwxMSArMTYyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocHJvdG8pOwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8g
dmFsdWUKICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIEludmFsaWRHUFJSZWcsCiAg
ICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDIxYWYzNjUzMDlkMjc5MzM3MWRl
NmViNDAwYjQ0NjhhYTgzNzBiMjUuLjAyOTJiOWI4YzRlY2UyN2E4MTY3NTAwYTM1ZDQxMjU2NTQ5
ZDYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApA
QCAtMTAwMiw3ICsxMDAyLDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Q
dXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKHJl
c3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBl
dmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0
cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0
cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOworICAgICAg
ICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRy
KE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNl
VmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KQEAgLTEw
OTQsNyArMTA5NywxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlmIChyZXN1bHQg
PT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0
cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsK
LSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKKyAgICAg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVy
aWMpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNt
YU1vZGUpKTsKQEAgLTEyNzgsNyArMTI4NCwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0Kgog
ICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXAp
IHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMo
KSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENh
bGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBv
cGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOwogICAgIH0KIAogICAgIHNjb3BlLnJlbGVh
c2UoKTsKQEAgLTI1NjcsNyArMjU3NiwxMSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgRW5jb2RlZEpTVmFsdWUsIChKUwogICAg
ICAgICBpZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTAKICAgICAgICAgICAgIHx8
IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAgIC8v
IERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgotICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlS
ZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJs
b2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJu
QWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVy
dHlHZW5lcmljKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA2NDQ2N2U5YTI1ZTE0NzdlMWVjMDYz
NWQ0MDk3NTRkOGU3NTM5MmVmLi43ZWMzNjMzNGZiMThiZGRjNGZhN2RlMDYxMzRhMDA5ZjRiYzQ5
Yzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2lu
Y2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKQEAgLTY5LDEyICs3MCwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICAgICAgSklU
R2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
c3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZXN1bHRSZWdzLCByZWdUMik7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFu
dEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0lu
dDMyID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgICAgICBt
X2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC05MywxNCAr
OTcsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5
VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICAg
ICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRl
eCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCBkc3QsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IHByb2ZpbGUsIHJlZ1QwLCByZWdUMSk7CiAjZWxzZQogICAgICAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZTsKICAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMTgsNyArMTIzLDkgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUp
LCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRC
eVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAog
ICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7
CkBAIC0xMzgsNyArMTQ1LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAg
LTE1Nyw5ICsxNjUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVy
IG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9u
IGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0Lgot
ICAgIGppdC5yZXQoKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAg
ICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xODIsMTAgKzE5MSwxMyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QwKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1
ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAg
ICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNs
b3dDYXNlKCk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7
CkBAIC0yMDEsOCArMjEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIAogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4Kytd
OwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQpAQCAtMjExLDYgKzIyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVy
YXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
IApAQCAtMjI2LDcgKzIzOCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxs
IGNhbGw7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjQ1LDcgKzI1OSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFy
ZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsK
IAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFy
ZWRJQygpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC0yNjMsOSArMjc4LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFy
Z2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQg
dG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAg
IGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtMjg1
LDEwICszMDEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoYmFzZUdQUiwgYmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZh
dGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHJlZ1QyKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRT
bG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiAKICAg
ICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ug
c2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCkBAIC0zMDIsOCArMzIxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdl
biA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsK
ICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKQEAgLTMxMiw2ICszMzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQog
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIGJyYW5kR1BSKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVP
ZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTMyOCw5ICszNDcsMTIgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlv
blRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1
bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7
CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKICNlbmRpZgorCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMzQ2LDEwICszNjgsMTMgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAK
ICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIU9wdGlvbnM6
OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNj
ZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1Nyw4ICszODIsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudAogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9w
cml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4
OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJh
bmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAt
MzY3LDYgKzM5MSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiAgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNl
R1BSLCBicmFuZEdQUik7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
T3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CiAKQEAgLTM4Myw3ICs0MDgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudAogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0
eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywg
RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYg
KCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC00MTUsOCAr
NDQyLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDAsIGJhc2UpOwogICAgIFBhdGNoYWJsZUp1bXAgbm90SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0
eU5hbWVJc0ludGVnZXJDb25zdGFudCkgewotICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFi
bGVKdW1wSWZOb3RJbnQocmVnVDEpOwotICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7Cisg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAgICAgICAgICBhdXRvIGlz
SW50MzIgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1
dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJl
Z1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgfQogICAg
ICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgICAgICB6ZXJvRXh0ZW5k
MzJUb1dvcmQocmVnVDEsIHJlZ1QxKTsKICAgICB9CkBAIC00MzIsMjMgKzQ2NSwyNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmlsZSk7
CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9
IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7
CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQ1JBU0goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dDYXNl
KGJhZFR5cGUpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRk
U2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAg
ICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTQ1Nyw3ICs0OTEsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmlj
Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
QnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZp
cnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC00NjUsNyArNDk5LDE2
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBi
eXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
OwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1
c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMo
KSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVj
dFR5cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBl
KSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2Jh
ZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXND
b3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRl
eGluZ1NoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAg
ICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSksIHJlZ1QyKTsKICAgICBKdW1wIG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFs
LCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSk7CkBAIC01MTUsNyArNTU4LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZh
bHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTUyMyw3ICs1NjYsMTYgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSkKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFy
cmF5U3RvcmFnZVNoYXBlKSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElDKCkpIHsKKyAg
ICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0g
YnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsK
KyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJl
Y3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwor
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJl
Z1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkp
OwogCkBAIC01NjgsOCArNjIwLDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRC
eVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwogCiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0
eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdp
dGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNl
IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVk
dWNlIGNvZGUgc2l6ZS4KQEAgLTU4MCw3ICs2MzIsMTMgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5k
LAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIGdlbi5zbG93UGF0aEp1
bXAoKS5saW5rKHRoaXMpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xv
d1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkp
OworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAg
ICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5m
bzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDEsIHJl
Z1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9
IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBw
cm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtNjE5
LDYgKzY3Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBv
cGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVnVDIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMy
KGVjbWFNb2RlLnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAg
LTYzOCw4ICs2OTcsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBhdXRvKiBvcGVyYXRpb24gPSBp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC02NTcsNyAr
NzE3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5ICs3MzYs
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
cHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIg
bWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24g
aW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0g
ICAgaml0LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBq
aXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRf
eHh4X3ByZXBhcmVDYWxsIik7CkBAIC02OTYsOCArNzU4LDEzIEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKLSAgICBQ
YXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwotICAgIGFkZFNsb3dD
YXNlKGZhc3RQYXRoSm1wKTsKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wOworICAgIGlm
IChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVz
cygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Cisg
ICAgICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICB9CiAgICAgCiAgICAgTGFiZWwg
ZG9uZSA9IGxhYmVsKCk7CiAgICAgCkBAIC03MjQsNiArNzkxLDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0z
MihwdXRLaW5kLnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0
ZWNvZGVJbmRleCk7CiAKQEAgLTc0Myw3ICs4MTEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZQogICAgIG1vdmUoVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXpl
KTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCkBAIC03NjEsNyArODMxLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcK
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkp
CisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKQEAgLTc3OSw5ICs4NTAsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5
VmFsSW5mb0dQUiwgcHV0S2luZEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJl
Y3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5n
IHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRH
UFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFn
KTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJ
VGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxs
Iik7CkBAIC04NDYsMTEgKzkxOCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDEsIGJhc2UpOwogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
Ci0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7
CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMywg
cmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAg
ICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGJv
eEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC04ODEsNiArOTU2LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsK
ICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC04
OTgsMTUgKzk3NCwxNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsK
ICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1Zh
bHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTkxOCw3ICs5
OTUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtOTM1LDkgKzEwMTMs
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0
aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQK
LSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5y
ZXQoKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LmZhckp1
bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxf
YnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTk1NiwxMCArMTAzNSwxMyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOwogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOwogICAgIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAg
ICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyhyZWdUMCkpOwpAQCAtOTkxLDYgKzEwNzMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9k
ZS52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CiAKQEAgLTEwMDgsMTUgKzEwOTEsMTYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rl
bF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21h
TW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2Rl
bF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5W
YWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAK
LSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAg
Ym94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCkBAIC0xMDI4LDcgKzExMTIsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAg
IC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwpAQCAtMTA0NSw5ICsxMTMwLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNt
YU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBG
SVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRh
cmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50
IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJ
QygpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAg
ICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKQEAgLTEwNjgsOCAr
MTE1NCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVz
dWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdU
MCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTA5NCw2ICsxMTgwLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25UcnlHZXRC
eUlkT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09
IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTExMTAsNyArMTE5Nyw5IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0
aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
KT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1p
emUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsxMjIyLDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhy
ZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBB
Y2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVz
dWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTYwLDYgKzEyNDksNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZQogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJv
ZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplLCByZXN1bHRWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTE3Niw3ICsx
MjY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
ICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVH
UFIpOwpAQCAtMTIwNyw4ICsxMjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2Nv
ZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMy
NSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVn
cywgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjYwLDYg
KzEzNTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBy
ZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAj
ZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNv
ZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTI3NSw3
ICsxMzY4LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVl
R1BSKTsKQEAgLTEyOTQsNyArMTM4OSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAg
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9m
ZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CkBAIC0xMzExLDkgKzE0MDcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGpp
dC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X2dldF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTMzNyw2ICsxNDM0LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUo
bWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLCByZXN1bHRWUmVnLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygp
LCByZWdUMCwgcmVnVDEsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UK
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTM1
NCw3ICsxNDUyLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTM3Myw3ICsxNDczLDggQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgog
ICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAo
IU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIz
OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEzOTIsOSArMTQ5MywxMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEg
dGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAv
LyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsK
KyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRk
cmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX3ByZXBhcmVDYWxsIik7CkBAIC0xNDE4LDExICsxNTIwLDEwIEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRl
Y29kZSksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAgICAgICAgZGlyZWN0ID8gUHV0S2lu
ZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKLSAgICAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTQ0OCw2ICsxNTQ5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2wKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0
aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAg
LTE0NjUsNyArMTU2Nyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFw
cGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtMTQ4MSw3
ICsxNTg1LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTE1MDAsOSAr
MTYwNSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGpp
dC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X3B1dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjI3LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAg
IEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU0Niw2ICsxNjUyLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Cisg
ICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogCkBAIC0xNTY0LDcgKzE2NzEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJ
ZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVy
blZhbHVlR1BSKTsKQEAgLTI3NTQsOCArMjg2Myw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwK
ICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNt
YU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1QxLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI3NjUsNyArMjg3NCwxMyBAQCBK
SVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVj
b2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHBy
ZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9h
ZCB0aGUgdGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAg
Z2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhG
dW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQor
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0
cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwog
ICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjgxNywyOSArMjkzMiwyOSBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBj
YXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRE
b3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGln
dW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJh
cnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToK
LSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJy
aWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgVHlwZWRB
cnJheVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBlRm9ySklUQXJyYXlNb2RlKGFycmF5TW9kZSk7
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIHR5cGUpOworICAgICAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6
IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJheSBpbiBJQwogICAgICAgICAg
ICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5IC8gQmlnVWludDY0QXJyYXkgbmV2ZXIgY29t
ZXMgaGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjExODMKICAgICAgICAgICAgIEFTU0VSVChpc0Zsb2F0KHR5cGUpKTsKLSAgICAg
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFy
cmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIsIHR5cGUpOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4NjYsOCArMjk4MSwxNCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRT
dHViUm91dGluZVB0clRhZywKICAgICAgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsX2RpcmVj
dCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jayku
ZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgfQotICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRp
b25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5B
ZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25Q
dXRCeVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7Cisg
ICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29k
ZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsK
KyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJ
bmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRh
Zz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJl
c3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0K
IH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNs
YXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3
byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KQEAgLTI5MDYsOCArMzAyNywx
MyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQQogICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZh
dGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVy
biBwb2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5n
KCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAg
ICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YXJlZElDKCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0
aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAgIH0KIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0yOTQ0LDE1ICszMDcwLDIwIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzCiAgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNo
ZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0
S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51
aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1
cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9IGdl
bi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
YnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3Qg
PyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVy
aWMpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBieVZhbElu
Zm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0
ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5l
cmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVz
c1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVy
bkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25z
dW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAog
Ly8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2
YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hl
ZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENh
Y2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk2OCw3
ICszMDk5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5n
LCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29y
cmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVT
aGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+
bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAg
IGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1t
MzIoRG91YmxlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7
CisKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgp
KSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWws
IHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5n
dGgoKSkpKTsKICAgICBsb2FkRG91YmxlKEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGlt
ZXNFaWdodCksIGZwUmVnVDApOwpAQCAtMjk3Nyw3ICszMTE3LDcgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSkKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENv
bnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
QnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlKQogewogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTk1LDcg
KzMxMzUsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKIAogICAgIEp1bXBMaXN0IHNsb3dD
YXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhp
bmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVNo
YXJlZElDKCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBp
c0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhw
ZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFs
SW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAg
ICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVz
dGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0
ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9m
UHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJbmRleChzY3JhdGNoLCBwcm9w
ZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDA0LDcgKzMxNTMsNyBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJl
Z1QwOwpAQCAtMzAyMyw3ICszMTcyLDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlT
dG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJheVN0b3Jh
Z2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJl
Y3RUeXBlID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAg
IGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmso
dGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNo
YXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFy
cmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKIAogICAgIGxvYWRQdHIoQWRk
cmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Mo
c2NyYXRjaCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTMwMzUs
NyArMzE5Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlU
eXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOwpAQCAtMzA2MCw3ICszMjE4LDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50
VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0
eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKworICAgIGlmIChPcHRpb25zOjp1c2VTaGFy
ZWRJQygpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXND
b3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0
eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1
dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlw
ZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNo
MzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVP
dXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpAQCAtMzExMSw3ICszMjc5LDcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7
CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAg
ICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAt
MzEzNiw3ICszMzA0LDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5
UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAgICAgSnVtcExpc3Qg
c2xvd0Nhc2VzOwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRB
cnJheVR5cGUodHlwZSkpKTsKKworICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRJQygpKSB7Cisg
ICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9
IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRB
cnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZi
eVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0
Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNj
cmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwogICAg
IGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHBy
b3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1Nw
ZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIyYzc3MDQyODlhYmIwODJmOWRkZjIw
ZDhjMmZmNjY1ZGZkNTZlMi4uMjZmNjdjN2JjYzA5MmJkMmY1OWIzNGVkNWQ3YzZiOGEwMGQ5NzM4
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQo
YmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKICAgICBK
SVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBiYXNlUmVn
cywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgSW52
YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5k
KGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBwcm9w
ZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlk
R1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTI1Nyw4ICsyNTcsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MpOwor
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBpZiAo
aXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRH
ZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MpOworICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CkBAIC0zOTMsOCArMzkzLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFz
ZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRl
QnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
YmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
LmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwog
CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzKTsK
KyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlw
ZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTY2
MCw4ICs2NjAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZh
bGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBt
X2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzAxLDggKzcwMSw4IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1
bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6
OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdl
bik7CkBAIC03NDgsOCArNzQ4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBt
X2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzkxLDggKzc5MSw4IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKTsKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOworICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVz
dWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDQsIHJlZ1QzKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
c1dpdGhUaGlzLmFwcGVuZChnZW4pOwpAQCAtODM1LDkgKzgzNSw5IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAorICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LCBJbnZhbGlkR1BSUmVnLAogICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9k
ZSgpLCBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwogICAg
IAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTg4Miw4ICs4ODIsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAK
ICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YlJvdXRpbmUuaAppbmRleCA4ODE0NjQwZTZhY2NlYWMxYjliMDY4YTQwYzg5NDI4MzQ4
NmNkZmFiLi40OWE2ZDUwNjdlMjNkMjU0YWI0ZjBjMzU2OTgwNzZkYTlhMDc1MDg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCkBAIC0zNSw2ICszNSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAor
Y2xhc3MgQWNjZXNzQ2FzZTsKKwogLy8gVGhpcyBpcyBhIGJhc2UtY2xhc3MgZm9yIEpJVCBzdHVi
IHJvdXRpbmVzLCBhbmQgYWxzbyB0aGUgY2xhc3MgeW91IHdhbnQKIC8vIHRvIGluc3RhbnRpYXRl
IGRpcmVjdGx5IGlmIHlvdSBoYXZlIGEgcm91dGluZSB0aGF0IGRvZXMgbm90IG5lZWQgYW55CiAv
LyBoZWxwIGZyb20gdGhlIEdDLiBJZiBpbiBkb3VidCwgdXNlIG9uZSBvZiB0aGUgb3RoZXIgc3R1
YiByb3V0aW5lcy4gQnV0CkBAIC01Niw3ICs1OCw3IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lIHsK
ICAgICB9CiAgICAgCiAgICAgdmlydHVhbCB+SklUU3R1YlJvdXRpbmUoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWJvdXRUb0RpZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYm91dFRvRGllKFZNJikg
eyB9CiAgICAgCiAgICAgLy8gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGlzIGNvcHlhYmxlLCBidXQg
YXQgdGhlIGNvc3Qgb2YgcmVmZXJlbmNlCiAgICAgLy8gY291bnRpbmcgY2h1cm4uIFJldHVybmlu
ZyBhIHJlZmVyZW5jZSBpcyBhIGdvb2Qgd2F5IG9mIHJlZHVjaW5nCkBAIC05OCw2ICsxMDAsOCBA
QCBjbGFzcyBKSVRTdHViUm91dGluZSB7CiAgICAgLy8gZGVzdHJveWVkLgogICAgIHZpcnR1YWwg
Ym9vbCB2aXNpdFdlYWsoVk0mKTsKIAorICAgIHZpcnR1YWwgY29uc3QgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5jcHAKaW5kZXggMWY3NjA2ODYyNzNkZGE4MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4u
NDQ3MDU1YmZlOGFiZWZhYTU2ZmU3OGU4MDY4ZDJjYzY2ODkzMjNiMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nl
c3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiRnVsbENvZGVPcmlnaW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYs
IFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAg
ICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYg
Y2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlUmVmLCB2bSwgeyB9KQogICAgICwgbV92YXJpYW50cyhjYXNlcy5zaXplKCkpCiAg
ICAgLCBtX2Zhc3RDb3VudHMoV1RGTW92ZShmYXN0Q291bnRzKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDM1OTNjY2U4ODYwODgwMTgzNDZhODA4ZTVmODY0Nzg3
MWE0NDFiMjkuLjAxZDkyYzFiOGYyY2NkNWNlNDA4NDI0MTNjZTQyNmVhNDNmZTZhYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzEsOCArNzEsMTAgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQ
dXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJ
bnRlcm5hbFB0clRhZz4gY2FsbCkKK3N0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsKQog
eworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJldHVybiBzdHVi
SW5mby5tX3Nsb3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFnPigpOwogI2lmIEVO
QUJMRShGVExfSklUKQogICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpG
VExKSVQpIHsKICAgICAgICAgRnVuY3Rpb25QdHI8SklUVGh1bmtQdHJUYWc+IHRhcmdldCA9IE1h
Y3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldDxKSVRUaHVua1B0clRhZz4oY2FsbCk7CkBAIC0x
MDUsNiArMTA3LDE1IEBAIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hDYWxsKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlv
blB0clRhZz4oKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkNhbGw8SlNJ
bnRlcm5hbFB0clRhZz4gY2FsbCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxs
ZWVGdW5jdGlvbikKK3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAg
ICAgIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlvbiA9IG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFnZ2Vk
PE9wZXJhdGlvblB0clRhZz4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7Cit9
CisKIGVudW0gSW5saW5lQ2FjaGVBY3Rpb24gewogICAgIEdpdmVVcE9uQ2FjaGUsCiAgICAgUmV0
cnlDYWNoZUxhdGVyLApAQCAtMjA5LDcgKzIyMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoK
ICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAg
Y29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUgfHwg
a2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDsKIAotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5l
d0Nhc2U7CiAKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgpIHsKICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZUNlbGwpKSB7CkBAIC0yMTks
NyArMjMwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgICAg
IGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVBcnJheUxl
bmd0aChzdHViSW5mbywganNDYXN0PEpTQXJyYXkqPihiYXNlQ2VsbCkpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5
RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEFy
cmF5TGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOCwxMSBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VDZWxsKSkg
ewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6
OlVuc2V0ICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8p
KSB7CisgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlw
ZTo6VW5zZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJs
ZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5l
cmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChzdHVi
SW5mbyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9w
cmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mby5pbml0U3RyaW5nTGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBA
IC0yODIsMTIgKzI5NCwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAg
ICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCiAgICAgICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAgICAgICAgICAgICAgJiYgIWxv
YWRUYXJnZXRGcm9tUHJveHkpIHsKLQogICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29k
ZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlBY2Nlc3Moc3R1Yklu
Zm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpHZXRCeVNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmllcjo6
ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VW
YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9w
ZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtp
bmQpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dl
dEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0R2V0
QnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQo
KSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVM
YXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC00MjUsNyArNDM2LDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKgogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRo
SnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7
Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Cisg
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzksNyArNDUwLDcgQEAgdm9p
ZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTVmFsdWUgYmEKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlR2V0QnkoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywga2luZCkg
PT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2V0QnlGdW5j
dGlvbihraW5kKSk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2lu
ZCkpOwogfQogCiAKQEAgLTUyOSw3ICs1NDAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAog
ICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZh
bHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVC
bG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihy
ZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU0MCw3ICs1NTEsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNl
LCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYg
KHRyeUNhY2hlQXJyYXlHZXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZSwgaW5k
ZXgsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uR2V0QnlWYWxHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5VmFsR2Vu
ZXJpYyk7CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlv
bihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5
cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCkBAIC02MzYsNyArNjQ3LDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQgPT0g
UHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gUHV0S2luZDo6RGly
ZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hl
OwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAg
ICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5iYXNlKCkg
PT0gYmFzZVZhbHVlICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKSkgewogICAgICAgICAgICAgaWYg
KHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkgewpAQCAt
NjU4LDcgKzY2OSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxm
UHJvcGVydHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2VsZlBhdGNoLCBv
bGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVl
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0
S2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBs
YWNlKGxvY2tlciwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCks
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNo
ZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC04MDEsNyArODEyLDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTgxNSw3ICs4MjYsNyBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZVB1
dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3Qs
IHB1dEtpbmQpKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5j
dGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkK
QEAgLTg0Niw3ICs4NTcsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxl
dGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICBpZiAo
b2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgIHJldHVybiBSZXRyeUNh
Y2hlTGF0ZXI7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7
CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90
LmlzRGVsZXRlSGl0KCkpIHsKICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9
IGludmFsaWRPZmZzZXQ7CkBAIC04NzQsNyArODg1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2MKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKICAgICAgICAgICAgIExPR19JQygoSUNF
dmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKLSAgICAgICAgICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNv
ZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg5MSw5ICs5MDIsOSBA
QCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAgIGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVy
dHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVl
LmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlmIChraW5kID09IERlbEJ5S2lu
ZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5l
cmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdl
bmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7
CiAgICAgfQogfQogCkBAIC05MzcsNyArOTQ4LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5l
KSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNo
LCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2Up
KTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlG
b3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgICAgICAgICAgICAg
ICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBz
bG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTk4NCw3ICs5OTUs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAKICAgICAgICAg
TE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorICAgICAgICBS
ZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgICAg
IHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nlc3NDYXNl
OjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQgPyBzbG90LmNhY2hlZE9mZnNldCgpIDog
aW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNl
KGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHJv
cGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKQEAgLTk5Myw3ICsxMDA0LDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgTE9HX0lDKChJ
Q0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQs
IHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTAwNyw3ICsxMDE4LDcgQEAgdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCoKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5
Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHByb3BlcnR5
TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbklu
QnlJZCk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0
ZUJyYW5kKApAQCAtMTAzMiw3ICsxMDQzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0
cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kQWRkQWNjZXNz
Q2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNl
OjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1
cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7CiAK
ICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3
Q2FzZSkpOwogCkBAIC0xMDQwLDcgKzEwNTEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
Q2hlY2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEwNTQsNyArMTA2NSw3IEBAIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJy
YW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrCiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYg
KHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VP
YmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAgICAgcmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKQEAgLTEwOTEsNyArMTEwMiw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAg
ICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6
U2V0UHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNv
ZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICBS
ZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFu
ZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CiAK
ICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3
Q2FzZSkpOwogCkBAIC0xMDk5LDcgKzExMTAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlNl
dFByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTExMyw3ICsxMTI0LDcgQEAgdm9pZCByZXBhdGNoU2V0
UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLAogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
IAogICAgIGlmICh0cnlDYWNoZVNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCAgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVV
cE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5l
cmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOwog
fQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApAQCAtMTEz
Myw3ICsxMTQ0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VP
ZigKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2VsbCgp
OwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVm
UHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKICAgICAgICAgaWYg
KHByb3RvdHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
dm0sIHZhbHVlKSkgewpAQCAtMTE2OCw5ICsxMTc5LDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAot
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihy
ZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KQorICAgICAgICAgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHJlc3VsdC5jb2RlKCk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKKyAg
ICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAK
QEAgLTExODUsNyArMTIwMCw3IEBAIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoCiB7CiAgICAgU3Vw
ZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICh0cnlDYWNo
ZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHByb3RvdHlw
ZVZhbHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpbmtTbG93UGF0aFRv
KFZNJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4gY29kZVJlZikKQEAgLTEyMDIsNyArMTIxNyw3IEBAIHN0YXRp
YyB2b2lkIGxpbmtTbG93Rm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFs
VGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlua1Nsb3dQ
YXRoVG8odm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8u
c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2
bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKIH0KIAogc3RhdGljIEpTQ2VsbCogd2Vi
QXNzZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKQEAgLTEzMjAsNyArMTMzNSw3IEBAIHN0YXRp
YyB2b2lkIGxpbmtWaXJ0dWFsRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJ
bmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0g
ICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRl
KHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiAgICAgY2Fs
bExpbmtJbmZvLnNldENsZWFyZWRCeVZpcnR1YWwoKTsKIH0KIApAQCAtMTY0MSwxNCArMTY1Niwy
NiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogCiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0QnlLaW5kIGtpbmQp
CiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2lu
ZCkpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBH
ZXRCeUtpbmQ6Ok5vcm1hbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6VHJ5OgorICAgIGNhc2UgR2V0
QnlLaW5kOjpXaXRoVGhpczoKKyAgICBjYXNlIEdldEJ5S2luZDo6RGlyZWN0OgorICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8p
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CisgICAg
Y2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRl
TmFtZUJ5SWQ6CisgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NO
b3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KIH0KIAogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNs
dHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTsKLSAgICBGdW5jdGlv
blR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBl
PihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXpl
ZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxU
YXJnZXQoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24p
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIEZ1bmN0aW9uVHlwZSBvcHRpbWl6ZWRGdW5jdGlv
bjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0
IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXpl
KQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRp
bWl6ZTsKQEAgLTE2NjUsNDUgKzE2OTIsNDggQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAgb3B0aW1p
emVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7CiAg
ICAgfQogCi0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKLSAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6
OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lk
IHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3Jt
YWwpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAg
ICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbHNlCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsK
KyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVD
b2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXNldFBhdGNoYWJs
ZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQorc3RhdGljIHZvaWQgcmVzZXRQYXRj
aGFibGVKdW1wKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJs
ZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBpZiAoY29kZUJs
b2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgZWxzZQorICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOwogfQogCiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVt
cEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCi12b2lkIHJlc2V0SW5zdGFuY2VP
ZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIHJl
c2V0UGF0Y2hhYmxlSnVtcChzdHViSW5mbyk7CisgICAgcmVzZXRQYXRjaGFibGVKdW1wKGNvZGVC
bG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsK
KyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVD
b2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5k
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0g
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXpl
KTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxp
bmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCmluZGV4IDMxMzc5ZGM0ZTVhOWRjMmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1MWEuLjNhMTlm
ZDM2NTQ5ZDFhODQ4MDlmOTRkYWRhMmRmYmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVy
ZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxv
Y2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGQ5NDk3ZWJkNGYwYmE2ZjYyNTc5ZGNkNTQyM2E3
Yjk4NDdlOTQ0ZTIuLjdlMGU1OTMyNzQ1YjhhYWVkYjk5MGQ5OGRhNjYyNzc4NDM1Y2UyMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM2LDYg
KzUzNiw4IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYo
Qm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICB2KEJvb2wsIHVzZVRvcExldmVsQXdhaXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRoZSBhd2Fp
dCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYoQm9vbCwg
dmVyYm9zZUV4ZWN1dGFibGVQb29sQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
XAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUMsIGlzQVJNNjQoKSwgTm9ybWFsLCBudWxscHRyKSBc
CisgICAgdihCb29sLCB1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDYwZjk4ZjU2M2E3NmVkZWRhNTJhMDcyODgzZTRiYWZlYmQ3
MmRlZTUuLjljNTRjYjQ0ODZlNmU0NmE0YTRmODE0NmM3MDIwMGFlNTAwYjk4Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJWTS5oIgogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2lu
Y2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUg
IkJpZ0ludE9iamVjdC5oIgpAQCAtNTY2LDYgKzU2Nyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNz
KQogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0
aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7CiAgICAgICAgIGdldENUSUludGVybmFsRnVu
Y3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBtX3NoYXJlZEpJ
VFN0dWJzID0gbWFrZVVuaXF1ZTxTaGFyZWRKSVRTdHViU2V0PigpOwogICAgIH0KICNlbmRpZiAv
LyBFTkFCTEUoSklUKQogCkBAIC02NDksNiArNjUxLDggQEAgVk06On5WTSgpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyAgICBtX3No
YXJlZEpJVFN0dWJzID0gbnVsbHB0cjsKIH0KIAogdm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZENhbGxiYWNrKHZvaWQqIGFyZ3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggMmQzY2Q0NjY4ODhiY2UzYWZiNWE4ODkzNjE3Mjc1OGYxOGM5M2ZhNi4uOWZkNDkw
ZTUyOTM0YTI5YjIyMGU2MDk4NWQyMWYwZjRkYTZlYTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC0xNzQsNiArMTc0LDcgQEAgY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7
CiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwogI2VuZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOwor
Y2xhc3MgU2hhcmVkSklUU3R1YlNldDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBT
b3VyY2VQcm92aWRlcjsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CkBAIC04NDYsNiArODQ3
LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMg
RG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKICNlbmRpZgorICAgIHN0ZDo6dW5p
cXVlX3B0cjxTaGFyZWRKSVRTdHViU2V0PiBtX3NoYXJlZEpJVFN0dWJzOworCiAgICAgTmF0aXZl
RXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxl
KiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rp
b24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAo=
</data>
<flag name="commit-queue"
          id="451259"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429959</attachid>
            <date>2021-05-27 17:13:48 -0700</date>
            <delta_ts>2021-05-27 17:30:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527171347.patch</filename>
            <type>text/plain</type>
            <size>421422</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5jODI1NWZlMTFmNjExOWJh
MmQ2NDg0MDE2M2RlOWUyODM3YjgzZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNTIgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNl
OjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9t
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjbG9uZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpTaGFy
ZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1
YlNldDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleTo6
S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjplcXVh
bCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9y
OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5z
bGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRy
YW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVy
VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjphZGQp
OgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpyZW1vdmUpOgorICAgICAgICAoSlND
OjpTaGFyZWRKSVRTdHViU2V0OjpmaW5kKToKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
aDoKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlc2V0SklURGF0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlU2hh
cmVkSUMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpnZXRTY3JhdGNoUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXApOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFj
Y2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xv
bmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldDo6aGFzaCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omlu
c3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpz
dWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKToK
KyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZSk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGxXaXRob3V0RXhjZXB0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJv
dXRUb0RpZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFwcGVuZENhbGwpOgor
ICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6
OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2gpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250
ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFy
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtl
Q2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRo
Q2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRW
aXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0NvbGxlY3Rpb24pOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hFeHRyYVJlZ0FyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaE5vbkFyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRHUFJFeHRyYUFyZyk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkU3RhY2tBcmcpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFBva2UpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBva2VPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjptYXJz
aGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50
c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNFbnRyeUltcGwpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbCk6CisgICAgICAgICogaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSk6Cisg
ICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJh
dG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGpp
dC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZVNoYXJlZElDKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpK
SVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUQnlJ
ZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpK
SVRHZXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpK
SVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
OjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6
OkpJVEdldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChK
U0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
cml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0
ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFy
cmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVs
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAo
SlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9h
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFib3V0
VG9EaWUpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6a2V5cyBjb25zdCk6CisgICAg
ICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRQdXRJQ0NhbGxU
YXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2FsbCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlEKToKKyAg
ICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQ
cml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2Yp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OmxpbmtT
bG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAoSlNDOjpy
ZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6
cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6CisgICAgICAg
IChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0
U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3Ry
dWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5k
ZXggZTUxNzU3ZTliOGZjNjQyODc4MjdjMTZkMDJkMjFjYzIxOGZiMTMyNi4uODNjYjM2ZDA2Zjgz
MTJjODk1ZjZhNDliMjU2YmJlYzM0NjI3M2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTIzNCw4ICsyMzQsOCBAQCBjbGFzcyBMaW5rQnVm
ZmVyIHsKICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIENvZGVMb2NhdGlvbkNhbGw8dGFn
PiBsb2NhdGlvbk9mKENhbGwgY2FsbCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYWxsLmlzRmxh
Z1NldChDYWxsOjpMaW5rYWJsZSkpOwotICAgICAgICBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENh
bGw6Ok5lYXIpKTsKKyAgICAgICAgLy8gQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6Okxpbmth
YmxlKSk7CisgICAgICAgIC8vIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOwog
ICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbDx0YWc+KGdldExpbmtlckFkZHJlc3M8dGFn
PihhcHBseU9mZnNldChjYWxsLm1fbGFiZWwpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVmZjc4MjI2MmU3MTg1Yjg3
NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNTc5ZDg1OGRkNzcyYzY1N2IyYmI0YzVhNzRhYmExMDNm
ZWRmYjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3
IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIs
IG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
OwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBu
ZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmll
ciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAor
UmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAgICBW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3
U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQs
IG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2Uo
KQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1
Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHN3
aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09iamVj
dCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRpdGlv
blNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiArMTA2Myw4IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9j
YXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAg
aWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEzMTcs
NiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0
eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BS
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBA
IC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQg
QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgVk0mIHZtID0gc3Rh
dGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBNb2R1
bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0
MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgorICAg
IGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJp
YzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2Ug
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nl
c3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7
CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7CisgICAgICAgICAgICBpZiAo
IWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gc3Ry
dWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3VyclN0cnVjdHVy
ZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgIGN1cnJTdHJ1
Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNo
YWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpX
YXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKKyAgICAgICAgICAgIHN0
YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5vdywgd2Ugb25seSBhbGxv
dyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVp
dmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlk
aXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgLy8g
VGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0
IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgICAgIC8vIEFj
Y2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1ZS4KKworICAgICAgICAg
ICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1ldDogIiwgY29uZGl0aW9u
LCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0IGhhcyBhIHdlYWsgcmVm
ZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVyZS4KKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlNDZWxsPih2
bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAtMTQxNyw3ICsxNTAyLDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOwog
CiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVX
YXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb25k
aXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJsb2NrLCBj
b25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTU4Miw3
ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2Fy
eSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0
ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgwMiw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5k
aWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJ
bmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9
PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE4MTQsOCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRl
Lm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChj
b2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0
ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBz
cGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsK
KyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFs
dWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyAr
MTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVy
QnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUu
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOwor
CisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJz
Ojpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsyMDMz
LDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFz
ZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1
ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYg
KzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygp
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0yMTkxLDYgKzIyOTcsMTMg
QEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5VHlwZShBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBKSVRTdHVi
Um91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tD
b25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nl
c3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3Qg
Y2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhl
bSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0Fj
Y2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1f
dHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhz
Lm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5
ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5t
X3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobGhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSAhPSByaHMubV9jb25k
aXRpb25TZXQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxpdGVy
ID0gbGhzLm1fY29uZGl0aW9uU2V0LmJlZ2luKCk7CisgICAgYXV0byByaXRlciA9IHJocy5tX2Nv
bmRpdGlvblNldC5iZWdpbigpOworICAgIGZvciAoOyBsaXRlciAhPSBsaHMubV9jb25kaXRpb25T
ZXQuZW5kKCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAgICAgaWYgKCEoKmxpdGVyID09ICpy
aXRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChs
aHMubV90eXBlKSB7CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CisgICAgY2FzZSBSZXBsYWNlOgorICAgIGNhc2UgTWlzczoKKyAgICBjYXNlIEdl
dEdldHRlcjoKKyAgICBjYXNlIEluSGl0OgorICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQXJy
YXlMZW5ndGg6CisgICAgY2FzZSBTdHJpbmdMZW5ndGg6CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBDaGVj
a1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICBjYXNlIEluZGV4
ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0
QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAg
Y2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVy
OiB7CisgICAgICAgIC8vIEdldHRlciBhbmQgU2V0dGVyIHJlbGllcyBvbiBDb2RlQmxvY2ssIHdo
aWNoIG1ha2VzIHNoYXJpbmcgaW1wb3NzaWJsZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3Nv
ckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNj
ZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCk7CisgICAgICAgIGlmIChsaHNkLm1fZG9tQXR0cmlidXRlIHx8IHJoc2QubV9k
b21BdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBs
aHNkLm1fY3VzdG9tU2xvdEJhc2UgPT0gcmhzZC5tX2N1c3RvbVNsb3RCYXNlCisgICAgICAgICAg
ICAmJiBsaHNkLm1fY3VzdG9tQWNjZXNzb3IgPT0gcmhzZC5tX2N1c3RvbUFjY2Vzc29yOworICAg
IH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBs
aHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9
IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhz
ZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAgICB9
CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9
IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNk
ID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBs
aHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1fbW9k
dWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSByaHNk
Lm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAgIGNh
c2UgSW5zdGFuY2VPZk1pc3M6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAgICAg
ICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBh
dXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1
cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdk
NjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uOWMyZmIzZWE2YWQyOGIxNzQ0YzA5Nzc4
OGRjNjRiMzU1YjRkMGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIsNyBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8v
IFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBv
bHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBh
bGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVm
dWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNl
IHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNz
Q2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVS
KEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpA
QCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVu
dHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0
dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9
IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJy
YW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRl
QnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8
QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQpAQCAtMjUzLDExICsyNTYsMzkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9
CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRpdGlvblNl
dC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5LCBtX3N0
cnVjdHVyZS5nZXQoKSwgbV9vZmZzZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFs
SW5TaGFyaW5nKGNvbnN0IEFjY2Vzc0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsK
LSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2Uo
Y29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vz
c0Nhc2UmJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQor
ICAgICAgICAsIG1fc3RhdGUoV1RGTW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3Zp
YVByb3h5KFdURk1vdmUob3RoZXIubV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RG
TW92ZShvdGhlci5tX29mZnNldCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhl
ci5tX3N0cnVjdHVyZSkpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5t
X2NvbmRpdGlvblNldCkpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3Zl
KG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNv
bnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisg
ICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3Ro
ZXIubV92aWFQcm94eSkKKyAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlv
blNldChvdGhlci5tX2NvbmRpdGlvblNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0No
YWluKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVy
KG90aGVyLm1faWRlbnRpZmllcikKKyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9y
PShjb25zdCBBY2Nlc3NDYXNlJikgPSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBt
X3N0YXRlID0gUHJpbW9yZGlhbDsgfQpAQCAtMjc1LDcgKzMwNiw3IEBAIGNsYXNzIEFjY2Vzc0Nh
c2UgewogCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNj
ZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFj
dGlvbiB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBp
biB3aGljaCB0aGUgY2FzZQogICAgIC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdh
dGNocG9pbnQgc2V0cyB0aGF0IHdpbGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0
NiwxNjggQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCitjbGFzcyBTaGFyZWFibGVKSVRTdHViUm91dGluZSBmaW5hbCA6IHB1
YmxpYyBKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgU2hhcmVhYmxlSklUU3R1YlJvdXRp
bmUoVk0mIHZtLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKKyAgICAg
ICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwg
bV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9r
ZXlzOyB9CisKKyAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1f
a2V5czsKK307CisKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKFNoYXJlZEpJVFN0dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJT
ZXQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBrZXlzKQorICAgIHsKKyAgICAgICAgSGFzaGVyIGhh
c2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAgICAgICAgV1RGOjph
ZGQoaGFzaGVyLCBrZXktPmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwor
ICAgIH0KKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7CisgICAgICAg
ICAgICBLZXkoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAg
ICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQ
UihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAg
ICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0
dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJz
KHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChi
aXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRTdHViUm91
dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAg
ICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAg
ICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAg
ICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAg
ICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCAhPSBiLm1fd3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
SklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJl
ZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAg
IEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAg
ICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVkLT5rZXlz
KCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBh
LCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJjaGVyIHsK
KyAgICAgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5cyk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6
OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byYgYXZlYyA9ICphLm1fd3JhcHBlZC0+a2V5cygpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBhdXRvJiBidmVjID0gYi5tX2tleXM7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdmVjLnNpemUoKSA9PSBidmVjLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYnZlYy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFy
aW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgIEdQ
UlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgR1BS
UmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsK
KyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYgbV9rZXlzOwor
ICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5LCBKSVRT
dHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleS5tX3dy
YXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChIYXNoOjpL
ZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0KKworICAg
IHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAgICAgaWYg
KGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3ZlKGl0ZXIp
OworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVyJiBzZWFy
Y2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hhcmVkSklU
U3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKGVu
dHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1fd3JhcHBl
ZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4
NC4uNDJkMDc5NGRkNjI0MGM2MzgwYzliYTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBz
dHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihC
eVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdkZjA1ZTEw
YmM5MGI2NTZmMzUwM2M4NWMwNTRjNWQzYWZhN2M2YjkuLjE4OWE1ODQ3NzBmMDJjYjM4N2Y3NWQ5
YTQ0MzZmY2I1MDg0Y2U0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC04NjEsNyArODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkK
ICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgp
KSB7CiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+
bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAg
ICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5m
by0+ZGVyZWYoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAg
ICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KSB7Ci0gICAgICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1
YkluZm8tPmFib3V0VG9EaWUoKm1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IDc3MzI5ZjNhNDFlMDRhMWM3MmRiNjJjMWQ1OGY0ZjVjMzYzOTcyNTEuLjgxYWI5N2Zi
ZDgxOGIxZmI3YzFmYmZlZDQwMjQ5ZmM5MzcxNjNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMCw2ICs0MjAsMTEgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09
IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKworICAgIGJvb2wgdXNlU2hhcmVkSUMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEpJVENvZGU6OnVzZVNoYXJlZElDKGppdFR5cGUo
KSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5
N2ZmMWNmZjdjZjM4MzYuLjZhMzBlNjM4ZTIwMGNhMDgwZTE0YmFhZDg3YWU4ZTE2NGZmNjljNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1heUJlTnVsbCh2bSwgb3duZXIsIGN1c3Rv
bVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFs
U2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLCBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9
IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0
ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51
bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RC
YXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVl
U2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2N1c3Rv
bUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJU
YWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05
MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nh
c2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAgbV9kb21BdHRyaWJ1dGUg
PSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
cwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgIEdQUlJl
ZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYgKzIyNSwxMSBAQCB2b2lk
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6IGZwU2NyYXRjaCkKICAg
ICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwogICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JD
Q2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQu
Y29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
cmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlm
CiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92
ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNu
aXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXgg
ODczZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMi4uMTAwZmIyN2VlODU2NjE2
ZmI0MTg0MjVlYzJjNzIzNDk0YTRhZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC01MywxNyArNTMs
MTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFi
bGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciosIEdQUlJlZyBiYXNlRm9yR2V0
R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAor
ICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJv
b2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1
c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAgIEpTT2JqZWN0KiBjdXN0
b21TbG90QmFzZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJl
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
LCBib29sIHZpYVByb3h5ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBjdXN0b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJh
c2UgPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVBy
aW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xv
bmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKIAogICAgIH5HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhm
YWZkOThkMGIyODU5M2NiYmIwNTdiYWU5NmZiMzIxYS4uMTJkMWI1YTBlYzdkZTVmNjc3YWQzNmRh
MTJiYWNlNDA2MjVhMGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUFjY2Vzcy5jcHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBHUFJSZWcgZ2V0U2NyYXRjaFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9z
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkp
CiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMzc5LDggKzM4MSw0NSBAQCBib29s
IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3Zv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKKyAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9
IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENDYWxsSGVscGVycyBqaXQ7
CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBh
IG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUg
bWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7
CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fz
c2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVD
YWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZl
ci5saW5rKGp1bXAsIHRhcmdldCk7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5v
UHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9p
ZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJl
ZElDKCkpIHsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpID09IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
KSB7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnN0dWJJbmZvKSwgc3R1YkluZm8ubV9zdHVi
SW5mb0dQUik7CisgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigp
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1
bXAoKTsKKworICAgICAgICAgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxp
bmUoInN0dWIgY2FsbHMiLCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uZG9u
ZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bGlua2VkQ29kZUlubGluZSk7CisgICAgICAgIH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRy
ID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKIAogICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CkBAIC0zOTQsNiArNDMzLDI2IEBAIHZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0
clRhZywgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7CiB9CiAKK3ZvaWQg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1
dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQg
aGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2Yg
YW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVB
U0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVt
cCwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKworICAgIEZJTkFMSVpFX0NPREUo
bGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVt
cCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4
ZjIyNjQwNmM3ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQuLjhkNjYwMWM4Yjk4ZDgxMjVlYzZiMTAw
YTA3OWM1MWUxMTJhMzgzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmgKQEAgLTEwNCw3ICsxMDQsMTAgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsK
ICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZv
JiwgSlNBcnJheSopOwogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0
cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChT
dHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKLSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHVi
QXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0
dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2Vs
ZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJv
b2wgZ2VuZXJhdGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5j
cHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFlNzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4
ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdjMTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0z
MiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IElu
c3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5
cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgcHJvdG90eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
cHJvdG90eXBlKSk7CiB9CiAKIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFBy
aW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5
IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQs
IENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90
eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3ND
YXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9m
QWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmluZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5
OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNz
Q2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNj
ZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0
YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gQWNjZXNzQ2FzZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsK
ICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYs
CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZv
aWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VP
ZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFk
YzIzMzY5MzNkNjc2YzNiZTllOTBjNjAxODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZl
NjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4
ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rp
b24uc2V0KHZtLCBvd25lciwgaW50cmluc2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVm
PEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGlu
dHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1
M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEyYmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMg
Ym9vbCBjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAg
ICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9u
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNG
dW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApp
bmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEwOGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFm
NDgxNTU2NjE1MTcwODVhODhlMTlhMDczYWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3Bw
CkBAIC00NSwxOCArNDUsMTggQEAgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVs
ZUVudmlyb25tZW50LnNldCh2bSwgb3duZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVF
bnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQor
UmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVu
dCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVs
ZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1l
c3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAppbmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNk
MDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVu
dmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52
aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZz
ZXQpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVs
ZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKaW5kZXggNWQ5MDU0NTk3NGYxZWQzN2YyOGNhZjNhMmFlYjM0NmE0OTEwYTI4My4uNmRhY2Ni
Zjg3MWMwODdhYWJhOTg2MzVjNTAxYTc4YjdmNGZkMTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwxNCBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNv
bmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2go
KSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KICAgICAKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpL
aW5kKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlh
N2QwOWEwMTUuLjVkM2YxMzY3ZWE0ZDU0Y2JkNTFmYWI0MmRjYjMxNjkxYmQxOWZlOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7
CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0g
ICAgICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9u
KTsKKyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFu
ZEluc3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25k
aXRpb24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2go
KQpAQCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVT
Y3JhdGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICBy
ZXN0b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBp
ZiAoaml0LT5jb2RlQmxvY2soKS0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsK
KyAgICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29u
c3QgUmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNh
bGwoKQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnBy
ZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9
OwogfQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQog
ewogICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3Rl
cnMoKTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVz
VXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJh
U3RhY2tQYWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBv
bHltb3JwaGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYg
bG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3Jp
Z2luYWxDYXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdp
bmFsQ2FzZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3Mg
YWZ0ZXIgZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2lu
YWxDYXNlc1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3Jp
Z2luYWxDYXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAg
ICAgIGF1dG8gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwogCiAgICAg
ICAgIC8vIEFkZCBpdCBvbmx5IGlmIGl0IGlzIG5vdCByZXBsYWNlZCBieSB0aGUgc3Vic2VxdWVu
dCBjYXNlcyBpbiB0aGUgbGlzdC4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMzQ2
LDkgKzM0OSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKAogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjph
ZGRDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKIHsK
LSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsK
KyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKICAgICBuZXdB
Y2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4gYWRkQ2FzZXMo
bG9ja2VyLCB2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nlc3NlcykpOwog
fQpAQCAtNDQwLDcgKzQ0Myw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNB
Y2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWdu
ZWQgc3JjSW5kZXggPSAwOwogICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAo
c3JjSW5kZXggPCBtX2xpc3Quc2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10p
OwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0
aGVuIHdlIGhhdmUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAg
ICAgICAgLy8gZmFpbCB0byByZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1
Y3R1cmVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzQ5NCw4
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRo
aXNUYWdHUFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQ
Uik7CiAKICAgICBzdGF0ZS5zY3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQ
UigpOwogCkBAIC01MDAsMTIgKzUwNSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1v
cnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMg
aml0KGNvZGVCbG9jayk7Ci0gICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNl
cnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVz
ZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJh
U3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2Rl
ID0gZmFsc2U7CiAKQEAgLTUyMSwxMiArNTIwLDMwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiT3B0aW1pemVkIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwotICAg
IAorCisgICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNl
dHRlckNhbGxzID0gZmFsc2U7CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4ga2V5cyhjYXNlcy5zaXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBm
b3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5k
b2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgpID09
IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRl
cikKKyAgICAgICAgICAgIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAg
a2V5c1tpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUu
bV9kb2VzQ2FsbHMgPSBkb2VzQ2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJD
YWxscyA9IGRvZXNKU0dldHRlclNldHRlckNhbGxzOworICAgIC8vIEdldHRlciAvIFNldHRlciBy
ZWxpZXMgb24gc3RhY2stcG9pbnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBs
aW5rZWQgQ29kZUJsb2NrLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAg
aWYgKGRvZXNKU0dldHRlclNldHRlckNhbGxzKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNl
OworCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNv
bnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3
b24ndCBjaGFuZ2UgdGhhdCBzZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRC
eVN0cnVjdHVyZUNoZWNrID0gdHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9
IGZhbHNlOwogICAgIGJvb2wgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBi
b29sIG5lZWRzU3RyaW5nUHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1i
b2xQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CkBAIC01NDIsMTAgKzU1OSw3MSBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvYwogICAgICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0
ZS53YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBh
bGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVD
aGVjayhzdHViSW5mbyk7Ci0gICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2Fz
ZTo6R2V0dGVyIHx8IG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAg
ICAgICAgICBoYXNKU0dldHRlclNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2Fz
ZS0+dXNlc1BvbHlQcm90bygpKQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3Bl
cnR5Q2hlY2sgfHwgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVk
ID0gZmFsc2U7CisKKyAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWI7CisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpIHsKKyAg
ICAgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVl
R1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnVz
ZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAga2V5cworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJjaGVyKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGF1dG8gZmluaXNoQ29kZUdlbmVyYXRpb24gPSBbJl0oUmVmUHRy
PEpJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9zdHViUm91dGluZSA9IFdURk1v
dmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9p
bnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2Vs
bD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgaWYgKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJSZXR1cm5p
bmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAgICAgbV9saXN0ID0g
V1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOworCisgICAgICAg
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAgICAgICAgaWYgKG1f
bGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2Vu
ZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CisK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgbV9zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfTsKKworICAgIGlmIChzdHViKSB7CisgICAg
ICAgIGZvciAoYXV0byYgYWNjZXNzQ2FzZSA6IGNhc2VzKQorICAgICAgICAgICAgYWNjZXNzQ2Fz
ZS0+Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uoc3RhdGUsIGNvZGVCbG9jayk7CisgICAg
ICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKICAgICB9CiAK
KyAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsK
KworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRl
Lm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8g
Z3VhcmFudGVlIHRoYXQgc3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlz
IG5vdCBhIHByb2JsZW0gaWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNh
bGxzIHNpbmNlIHN0YWNrLXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJl
Z2lzdGVyIGFuZCBpdCBpcyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1
dGFibGUgY2FsbCBkb2VzIG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rp
bmcgc3RhY2stcG9pbnRlciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVy
IGNhbGxzLiBCdXQgdGhpcyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFj
ay1wb2ludGVyLCBhbmQgbWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8g
VG8gZW5zdXJlIFBBQy10YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVy
IHRvIHRoZSBhcHByb3ByaWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIH0KKworICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAg
ICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAK
ICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5s
aWtlbHksIGJ1dCB3ZSBtYWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFu
ZFJlcGF0Y2guYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc2OCw3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0
aW9uSGFuZGxlcnMgPSBudWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3Rv
cmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAg
IGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pT
R2V0dGVyU2V0dGVyQ2FsbHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hl
biBkb2luZyBnZW5lcmljVW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAg
ICAgICAvLyBOb3RlIGFsc28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20g
Z2V0dGVyL3NldHRlci4gQ3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2
ICs4MDgsMTUgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nKCk7CiAgICAgfQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBu
b3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNh
biBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNh
bGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxs
IHRvIHRoZSB0aHVuayB3aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAg
ICAvLyBBbmQgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBC
YXNlbGluZUpJVC4KKyAgICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRo
U3RhcnRMb2NhdGlvbigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKwogICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRl
cm5hbDo6dmVyYm9zZSkKQEAgLTczOSw5ICs4MjYsMTIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2MKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHN1Y2Nlc3NMYWJl
bCA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKIAotICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5z
dWNjZXNzLCBzdWNjZXNzTGFiZWwpOwotCi0gICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgQVNTRVJUKHN0YXRlLnN1Y2Nlc3MuZW1wdHkoKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBz
dHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1
YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKQEAgLTc0OSwzNSArODM5LDIxIEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBjb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9j
aywgbGlua0J1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICIlcyIsIHRvQ1N0
cmluZygiQWNjZXNzIHN0dWIgZm9yICIsICpjb2RlQmxvY2ssICIgIiwgc3R1YkluZm8uY29kZU9y
aWdpbiwgIiB3aXRoIHJldHVybiBwb2ludCAiLCBzdWNjZXNzTGFiZWwsICI6ICIsIGxpc3REdW1w
KGNhc2VzKSkuZGF0YSgpKTsKLQotICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7Ci0gICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOwotICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykK
LSAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7
Ci0gICAgCi0gICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
LCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxs
TGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShz
dGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5
KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmIChQb2x5bW9y
cGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6
ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKLSAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2Vz
KTsKLSAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7Ci0gICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9u
czo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQotICAg
ICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxD
b2RlOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OkdlbmVyYXRlZE5ld0NvZGU7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQocmVzdWx0S2luZCwgY29kZS5jb2RlKCkpOworICAgIHN0dWIgPSBjcmVhdGVKSVRTdHVi
Um91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNl
bGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRP
d25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7
CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChjYW5C
ZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1fc2hhcmVkSklUU3R1YnMtPmFkZChTaGFyZWRKSVRT
dHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0
dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNl
ZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBmaW5pc2hDb2Rl
R2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKIH0KIAotdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6
YWJvdXRUb0RpZSgpCit2b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKFZNJiB2bSkK
IHsKICAgICBpZiAobV9zdHViUm91dGluZSkKLSAgICAgICAgbV9zdHViUm91dGluZS0+YWJvdXRU
b0RpZSgpOworICAgICAgICBtX3N0dWJSb3V0aW5lLT5hYm91dFRvRGllKHZtKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFi
MzRhZWNiNDEuLmY5ZjhjYmYwZDU1OThlMWYxZWYyMzAxYjQ1OGZiYWRiMDMzNDRkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
V2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xk
IHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMg
bWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2Rl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIFBv
bHltb3JwaGljQWNjZXNzIHsKICAgICAvLyBvcHRpbWl6YXRpb24gdG8gdGhlbiBhdm9pZCBjYWxs
aW5nIHRoaXMgbWV0aG9kIGFnYWluIGR1cmluZyB0aGUgZml4cG9pbnQuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNpdG9yJikgY29u
c3Q7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKTsKKyAgICB2b2lkIGFib3V0VG9EaWUoVk0mKTsK
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zUEModm9pZCogcGMpIGNvbnN0CkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBo
aWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOwogICAgIAogICAgIHZvaWQgY29tbWl0KAog
ICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVl
X3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLApAQCAtMTk2LDYgKzE5Niw4IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUgewogICAgICAgICA6IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1f
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMoZmFsc2UpCisgICAgICAgICwgbV9kb2VzQ2FsbHMoZmFs
c2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhh
bmRsaW5nKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2Vw
dGlvbihmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KGZhbHNlKQpA
QCAtMjI1LDggKzIyNywxMCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50
czsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOwogICAg
IEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1fZG9lc0pTR2V0
dGVyU2V0dGVyQ2FsbHMgOiAxOworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwogCi0gICAgdm9p
ZCBpbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOworICAg
IHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKIAogICAgIHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2b2lkIHN1Y2Nl
ZWQoKTsKQEAgLTI0OCw3ICsyNTIsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRF
eGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwotICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0
aW9ucygpOworICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwogCiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhj
ZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRv
bnRSZXN0b3JlID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2MmEzODllMmVm
NTBlZWE2YTNiMzRlNzVmYTlkLi40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1MDc5YWNiY2Mx
MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
YWNjZXMKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9
PSBSZXBsYWNlKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJveHlh
YmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+UHJveHlhYmxl
QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm94eWFibGVB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApp
bmRleCBkYzM5ZTI2Y2EyZjRiMmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5lODQzODVjYTc1
YzlmNzUyZThlOGUxNmNkZGUwYWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3LDExICszNywx
MSBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogCiAg
ICAgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWRkaXRpb25hbFNldC5nZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAgICBzdGF0aWMg
UmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAogICAgICAg
ICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBu
dWxscHRyLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAogICAg
IHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIH5Q
cm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2
YTM5Yjg0NThiOTAwY2IyYTUyZWY0ZjE1MTEyMGYuLmRlMDI1ZTc0ZWRkODJmZmU4NjFiNzM3NzMx
ZDUwYTI0NmM0OTljNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaQogICAgICwgcHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwgcHJvcGVydHlJ
c1N5bWJvbChmYWxzZSkKIHsKKyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogfQog
CiBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEyMCwxMSArMTIx
LDExIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGll
KCkKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoVk0mIHZtKQogewogICAgIHN3
aXRjaCAobV9jYWNoZVR5cGUpIHsKICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKLSAgICAgICAg
dS5zdHViLT5hYm91dFRvRGllKCk7CisgICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSh2bSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OkdldEJ5SWRTZWxmOgpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjJmNmNiYTMx
YmZmYmFjNGMxYzBhMmY5NTE4MzI2ZjJjMzMwNzc3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04NywxMiArODcsMTIg
QEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRk
QWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNz
Q2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2Fz
ZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKik7CiAKICAgICB2b2lkIGRlcmVmKCk7Ci0gICAgdm9pZCBhYm91dFRvRGllKCk7Cisg
ICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsK
IApAQCAtMzQ3LDE2ICszNDcsMjQgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRM
b2NhdGlvbjsKIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRh
Zz4gbV9jb2RlUHRyOworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3Bl
cmF0aW9uOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24p
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0K
KwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUjsK
LSAgICBHUFJSZWcgdmFsdWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CisgICAgR1BSUmVnIHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9uIHsK
ICAgICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAg
IH0gcmVnczsKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBGSVhN
RTogWzMyLWJpdHNdIENoZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlzIHVz
ZWQgc29tZXdoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDhhZGVhZDUwZjQ1NTZjZmYyNWU3YzdjOTk3ODMwNGQ0MTc3MDk3NDcuLjQ3NjU0YTc2
ZGI1YTExM2YwZmNiNmJmNjhhM2QyMmFjYmM2YTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xhc3MgSklUQ29t
cGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2Fs
bExpbmtSZWNvcmQoZnVuY3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4gZnVu
Y3Rpb25DYWxsOwogICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggOTgx
ZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAwMWJlODE2MDEyNi4uMzg4NmNiMmJkYmI4M2RjNzdi
NzcyNWVhZjU3NDEyNDU1ZWMxMWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTg4LDYgKzE4OCw4IEBAIGNsYXNzIENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xv
d1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwog
fTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5
cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBA
IC0yNjMsNiArMjY1LDY2IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBz
b3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
K2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVi
bGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAg
ICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNs
b3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJl
cXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20s
IGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1Yklu
Zm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAgICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Mo
c2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24p
CisgICAgICAgICwgbV9hcmd1bWVudHMoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQg
dW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRpdmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5j
ZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAgeworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwor
ICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAg
ICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVz
dWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1ZSkKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJh
dGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBzdGQ6OmdldDxB
cmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFk
ZHJlc3MsIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJ
bmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtlX2luZGV4
X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2YWx1
ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0aW9uVHlw
ZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsK
KyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRU
eXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlwZSByZXN1
bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5mbywgc3R1
YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxsTW9kZSwg
cmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3Vt
ZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHViSW5mbywg
c3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5lZWRUb1Nw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0LCBhcmd1
bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhm
OC4uYzMwNjY2NjUwNmFmNTU4NmM2NDExMWIxOGE2NmI1MjkyNTVmNWMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwMjYsMjQg
KzEwMjYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9k
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAg
YmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklU
Q29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1w
KCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUxLDcgKzEw
NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2Uo
KTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5
cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50
eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKQEAgLTEwOTYsNyArMTEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlw
ZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEx
MSwxNCArMTEzNSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNo
KE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigp
OwpAQCAtMTEyOCwyMCArMTE1NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNl
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTExNzAsMjIgKzEyMTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQy
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgIH0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBKU1Zh
bHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBh
eWxvYWRHUFIoKTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwor
CiAgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQog
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVn
cykpOwogCkBAIC0xMTk0LDIwICsxMjQzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwog
CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAot
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9q
aXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEzMDAsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBP
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwogCkBAIC0xMjQ4LDE0ICsxMzE4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQu
cmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVk
KGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsCi0gICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
KyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0zNTYxLDkgKzM2NDIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlMKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0g
R2V0UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9n
cmFwaC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxh
dGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBPcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
fQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgc3Bl
Y3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworCiAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTM1NzQsMTQg
KzM2NjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlW
YWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBi
YXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1dG8gYmFz
ZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkgeworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0
LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAgICAgICBi
YXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAgICAgICAg
cmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAgLTM1ODks
OCArMzY4Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93bkNlbGwK
LSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2Uu
cGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOworICAgICAg
ICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxv
YWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAgICAgbV9q
aXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwyOCArMzY5OSw0MCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CiAg
ICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAgIGNhc2Ug
Q2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwg
MCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJh
c2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
ICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBz
dHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUs
IDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zNzIyLDI5ICszODMxLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisKKyAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERl
ZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSog
bm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJhbmRHUFIg
PSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigp
LCBicmFuZEdQUik7CkBAIC0zNzU4LDE2ICszODc4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFu
ZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRH
UFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJy
YW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKQEAgLTM3NzgsOSArMzkwNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIGJy
YW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzc5MiwxNiArMzkyNiwyNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAor
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7
CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAg
LTM5MTksMjIgKzQwNjEsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRl
c0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BS
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJz
KCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBl
UmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJl
Z3MsCi0gICAgICAgIHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBw
cm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1Yklu
Zm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQu
YWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTQ1LDYgKzQwOTIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAg
ICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTUyLDEz
ICs0MTAwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAg
ICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcHJv
dG90eXBlR1BSID0gcHJvdG90eXBlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAK
LSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwg
c2NyYXRjaDJHUFIpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAKICAgICAg
ICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzk2OCwxMiArNDEyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZihOb2RlKiBub2RlKQogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgIAorICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEpT
VmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKICAgICAK
QEAgLTM5ODksNyArNDE0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQ
Uiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNvbXBpbGVJbnN0
YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIs
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CiAgICAg
CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTEzMDE5LDQ2ICsxMzE3OCw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNW
YWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNt
YU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2Rl
KiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwor
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9k
ZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQ
dXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CkBAIC0xNDY5MCwxOCArMTQ4NjcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVj
bWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQog
ewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3Bp
bGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAg
ICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChz
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5z
ZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
dmFsdWVSZWdzLCBzdHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ3MTEsOSAr
MTQ4OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jl
c3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MmUxZThjZDUy
YTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYzLi4zYzlmNGQ1Y2Y3NjIzMmViODEzNzU0OGJi
YzU1NTM3ZDkzNDUwZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC03MTksMTYgKzcxOSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja0RldGFjaGVkKE5vZGUqKTsKIAotICAgIHZvaWQgY2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3Bp
bGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxs
KTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyBy
ZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlz
dCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAg
IHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFy
Z2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQg
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25l
LCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcg
dGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2
b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BS
UmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBK
SVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBM
aXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUqKTsKQEAg
LTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBnZW5lcmlj
SlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwog
ICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1Zh
bHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0
R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdz
IHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKQEAgLTk0OSw2ICs5NDksMjYg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVf
aWZfdDwKKyAgICAgICAgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwK
KyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24o
Vl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7
CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVy
LgpAQCAtOTg4LDYgKzEwMDgsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBy
ZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogCisgICAgdm9pZCBhcHBl
bmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHJl
cGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2lu
KG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIG1faml0LmFwcGVuZENh
bGwoYWRkcmVzcyk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kT3BlcmF0
aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAg
IHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTAxMCw2ICsxMDM3LDEz
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQog
CisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRy
ZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQu
bW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKKyAgICB9CisKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBi
NTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li5jMWI1ZDA2MWMzYzVhNGE2
NTA2Y2I3YzYwZWUyOTY3ZmMyMTZhNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE2OCwxNSArMTY4LDE2IEBA
IGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdH
UFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NU
eXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
b3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5
cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5
bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZp
ZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdp
biwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVz
dWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0
LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgK
LSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJS
ZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXls
b2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlzIGEgaGFja3kgZml4IGZvciB3aGVuIHRo
ZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdp
dGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ug
b2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVs
eSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2Jh
Ymx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24u
CkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgK
ICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlk
ZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXls
b2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlw
ZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcsIHR5cGUpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIyOCwxNSArMjI5LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNU
YWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVn
IHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhU
YXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIAogICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7
CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBK
U1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdz
KHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBp
ZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpT
VmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZyk7CiAg
ICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjM0MSw4ICsy
MzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdz
LnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKIAogICAgICAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUo
U3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNT
dHJpbmcgPSB0cnVlOwpAQCAtMzQwNSw3ICszNDA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJl
c3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVz
dWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwg
SW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdp
dGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52
YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZh
bGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwg
bm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI1LDcgKzM0MjcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAg
ICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWUu
anNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlk
V2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAg
ICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFn
R1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggYjkxMThiNjJlODdkOTcwYWM1NDYxZjYzYmQzYzM4MGZiOGIwMTI2MC4uMzM2YjFh
OTVkMjQ2ZTcxOTRhNzc0MTAyNjUzYzMyOWQzNDM0ZjViMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNDcsMTIgKzE0Nywx
MiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmln
aW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxs
UmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0
ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmln
aW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQs
IG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1
bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwg
dHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2Vw
dGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkp
OwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICAv
LyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3Qg
bmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwg
ZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywg
dGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAg
ICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIs
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSks
CisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAg
IHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VH
UFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0
QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRX
aXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhp
c0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGls
ZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NS
RXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xODcsMjAgKzE5
NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUgogICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJh
c2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldCh0aGlzR1BSLCBmYWxzZSk7CiAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxzZSk7CisgICAgaWYgKHN0dWJJbmZv
R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZv
R1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUikpOworICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQUik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7
CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
c09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAg
ICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAg
CiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTI2ODEsMTYgKzI3
MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0KKyAgICAgICAgICAgIE9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJvcGVydHkpOwor
CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BS
ID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogCisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSk7CisKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUg
PSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0
SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgICAgICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMjcwMCw4
ICsyNzI3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VH
UFIpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9w
ZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5p
c1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3Bl
cnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMjcxMiwxMSArMjczOSwxOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg0LDkgKzQwMTksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgICAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpAQCAtMzk5NCwx
NCArNDAzNiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwg
cmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRD
b21waWxlcjo6SnVtcExpc3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKQEAgLTQwMTMsNyArNDA2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRC
eUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIs
IHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90
Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2Rh
ZDhiZjM1Li4zYTYyMGY0NzI0ZmQyY2FiMjk4ZGQ1MzA4MTlmZjI0YTgzYWI4YzE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYg
KzM5NzgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBv
aW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1z
WzBdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdw
cigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJS
ZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAg
aWYgKCFiYXNlSXNDZWxsKQpAQCAtNDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQ
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CkBAIC00MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAw
OwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25I
YW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAg
LTQxMzAsMTAgKzQxNDUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJh
bmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwg
YWNjZXNzVHlwZSwKLSAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMg
KzQxNzUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChu
b3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0g
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nl
c3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1
bmN0aW9uKGFjY2Vzc1R5cGUpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNz
RnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xv
d1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBW
YWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEg
OiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBt
aWdodCB3YW50IHRvIGxhdGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1Mzgs
MTAgKzQ1NjcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBK
UyBzZXR0ZXIgY2FsbCBJQ3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0
aGlzLgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRp
b25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwg
SlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3Rl
ciwgZWNtYU1vZGUsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5n
cHIoKSksIHN0dWJJbmZvR1BSLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBl
Y21hTW9kZSwKICAgICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRo
RnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIElu
dmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5y
YXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5j
dGlvbigpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygp
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1Bh
dGhDYWxsKTsKQEAgLTUyMzksNiArNTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNo
cG9pbnQpOwogCkBAIC01MjU5LDEwICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAg
ICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1Yklu
Zm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50
MzI7CkBAIC01MjgwLDEzICs1MzI1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwg
cmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5r
VG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5
Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gMiA6IDE7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25I
YW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNb
MF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2Ny
YXRjaCgwKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlk
R1BSUmVnOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgw
KSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNo
KDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQog
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwo
YmFzZSkpOwpAQCAtNTg3NCw3ICs1OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBh
cmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQ
UiAhPSBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhw
YXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5v
cm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFt
cy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlW
YWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFt
cy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwg
SlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAg
ICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5m
b0dQUiwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAg
LTEyMjQyLDggKzEyMzE0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwor
ICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIz
MzIsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAor
ICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsK
KwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwx
MiArMTIzNDgsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRp
b25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3
Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwg
c2xvd1BhdGhDYWxsKTsKQEAgLTEyNDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsK
KyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5y
ZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgCkBAIC0xMjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2go
MCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRj
aCgxKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRH
UFJSZWc7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmVKdW1wOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEy
NTIzLDggKzEyNjEwLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhq
aXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAot
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0
R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIsIHByb3Rv
dHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBh
dGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKQEAgLTEyNTM3LDEyICsxMjYyNCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0x
Mzk4Niw2ICsxNDA4NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRC
eUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5j
ZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxl
IHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91
Z2gsIHNpbmNlIHRoZQpAQCAtMTQwMTQsMTAgKzE0MTE0LDEyIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1z
LCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNo
KDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdw
cigpKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksIHN0dWJJbmZvR1BSLCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwMzAsMTIgKzE0MTMyLDI0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1Bh
dGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpG
VExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3
Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBh
cmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0
cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNs
b3dQYXRoQ2FsbCk7CkBAIC0xNDA2MCw4ICsxNDE3NCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlzVmFsdWUpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC0xNDA4MywxMCArMTQxOTcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRl
SW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZh
bGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sw
XS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
LCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFz
dFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBq
aXQubGFiZWwoKTsKQEAgLTE0MDk5LDEyICsxNDIxNSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1z
WzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5n
cHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4IDJhZGQ0
OTRjNTMyYWFlYThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFlNzkyNmM2
YTA3MTgzNzMxNTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4OwogCiBTbG93
UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcg
cmV0dXJuUmVnaXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxw
ZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVn
IGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAgICwgbV9u
dW1BcmdzKG51bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lzdGVyKQpA
QCAtNjMsNiArNjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0
KAogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVudFJlZ2lz
dGVycyk7CiAgICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAg
IG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKyAgICBpZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RDYWxsVGFy
Z2V0UmVnaXN0ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmlsdGVyKHVz
ZWRSZWdpc3RlcnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxpbmdDb252
ZW50aW9uUmVnaXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxsQ29udGV4
dDo6flNsb3dQYXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxs
Q29udGV4dDo6a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxU
YXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNl
dCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAgIHJldHVy
biBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRS
ZWdpc3RlcnMsIG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2Fs
bENvbnRleHQ6OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgbnVsbHB0
ciwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsKIH0KIAog
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwyMiBAQCBT
bG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xvd1BhdGhD
YWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzIGNhbGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtleVdpdGhU
YXJnZXQoY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQYXRoQ2Fs
bChtX2ppdC5jYWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFkZExpbmtU
YXNrKAorICAgICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0K
KyAgICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCBy
ZXN1bHQua2V5KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0LmNhbGwo
KSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkpOworICAg
ICAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiB7CiAgICAgaWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlmM2ZhODBj
MTJhLi5kNmYyODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1NCwxNyBA
QCBjbGFzcyBTbG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhpbmd5IHRo
YXQgd2lsbCBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0cyBhbmQg
c3VjaC4KIGNsYXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNsb3dQYXRo
Q2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5z
aWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0aENhbGxD
b250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVk
IG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdl
dFJlZ2lzdGVyKTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8gTk9URTog
VGhlIGNhbGwgdGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBsaW5rZWQg
YnkgdGhlIEpJVCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlzIG5vIG5l
ZWQgZm9yIHlvdSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2Fs
bChWTSYsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7CisgICAgU2xv
d1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAogcHJpdmF0
ZToKICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRo
VGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVnaXN0ZXJT
ZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdDb252ZW50
aW9uUmVnaXN0ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlv
bigKIHsKICAgICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQYXRoQ2Fs
bENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5
cGVzKSArIDEsIHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4
dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3Vs
dEdQUiwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2b2lkKEFy
Z3VtZW50VHlwZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29udGV4dC5t
YWtlQ2FsbCh2bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAgU2xvd1Bh
dGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxs
T3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJn
ZXQsCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BS
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwgY2FsbDsK
KyAgICB7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJz
LCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDx2
b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAgICAgICAg
Y2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlv
blRhcmdldCkKKyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRFeGNlcHRp
b25DaGVjayh2bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZt
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBl
eGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJl
c3VsdEdQUiwKKyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoY2Fs
bFNpdGVJbmRleCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24o
dm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwgcmVzdWx0
R1BSLCBhcmd1bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JD
b2RlT3JpZ2luKFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0ZSYgc3Rh
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2Vw
dGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0ZUluZGV4
Rm9yQ29kZU9yaWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rp
b24sCisgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZjNjIwMzNh
ODM5MDhlNmZjYzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3MmJlZjU1
MTNlZmU1YWEzOWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lz
dGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2lu
dGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3Rl
cnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgiPHVzZWRS
ZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAi
LCBpbmRpcmVjdE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAi
LCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1l
bnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEzODQyYmRk
MzNkLi4wY2U2MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUxLDExICs1
MSwxMiBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtl
eSgKICAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBjYWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMs
Ci0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQsIGlu
dDMyX3QgaW5kaXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNldCkKICAg
ICAgICAgLCBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+
KCkpCiAgICAgICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVycykKICAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNldChpbmRp
cmVjdE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBAIGNsYXNz
IFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3QgUmVnaXN0
ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudFJlZ2lz
dGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIGludDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGlyZWN0
T2Zmc2V0OyB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0KEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJl
Z2lzdGVycygpLCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNl
ZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSwg
aW5kaXJlY3RPZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAg
ICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDogbV91c2Vk
UmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDAp
CiAgICAgewogICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZhbHVlVGFn
KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZhbHVlKQot
ICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4ICs5Mywy
MCBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdXNl
ZFJlZ2lzdGVycyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYmIG1fY2Fs
bFRhcmdldCA9PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09
IG90aGVyLm1fb2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZz
ZXQKKyAgICAgICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRpcmVjdE9m
ZnNldDsKICAgICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2Fs
bFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICByZXR1cm4g
bV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdl
dC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNldDsKICAg
ICB9CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lzdGVyU2V0
IG1fYXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAgIHB0cmRp
ZmZfdCBtX29mZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQgeyAwIH07
CiB9OwogCiBzdHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZhOTMzMTMzYzBiMzZj
ODY2MTNhZC4uMzk5Y2RiNzA2ZDc3ODg5YTY3ZGM4OTM5YzdjNWEwMmI1NmI3NzU0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIpOwogICAg
IAogICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZm
ZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihz
Y3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjEpOworICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1
aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAK
ICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3Io
Vk0mIHZtLCBjb25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7
CiAgICAgfQogICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAs
IEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5v
bkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXkuYXJndW1l
bnRSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXkuYXJndW1l
bnRSZWdpc3RlcnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGRvbnRD
bG9iYmVyLnNldChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2JiZXJDaGVj
ayhqaXQsIFdURk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVyczo6Q2Fs
bCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6
OkNhbGwgY2FsbDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gaml0LmNh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5pbmRpcmVj
dE9mZnNldCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtl
eS5vZmZzZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0
LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5v
blJldHVybkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMK
ICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7Ci0gICAgcGF0Y2hCdWZm
ZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQo
KSkKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJGVEwg
c2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4
IDM1NGY5NTQ3YjRhYmYzMjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2QuLmJmOGEwODA0MGNlYzg3
YjY0Zjc3YzM2YWVhZGJmZWQ5ZGU0MDI3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShK
SVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZp
cnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAg
ICAgICBhdXRvIGNhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpJ
VENvbXBpbGF0aW9uUHRyVGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1ZmZlci5hZGRNYWluVGhy
ZWFkRmluYWxpemF0aW9uVGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxU
aHVua0Zvcih2bSwgKmluZm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgICAgICAgICAg
aW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRo
dW5rLCB2bSwgeyB9KSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJD
YWxsKGNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2OGIxMjEzZjZkMjRjNzBhZmI1MDMz
MjBlYWE3MmQ4OWU3ZDg2YmU5Li5lOTA5NmI1NzczZjMyMTczMTY5ZTczZmFlMzQxMTE4ODY5ODk3
ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTIwNyw3
ICsyMDcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
IAogICAgIC8vIGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0
eXBlcyBwYXNzZWQgaW4gcmVnaXN0ZXIgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuCiAgICAgLy8g
ZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBv
biB0aGUgc3RhY2suCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgogICAgIHN0cnVjdCBBcmdDb2xs
ZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAgICAgIHsKQEAgLTIxOSw4ICsy
MTksOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAgICAg
IH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBj
LCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnPgotICAgICAg
ICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwgZz4mIG90aGVy
KQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1
bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBo
PgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwg
ZywgaD4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBncHJTb3VyY2VzID0gb3RoZXIu
Z3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9ucyA9IG90aGVyLmdwckRlc3Rp
bmF0aW9uczsKQEAgLTIzMCw2NSArMjMwLDc0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMgPSBvdGhl
ci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJn
KEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAg
ICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJj
ZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0
aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJn
dW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hS
ZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyAr
IDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5mcHJTb3VyY2VzW251bUZQUlNv
dXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZnByRGVzdGluYXRpb25zW251
bUZQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyAr
IDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJl
ZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRo
aXMpOwogCiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2VzW251bUNyb3NzU291cmNlc10g
PSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rlc3RpbmF0aW9uc1tudW1Dcm9z
c1NvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
ICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQ
UlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0Fy
ZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBl
eHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVz
dWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNl
c10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BS
U291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4gcHVz
aE5vbkFyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBy
ZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3Vy
Y2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1H
UFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tl
PiBhZGRHUFJFeHRyYUFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhH
UFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCisg
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhp
cyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMT4g
YWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9CiAKICNpZiBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMzMxLDEyICszNDAsMTQgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVu
c2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNl
dCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVu
dCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIC8vIENs
YW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBzeW1ib2wgZm9yIEZQUlJlZy9HUFJS
ZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0aGV5IGFyZSBwYXNzZWQgZGlyZWN0
bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1ZwogICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMgPSBHUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogCisgICAgICAgIFVOVVNFRF9QQVJBTShu
b25BcmdHUFJzKTsKKwogICAgICAgICBjdXJyZW50R1BSQXJndW1lbnQgKz0gZXh0cmFHUFJBcmdz
OwogICAgICAgICBjdXJyZW50RlBSQXJndW1lbnQgLT0gbnVtQ3Jvc3NTb3VyY2VzOwogICAgICAg
ICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKQEAgLTM1MCwxNSArMzYxLDE1
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2Fs
Y3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2ln
bmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwg
Y3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOwogICAgIH0K
IAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAg
QUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1l
bnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQ
b2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9r
ZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50
RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOwogICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CiAgICAgfQogCkBA
IC0zNzYsOCArMzg3LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogICAgIC8vIEF2b2lkIE1TVkMgb3B0aW1pemF0
aW9uIHRpbWUgZXhwbG9zaW9uIGFzc29jaWF0ZWQgd2l0aCBfX2ZvcmNlaW5saW5lIGluIHJlY3Vy
c2l2ZSB0ZW1wbGF0ZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVnVHlw
ZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQg
bWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVnVHlwZSBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkVfRVhDRVBU
X01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdXNpbmcgSW5mb1R5
cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CkBAIC0zOTIsMzEg
KzQwMywzMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91
YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3Vi
bGUiKTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxs
QXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpT
VmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdz
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVl
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KQEAgLTQy
NCw4ICs0MzUsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJz
IHsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShN
SVBTKQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwg
IldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogCkBAIC00
NjksMjUgKzQ4MCwyNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50R1BBcmdDb3VudCA8IG51bWJl
ck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Mg
KyAxLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhhcmcp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIC8vIE90aGVyd2lzZSBwYXNzIEZQIGFyZ3VtZW50IG9uIHN0YWNrLgot
ICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKENVUlJF
TlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVn
cy5hcmdDb3VudChhcmcpOwpAQCAtNDk3LDM0ICs1MDgsMzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyks
IGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBwb2tlQXJndW1l
bnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlw
ZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHBva2VBcmd1
bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIs
IEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BSSW5mbzo6cmVnVDApOwog
CiAgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51bUFyZ1JlZ2lzdGVycykgewot
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKLSAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOwog
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwotICAg
ICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UgKyAxKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
ICsgMik7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAyKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENV
UlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQor
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBw
YXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KHBheWxvYWQuZ3By
KCkpOwpAQCAtNTQ0LDkgKzU1NSw5IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0FsaWduZWQ8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVS
ZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5z
aWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcudGFnR1BS
KCkpOwpAQCAtNTY5LDExICs1ODAsMTEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFz
c2VtYmx5SGVscGVycyB7CiAjZW5kaWYgLy8gQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFM
V0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19iYXNlX29mPFRy
dXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0ZDo6aXNfY29udmVydGlibGU8QXJn
LCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhpcyBzaW5jZSBERkdTcGVjdWxhdGl2
ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2YgVHJ1c3RlZEltbVB0cgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBvbmx5IHN1cHBvcnRzIG5v
bi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNpbmNlIHdlIG5ldmVyIGNhbGwg
b3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAgICAgICAgIC8vIElmIHdlIGV2
ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50cyB3
ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZvciBib3RoIHR5cGVzLCB3aGlj
aCBzb3VuZHMKQEAgLTU5MSw0NiArNjAyLDQ2IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFy
Zz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9
IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMyKGFyZyksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVu
YWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBB
cmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRf
VFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA9
PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02NChhcmcpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVyPEFyZz46OnZhbHVlICYmIHN0
ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9wb2ludGVy
X3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSkKICAgICAgICAgICAgIHx8
IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUpPgotICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICAvLyBT
cGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlIGJlY2F1c2UgaXQncyByZWFsbHkg
YW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVyd2lzZS4uLgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6dmFsdWUKICAgICAgICAgJiYg
c3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlPjo6dmFsdWU+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwogICAg
IH0KQEAgLTYzOSw4ICs2NTAsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1i
bHlIZWxwZXJzIHsKICN1bmRlZiBSRVNVTFRfVFlQRQogCiAgICAgLy8gQmFzZSBjYXNlOyBzZXQg
dXAgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0
eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNhbml0eSBjaGVjayIpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02NTUsMzEgKzY2Niw0NCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0dXBTdHViQXJnczxudW1G
UFJTb3VyY2VzLCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVn
PihhcmdTb3VyY2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVtRlBS
U291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJjZXMpKTsKICAgICB9CiAKLXB1
YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0VudHJ5
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAg
IHVzaW5nIEZpcnN0QXJndW1lbnRUeXBlID0gdHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPjsKKyAgICAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWU8Rmlyc3RBcmd1bWVudFR5cGUsIENhbGxGcmFtZSo+Ojp2YWx1ZSkgewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtz
IGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQu
Li4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7
CisgICAgICAgIH0gZWxzZSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRo
aXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0
aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlv
blRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwg
IkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAgIH0K
KyAgICB9CiAKLSNkZWZpbmUgRklSU1RfQVJHVU1FTlRfVFlQRSB0eXBlbmFtZSBGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+CitwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RklSU1RfQVJH
VU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFy
Z3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykK
ICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3
b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzIt
Yml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUs
IDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4o
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFy
Z3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8RklSU1RfQVJHVU1FTlRfVFlQRSwgQ2FsbEZyYW1l
Kj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEdQUlJlZyBmdW5jdGlvbkdQUiwg
QXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwgIkJhc2lj
IHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAs
IDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxP
cGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCkucHVz
aE5vbkFyZyhmdW5jdGlvbkdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOwogICAg
IH0KIAotI3VuZGVmIEZJUlNUX0FSR1VNRU5UX1RZUEUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChBZGRyZXNzIGFkZHJlc3MsIEFyZ3MuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+
KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGFkZHJl
c3MuYmFzZSwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOworICAgIH0KIAogICAgIHZv
aWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApp
bmRleCBmN2FhMzI5ZmUyNWQxOWM3MzcxODQ3MGFlZmZiM2I0YWFlYTA1ZGI2Li4yYmYxMWZkNjk1
OTYxYTExNzNmMzJiNGNlOTIxNjJiMDA3MjE4MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJIZWFw
LmgiCkBAIC0zOSw4ICs0MCwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKKyAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0s
IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzKQogICAgIDogSklUU3R1YlJv
dXRpbmUoY29kZSkKKyAgICAsIG1fdm0odm0pCisgICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkK
IHsKICAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRpbmVzLT5hZGQodGhpcyk7CiB9CkBAIC00OSw2
ICs1Miw5IEBAIEdDQXdhcmVKSVRTdHViUm91dGluZTo6fkdDQXdhcmVKSVRTdHViUm91dGluZSgp
IHsgfQogCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgp
CiB7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykKKyAgICAgICAgbV92bS5tX3NoYXJl
ZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisKICAgICBpZiAobV9pc0pldHRpc29uZWQpIHsKICAg
ICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Igd2hlbiB0aGUgc3lzdGVtIHNodXRzIGRv
d24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRoZSBKSVQgc3R1YiByb3V0aW5lIHNldCBn
ZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8gZGVsZXRpbmcKQEAgLTc1LDkgKzgx
LDkgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmRlbGV0ZUZyb21HQygpCiB9CiAKIE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Ci0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0
b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAg
Y29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlu
a0luZm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAgIDogR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKQogICAgICwgbV9jZWxs
cyhjZWxscy5zaXplKCkpCiAgICAgLCBtX2NhbGxMaW5rSW5mb3MoV1RGTW92ZShjYWxsTGlua0lu
Zm9zKSkKIHsKQEAgLTEwNiw5ICsxMTIsOSBAQCB2b2lkIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYgdmlzaQogfQog
CiBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCAgY29uc3QgSlNDZWxs
KiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4m
JiBjYWxsTGlua0luZm9zLAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+PiYmIGtleXMsICBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4m
IGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgg
ZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCi0gICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0
dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykp
CisgICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtl
eXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiAgICAgLCBtX2NvZGVC
bG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKQog
I2lmIEVOQUJMRShERkdfSklUKQogICAgICwgbV9jb2RlT3JpZ2luUG9vbCgmbV9jb2RlQmxvY2tX
aXRoRXhjZXB0aW9uSGFuZGxlci0+Y29kZU9yaWdpbnMoKSkKQEAgLTEzMSw3ICsxMzcsNyBAQCBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6fkdDQXdhcmVKSVRTdHVi
Um91dGluZVdpdGhFeGNlcHRpb25IYQogI2VuZGlmCiB9CiAKLXZvaWQgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUoKQordm9pZCBHQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6YWJvdXRUb0RpZShWTSYpCiB7CiAgICAg
bV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlciA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKERG
R19KSVQpCkBAIC0xNTQsNiArMTYwLDcgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRo
RXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiAKIFJlZjxKSVRTdHViUm91
dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYga2V5cywKICAgICBWTSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25l
ciwKICAgICBib29sIG1ha2VzQ2FsbHMsCkBAIC0xNjUsMTggKzE3MiwxOCBAQCBSZWY8SklUU3R1
YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGlmICghbWFrZXNDYWxscykgewog
ICAgICAgICAvLyBBbGxvY2F0aW5nIENhbGxMaW5rSW5mb3MgbWVhbnMgd2Ugc2hvdWxkIGhhdmUg
Y2FsbHMuCiAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm9zLmlzRW1wdHkoKSk7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEpJVFN0dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUodm0sIGNvZGUsIFdURk1v
dmUoa2V5cykpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJ
VChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycy0+aml0VHlwZSgpKSk7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5k
bGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRo
RXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBX
VEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhj
ZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNF
bXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29kZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpOwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdU
Rk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dD
QXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4IDQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQx
OGU2Y2UxY2E5ZmQuLmIwNDZjOGU3NzlhZjA1MzkwNzkyMzZiNjUwYjYwMGJmNjYzZjFmM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvZGVPcmlnaW5Qb29s
OwogfQogCitjbGFzcyBBY2Nlc3NDYXNlOwogY2xhc3MgQ2FsbExpbmtJbmZvOwogY2xhc3MgSklU
U3R1YlJvdXRpbmVTZXQ7CiAKQEAgLTU0LDEyICs1NSwxMiBAQCBjbGFzcyBKSVRTdHViUm91dGlu
ZVNldDsKIC8vIGxpc3Qgd2hpY2ggZG9lcyBub3QgZ2V0IHJlY2xhaW1lZCBhbGwgYXQgb25jZSku
CiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewog
cHVibGljOgotICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mKTsKKyAgICBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYs
IFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmKTsKICAgICB+R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBW
TSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShj
b2RlLCB2bSwgV1RGTW92ZShrZXlzKSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZpc2l0b3I+CkBAIC02OCw2ICs2OSw4IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6
IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAgICAgICAgIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRl
cm5hbCh2aXNpdG9yKTsKICAgICB9CiAgICAgCisgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICZtX2tleXM7IH0KKwog
ICAgIHZvaWQgZGVsZXRlRnJvbUdDKCk7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC04MSw2ICs4NCw4
IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7
CiAKICAgICBib29sIG1fbWF5QmVFeGVjdXRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0pl
dHRpc29uZWQgeyBmYWxzZSB9OworICAgIFZNJiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOwogfTsKIAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8g
bWFyayBvbmUgYWRkaXRpb25hbCBvYmplY3QgZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgpAQCAtODgs
NyArOTMsNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJv
dXRpbmUgewogY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgewogcHVibGljOgogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoCi0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwq
PiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYs
IEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0xMDksMTAgKzExNCwxMCBAQCBjbGFz
cyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1Ymxp
YyBNYXJraW5nR0NBd2FyZUpJVAogcHVibGljOgogICAgIHR5cGVkZWYgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lIEJhc2U7CiAKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+Jiwg
Vk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2Fs
bExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CisgICAg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+PiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlND
ZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNp
dGVJbmRleCk7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVy
KCkgZmluYWw7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKSBmaW5hbDsKKyAgICB2b2lkIGFib3V0
VG9EaWUoVk0mKSBmaW5hbDsKICAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsK
IAogcHJpdmF0ZToKQEAgLTEzMiw2ICsxMzcsNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRp
bmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAog
Ly8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKIC8vICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCiAvLyAg
ICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywK
IC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBib29sIG1ha2VzQ2FsbHMsCiAvLyAg
ICAuLi4pOwpAQCAtMTQzLDcgKzE0OSw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyB3
YXkuCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCi0gICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29u
c3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAorICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYga2V5cywgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2Fs
bHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxs
TGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMs
IERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5kZXggOGY0NWIzNzdjMTY5NmE1MTZh
ODQzMDBiODkyMWY2YWRkNmEzZDRkZC4uMDY3YWJmZjFkNmFkMjAwNzU0NTE4MDA3N2IwYzRhNTVj
Nzc3MjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTQ2MCw2ICs0NjAs
NyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVu
dEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2VuZGlmCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAo
cmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIx
ID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsg
Ly8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdp
bmRvd3MpCkBAIC02NTIsNiArNjUzLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI2ID0gQVJNNjRSZWdpc3RlcnM6Ong2OyAvLyByZWdU
NgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSNyA9IEFSTTY0UmVnaXN0
ZXJzOjp4NzsgLy8gcmVnVDcKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIw
ID0gQVJNNjRSZWdpc3RlcnM6Ong4OyAvLyByZWdUOAorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vbkFyZ0dQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7IC8vIHJlZ1Q5CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBBUk02NFJlZ2lzdGVyczo6eDA7IC8v
IHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gQVJN
NjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5v
blByZXNlcnZlZE5vblJldHVybkdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCA1NTU2MzAzN2FlYjU4ZmVjOWIzZjAzZjdjZmVlMWZjMGRlM2Vj
ZTIzLi43ZmEwOGViZjZjODhhMzM1ZmIwYTk1OTU2Y2I1NGE4YjY4ODEzYTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC05MjQsNiArOTI0LDEwIEBAIHZvaWQgSklUOjpsaW5rKCkK
ICAgICAgICAgICAgICAgICBkb25lVGFyZ2V0LAogICAgICAgICAgICAgICAgIG5leHRIb3RQYXRo
VGFyZ2V0LAogICAgICAgICAgICAgICAgIHNsb3dQYXRoVGFyZ2V0KTsKKyAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFy
Z2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7Cisg
ICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDc1YzljYjk2YjEzNjUzMmYwODYxZjJmMGE4MDU4ZWZjNmIwNTZiMjQuLjQwOWY0
OWUyNjg4NmE4NDUxMzc3NDhkYzA2YWViMWI4NGRiNmFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtMjk0LDYgKzI5NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbkNhbGw7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGFwcGVuZENhbGwo
QWRkcmVzcyBmdW5jdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbChmdW5jdGlvbiwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4
Nl82NCkKICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShjb25z
dCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CkBAIC0z
OTUsMzkgKzQwMCwzOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gUHJvcGVydHkgaXMg
aW50LWNoZWNrZWQgYW5kIHplcm8gZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLgogICAg
ICAgICAvLyBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4gUmV0dXJucyB0aGUgc2xvdyBj
YXNlcy4gRmFsbC10aHJvdWdoCiAgICAgICAgIC8vIGNhc2UgY29udGFpbnMgcmVzdWx0IGluIHJl
Z1QwLCBhbmQgaXQgaXMgbm90IHlldCBwcm9maWxlZC4KLSAgICAgICAgSnVtcExpc3QgZW1pdElu
dDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUpIHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwg
SW50MzJTaGFwZSk7IH0KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1p
dENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwotICAgICAg
ICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9k
ZShjb25zdCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykg
eyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbElu
Zm8sIEludDMyU2hhcGUpOyB9CisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pOworICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhp
bmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlz
dCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdExv
YWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKIAogICAgICAgICAvLyBQcm9w
ZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29udGFpbnMgaW5kZWNp
bmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5vdCB5ZXQgbG9hZGVk
LiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVyby1leHRlbmRlZC4g
QmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLgogICAg
ICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3Vz
UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8p
OwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1w
TGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAg
ICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGlu
Z1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOwogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVk
QXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUp
OworICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUpOwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5
VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlU
eXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUoT3ApOwpAQCAtODcwLDEzICs4NzUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOworICAgICAgICB2
b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyk7CiAjaWYgT1MoV0lORE9X
UykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+KTsKICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB2
b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3Ms
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRh
ZGF0YT4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgQWRk
cmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsPgpAQCAtODg2LDYgKzg5NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZv
aWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAg
ICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJl
c3VsdChBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQp
OworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogICAgICAgICBzdHJ1Y3QgaXM2NEJpdFR5cGUgewpAQCAt
OTA2LDYgKzkyMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUob3Bl
cmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFy
Z2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIC8vIHg2NCBXaW5kb3dzIGNhbm5vdCB1c2Ugc3Rh
bmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhhbiA2NCBiaXRzLgor
ICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0VHlwZTx0eXBlbmFtZSBGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46OnZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoQWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbHNlIC8vIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFyZ3MuLi4gYXJncykKQEAgLTkxMyw2
ICs5NDAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50czxP
cGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lk
IGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgewor
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4o
dGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAg
IH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgpAQCAtOTIzLDYgKzk1NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQ
cm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAorICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBNZXRhZGF0YSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxP
cGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFy
Z3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOwor
ICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
dGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChPcGVyYXRpb25UeXBlIG9wZXJh
dGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4uLiBhcmdzKQogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAxYjQ5ZDQ4OWRhYTJiNzg2YWI3
OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMwYzdmNzY3MTM3OTQ3MGU0ZGQ5ZDRkYTgzNjVk
YTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTM5OCw4ICsz
OTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNDMyLDgg
KzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQ
cm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlcmF0b3JH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCiAgICAgYXV0byBk
b25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CkBAIC00ODAsOCArNDg3
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgICAgIHByZXNlcnZlZFJlZ3Mu
YWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJl
Z3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhp
dGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5h
bWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVn
cyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00OTksOCArNTA2LDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRydXRo
eSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1Qw
LCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1l
cy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNTI4LDE2ICs1MzUsMjMgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
ICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJy
YW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAgICAgIG5vdE9iamVjdC5hcHBlbmQo
YnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwogCiAgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CiAgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107
CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAg
ICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBp
dGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVu
dGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5j
aElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAgICAgICBDYWxsIGNhbGw7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZv
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCku
cmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRvbmVWUmVnLCByZWdU
MSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgcmVn
VDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKQEAg
LTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAogICAgICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygp
KTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGVjYzRlNWYzZmY2ZDA3
Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFmZGNhYzc4MmFjOWM4NzRlNTUwYWZm
YjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAg
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgp
KSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxvYWRJdGVyYXRvckdQ
UiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICBB
Y2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgcHJlc2VydmVkUmVncy5h
ZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklU
LAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAog
ICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25l
LmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXls
b2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25lUmVncywKKyAgICAgICAgICAgIElu
dmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAg
ICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwo
KSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRl
clJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdzLAorICAgICAgICAgICAgSW52YWxp
ZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4IDZmYTcyNDRlZjBh
MDhjOWYwNDdhMzIyMDRmNzM3ZDI5Mjg3MTkwNmYuLjg3NzcwYmY4NDhhM2FmYTlkZGJmMGIxODIy
MzdmMTNjYTBlMmJiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC01Miwx
MyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiBjbGFzcyBWTTsKIAogZW51bSBj
bGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBIb3N0Q2FsbFRodW5rLAot
ICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVKSVQsCi0gICAgREZHSklULAotICAg
IEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0Q2FsbFRodW5rID0gMGIwMDEsCisg
ICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJhc2VsaW5lSklUID0gMGIwMTEsCisg
ICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIxMDEsCiB9Oworc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7CitzdGF0aWNfYXNzZXJ0KFdURjo6Z2V0
TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8SklUVHlw
ZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9mSklUVHlwZSk7CiAKIGNsYXNzIEpJ
VENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogcHVibGljOgpA
QCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSklUVHlwZTo6SW50
ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0K
IAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElDKEpJVFR5cGUgaml0VHlwZSkKKyAgICB7Cisg
ICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VTaGFyZWRJ
Q0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwogICAgIHZpcnR1YWwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAg
ICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY1
MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNkZTY0NjIyY2UuLjU5YTNjMzFhMGQ1NDQyOWRi
NTFhYzYxNWZmOTcxZjA4NDVhMjBhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC00Myw5ICs0MywxMCBAQCBz
dGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHViSW5mbygpCiB9CiAKIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5
cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2ppdFR5cGUoaml0
VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9jb2RlQmxvY2sgPyBtX2NvZGVCbG9jay0+YWRk
U3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdpbikgOiBnYXJiYWdlU3R1YkluZm8oKTsKICAg
ICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNpdGU7CkBAIC02MCwyMCArNjEsMjIg
QEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCiAKICAgICBtX3N0dWJJ
bmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQ
YXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOworICAgIGlm
IChtX3Nsb3dQYXRoQ2FsbC5tX2xhYmVsLmlzU2V0KCkpCisgICAgICAgIG1fc3R1YkluZm8tPnNs
b3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihtX3Nsb3dQYXRoQ2FsbCk7CiAgICAgbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9u
ID0gc2xvd1BhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zbG93UGF0aEJl
Z2luKTsKIH0KIAogSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDog
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
YWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
VHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHVi
SW5mb0dQUikKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAg
LCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCiB7CiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
dmFsdWUucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MudGhpc0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsK
QEAgLTgzLDEzICs4NiwxNSBAQCBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAog
CiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBM
aW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAg
ICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xv
d1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQp
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9z
dHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwog
fQogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2Vt
YmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaXplKQogeworICAgIC8vIFdlIGdlbmVyYXRlIHRo
ZSBzYW1lIGNvZGUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFNoYXJlZElDIGlzIGVuYWJsZWQgYmVj
YXVzZSB3ZSBzdGlsbCBuZWVkIHRvIHVzZSBJbmxpbmVBY2Nlc3MKKyAgICAvLyBmb3IgdGhlIHBl
cmZvcm1hbmNlIHJlYXNvbi4KICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgc2l6ZV90
IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpOwogICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKQEAgLTEwMSw5ICsxMDYsOSBAQCB2b2lkIEpJVEJ5
SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXpl
X3QgaW5saW5lSUNTaQogfQogCiBKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJh
dG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQotICAgIDogSklUQnlJZEdl
bmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2Vk
UmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlw
ZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5
cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAgICAsIG1faXNM
ZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lLnVpZCgpID09IGNvZGVCbG9jay0+dm0oKS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGguaW1wbCgpKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2UucGF5bG9h
ZEdQUigpICE9IHZhbHVlLnRhZ0dQUigpKTsKQEAgLTExNSw5ICsxMjAsOSBAQCB2b2lkIEpJVEdl
dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0K
IAogSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0g
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVz
ZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRo
aXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRX
aXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKHRoaXNSZWdzLnBheWxvYWRHUFIoKSAhPSB0aGlzUmVncy50YWdHUFIo
KSk7CiAKQEAgLTEzMywxMCArMTM4LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVFB1dEJ5
SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoLCAKICAgICBFQ01B
TW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2Vk
UmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICAgICAsIG1fZWNtYU1v
ZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7CkBAIC0xNzEsMTQg
KzE3NiwxNSBAQCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KSVREZWxCeVZhbEdl
bmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCi0gICAgOiBCYXNlKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlW
YWwsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5l
cmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQor
ICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1Yklu
Zm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgIEFTU0VSVChiYXNlLnBheWxv
YWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BS
ID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9
IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3Vs
dC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZv
R1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0g
cmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKQEAgLTE5MSwyNiArMTk3LDM1IEBAIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxC
eVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lk
IEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBq
aXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0g
aml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRU
eXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9z
dHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
KyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlWYWxH
ZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVy
JiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZm
ZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkg
eworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1w
LmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9
CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRj
aCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlJZEdlbmVyYXRvcjo6
SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJS
ZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQogewog
ICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgQVNTRVJU
KGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fc3R1Yklu
Zm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnBy
b3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJl
c3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJ
bmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkg
IT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50
YWdHUFIoKTsKQEAgLTIyMywyMiArMjM4LDMwIEBAIEpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERl
bEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yCiB2
b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAg
PSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2pp
dFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxs
KENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZm
ZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkg
eworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1w
LmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9
CiB9CiAKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAotICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1
ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAg
Ly8gRklYTUU6IFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHBy
b3BlcnR5LgogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwpAQCAtMjUxLDE1ICsyNzQs
MTUgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKIH0KIAogSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlw
ZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJS
ZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBH
UFJSZWcgc2NyYXRjaDIsIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAg
ICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0OwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBl
OworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVn
OwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTI3OSwy
MSArMzAyLDI4IEBAIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0
b3IoCiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYgaml0KQogewotICAgIG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQ
dHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2p1
bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsCi0gICAgICAg
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fanVtcCkpOwotICAg
IAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgubG9jYXRpb25PZjxO
b1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXpl
KGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRy
ID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAg
ICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fanVtcCkpOworICAg
ICAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQYXRoLmxvY2F0aW9uT2Y8Tm9Q
dHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIH0KIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0
b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVn
aXN0ZXJzKQorSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAg
OiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNj
ZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1
bHQocmVzdWx0KQogewpAQCAtMzAyLDYgKzMzMiw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpK
SVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1
YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8t
PnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAtMzEyLDIwICszNDMsMjggQEAgSklU
R2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVs
KCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZv
LT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBK
SVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1
bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1
ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdl
bmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXpl
KAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
bV9qaXRUeXBlKSkgeworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgs
IHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zdGFydC5p
c1NldCgpKTsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgfQog
fQogCi1KSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IGJyYW5kKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBz
dHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIEFTU0VSVChh
Y2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kIHx8IGFjY2Vzc1R5cGUg
PT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kKTsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25z
dGFudElkZW50aWZpZXIgPSBmYWxzZTsKQEAgLTMzMyw2ICszNzIsNyBAQCBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxv
Y2sqIGNvZGVCbAogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLmJyYW5kR1BSID0gYnJhbmQucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBt
X3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52
LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7CkBAIC0zNDMsMTYgKzM4MywyNCBAQCBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbAogdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0g
aml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyht
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2Rl
UHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBq
aXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZp
bmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
K3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQu
aXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0
aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEJhc2U6
OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+
bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2IyNTUxOTU1NDhiMGYyZWI2NTEuLjVkYjgwYTcz
OTZkODU5OWVmMzI0NDJkMzRmYWM2MGE2ODg1N2NjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQxLDEyICs0MSwx
MiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBj
bGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdDsK
IAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHJvdGVjdGVkOgogICAgIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyk7CiAgICAgCiBwdWJs
aWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9z
dHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBK
SVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBAIC03NywxMyArNzgsMTMgQEAgY2xh
c3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAg
ICAgSklUQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUQnlJZEdlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc3R1YkluZm9HUFIpOwogCiBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
c2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVt
cC5pc1NldCgpKTsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgp
KTsKICAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wOwogICAgIH0KIApAQCAtMTA2LDggKzEw
Nyw4IEBAIGNsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRv
ciB7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsKKyAg
ICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9H
UFIsIEFjY2Vzc1R5cGUpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOwogCkBAIC0xMjAsOCArMTIxLDggQEAgY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisg
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0
aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0
aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKQEAgLTEzMyw4ICsxMzQsOCBAQCBjbGFzcyBKSVRQdXRC
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIHsgfQogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBK
SVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gs
IEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE1MSw4ICsxNTIsOCBAQCBjbGFzcyBKSVREZWxCeVZh
bEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklURGVs
QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAotICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBD
b2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdAogICAgIHsKQEAgLTE3Niw4ICsxNzcsOCBAQCBjbGFzcyBKSVREZWxCeUlkR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVREZWxCeUlkR2Vu
ZXJhdG9yKCkgeyB9CiAKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayos
IEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0
Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAg
ICB7CkBAIC0yMDAsOCArMjAxLDggQEAgY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAg
SklUSW5CeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5m
b0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07
CkBAIC0yMTEsOCArMjEyLDggQEAgY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6IHB1Ymxp
YyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigp
IHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAgICBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90
b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAorICAgICAgICBDb2RlQmxv
Y2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKKyAgICAgICAgR1BSUmVnIHZhbHVlLCBH
UFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoMSwgR1BS
UmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QgPSBmYWxz
ZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CkBA
IC0yMjksOCArMjMwLDggQEAgY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAK
ICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBK
U1ZhbHVlUmVncyByZXN1bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjU3LDggKzI1OCw4
IEBAIGNsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkg
eyB9CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBicmFuZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0
dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCBlNzlj
ZDM2ZWY1N2Q3YmRjZWNlMTc2OGQwNTg4YWZlZWQ4ODg1MDE1Li4yOGE2NDMzN2UyZjA4ZjVmMjBh
ZGE3MzdiYjc2YmNiNDczNjIyOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaApAQCAtMzMsMTcgKzMzLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1v
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2Rl
KSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3Vy
cmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQo
Y3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklURG91
YmxlOgotICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlv
biwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAg
IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsK
KyAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJl
dHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwor
ICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTEyOCw2ICsxMjgsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3QKICAgICByZXR1cm4g
Y2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwor
ICAgIGFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIGV4Y2VwdGlvbkNoZWNrKCk7Cit9CisKICNp
ZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVy
blR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKIHsKQEAg
LTE1Nyw2ICsxNjQsMTYgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2Fs
bDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRz
dCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1
ZUdQUik7CisjZWxzZQorICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJu
VmFsdWVHUFIpOworI2VuZGlmCit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBj
b25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0
ZXIgZHN0KQogewpAQCAtMTcxLDYgKzE4OCwxOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQog
ICAgIHJldHVybiBjYWxsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KK0FMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIGZ1bmN0aW9uLCBW
aXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
ZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEsIEpTVmFsdWVSZWdzKHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsK
KyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNl
bmRpZgorfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVnKQogewogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBiZDU1YTNkMDUxNmQ0NmI2N2Fl
NTk3YjZjM2E0ZjU4N2I1ZmRkNzMwLi5mNGUxOGUyNmQyODU0ODg2MWNhZTMyYjZmYWRhNDNlMmEx
NGI1MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE2
NCwxMSArMTY0LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUK
ICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIHJlZ1Q1LAogICAgICAgICByZWdUMywg
cmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CkBAIC0xODYsNyArMTg3LDE0IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0
YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKKworICAgIENh
bGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRl
Y2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVz
dWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJ
bmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAgIH0gZWxzZQorICAgICAgICBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzI3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRy
ZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxp
a2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0
TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7
CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudElu
c3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsxNzQyLDEzIEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRp
bmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBy
ZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgp
KSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0
dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJU
YWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAg
ICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZv
LT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5
VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4o
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3Mp
KSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVy
dHlHZW5lcmljKSk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJs
ZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC0xNzY5LDExICsxNzgyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5k
IEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShj
dXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNl
cyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlw
ZSwgYnlWYWxJbmZvKTsKICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMp
OwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtMTc5OSw3ICsxODEzLDE0IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVn
VDEpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
RGVmYXVsdDsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ5VmFsSW5mbyksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhh
c0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5
VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsKIAogICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0
ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOGRiMzU5ZWJkOGNkMDU2Njk3M2I4NjNjNDg2
NzQxYTdmYWUyMjQ1ZS4uY2YxMmRiMmRiODMyN2ZmZDEyODM0MTcxZjc3NDhjOWIxYTk1Mjk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAt
MTYyLDExICsxNjIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChwcm90byk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQog
ICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAg
cmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjFhZjM2NTMwOWQyNzkzMzcxZGU2ZWI0MDBi
NDQ2OGFhODM3MGIyNS4uMDI5MmI5YjhjNGVjZTI3YTgxNjc1MDBhMzVkNDEyNTY1NDlkNjMzNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDAy
LDcgKzEwMDIsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBpZiAocmVzdWx0ID09
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5
IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0g
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwg
c3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQpAQCAtMTA5NCw3ICsx
MDk3LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYgKHJlc3VsdCA9PSBPcHRp
bWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBv
cHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAg
ICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJO
X0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOworICAgICAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRy
KE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAg
ICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9i
YWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkp
OwpAQCAtMTI3OCw3ICsxMjg0LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYg
KG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAg
ICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
UmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAg
ICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CiAgICAgfQogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpA
QCAtMjU2Nyw3ICsyNTc2LDExIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNvZGVkSlNWYWx1ZSwgKEpTCiAgICAgICAgIGlm
ICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMAogICAgICAgICAgICAgfHwgb2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgewogICAgICAgICAgICAgLy8gRG9uJ3Qg
ZXZlciB0cnkgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlHZW5lcmljKTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVz
ZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVy
aWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY0NDY3ZTlhMjVlMTQ3N2UxZWMwNjM1ZDQwOTc1
NGQ4ZTc1MzkyZWYuLmI0OWZhZTQzYzMwZTdiNDhhZThmNDRmNzVhOTNkYTUzNDliNGVmYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSA8
d3RmL1Njb3BlZExhbWJkYS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgor
I2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtNjksMTIgKzcwLDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6
OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVn
cyk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlc3VsdFJlZ3MsIHJlZ1QyKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHBy
b3BlcnR5KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0
cnVlOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkU2xvd0Nhc2Uo
KTsKICAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3Mp
OwpAQCAtOTMsMTQgKzk3LDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAgICAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICAgICAgKyttX2dldEJ5VmFs
SW5kZXg7CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1tt
X2dldEJ5VmFsSW5kZXgrK107CisKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRp
bWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBwcm9maWxlLCByZWdUMCwgcmVnVDEpOwogI2Vsc2UKICAgICAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CiAgICAgICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgICAgICBBU1NFUlQoQnl0ZWNv
ZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTE4LDcg
KzEyMyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKICAgICAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzgsNyArMTQ1LDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTU3
LDkgKzE2NSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEw
ICsxOTEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAg
ICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3Vs
dFJlZ3MsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRC
eVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0yMDEsOCArMjEzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMjEx
LDYgKzIyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICNlbHNlCiAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMjI2LDcgKzIzOCw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHVi
SW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRh
LCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNDUsNyArMjU5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwog
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjM7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMjYzLDkgKzI3OCwxMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwg
ZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVy
bmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
eHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtMjg1LDEwICszMDEsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUdQUiwg
YmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFk
ZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIAog
ICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5j
ZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KQEAgLTMwMiw4ICszMjEs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZh
dGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYg
Z2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4Kytd
OwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQpAQCAtMzEyLDYgKzMzMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9z
ZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgYmFzZUdQUiwgYnJhbmRHUFIpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25T
ZXRQcml2YXRlQnJhbmRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMzI4LDkgKzM0NywxMiBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0
aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKT46OkFy
Z3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYKKwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTM0NiwxMCAr
MzY4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVC
cmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJy
YW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAg
ICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdl
bik7CiB9CiAKQEAgLTM1Nyw4ICszODIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogewog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3By
aXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzY3LDYgKzM5MSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7
CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CiAKQEAgLTM4Myw3ICs0MDgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8
ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVz
Pjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZh
dGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTQx
NSw4ICs0NDIsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgYmFzZSk7CiAgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleDsKICAgICBpZiAoIXBy
b3BlcnR5TmFtZUlzSW50ZWdlckNvbnN0YW50KSB7Ci0gICAgICAgIG5vdEluZGV4ID0gZW1pdFBh
dGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4
KTsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICAgICAgYXV0byBpc0ludDMyID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7Cisg
ICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4
SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzSW50MzIu
bGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdEluZGV4ID0gZW1p
dFBhdGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShu
b3RJbmRleCk7CisgICAgICAgIH0KICAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5
X3ZhbC4KICAgICAgICAgemVyb0V4dGVuZDMyVG9Xb3JkKHJlZ1QxLCByZWdUMSk7CiAgICAgfQpA
QCAtNDMyLDIzICs0NjUsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFycmF5TW9kZSBtb2RlID0g
Y2hvb3NlQXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2Ug
SklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91
YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGln
dW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFk
VHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25l
ID0gbGFiZWwoKTsKQEAgLTQ1Nyw3ICs0OTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUg
aW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC00NjUsNyArNDk5LDE2IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGlu
ZGV4aW5nU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8g
aXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4
aW5nU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAg
ICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZElt
bTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUp
KTsKKwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgb3V0T2ZCb3VuZHMgPSBicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGlj
TGVuZ3RoKCkpKTsKQEAgLTUxNSw3ICs1NTgsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTIzLDcgKzU2NiwxNiBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAK
LSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAg
ICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3Rl
ZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQ
dHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
cmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0gZWxzZQorICAg
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9y
YWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtNTY4LDggKzYyMCw4IEBAIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUs
IFB1dEtpbmQgcHV0S2luZCwKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdU
MCwgdmFsdWUsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29k
ZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJ
QyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNl
IGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGlu
IEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC01ODAsNyArNjMy
LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
T3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKICAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKIAotICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJl
Z1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFt
ZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdC
aXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC02MTksNiArNjc3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGly
ZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDAsIHJlZ1QxLCByZWdUMiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIoZWNtYU1vZGUudmFsdWUo
KSkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGJ5VmFsSW5mby0+bV9z
bG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
IDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtNjM4LDggKzY5Nyw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoZWNtYU1vZGUu
dmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIGF1dG8qIG9wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7Ci0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIENhbGwgY2FsbDsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgY2FsbCA9IGFwcGVuZENhbGwoaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9w
dGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3
LDcgKzcxNyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKQEAgLTY3NSw5ICs3MzYsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5m
b0dQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAK
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkg
dG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0
aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNh
bGwiKTsKQEAgLTY5Niw4ICs3NTgsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAg
ZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhK
bXApOworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXA7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZmFySnVtcChBYnNvbHV0
ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAgICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVt
cCgpOworICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgfQogICAgIAogICAg
IExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAgIApAQCAtNzI0LDYgKzc5MSw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVz
dGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CisgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC03NDMsNyArODExLDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmUKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5k
R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC03NjEsNyArODMxLDgg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygp
LgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpA
QCAtNzc5LDkgKzg1MCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BS
LCBwdXRLaW5kR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbCIpOwpAQCAtODQ2LDExICs5MTgsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QxLCBiYXNlKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDIpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9k
ZWxCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CkBAIC04ODEsNiArOTU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihi
eXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC04OTgsMTUgKzk3NCwxNiBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUu
dmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKIH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtOTE4LDcgKzk5NSw4IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4K
ICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAg
LTkzNSw5ICsxMDEzLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJh
dGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBp
dC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAg
LTk1NiwxMCArMTAzNSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgcHJvcGVydHkpOwogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBt
X2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7CkBAIC05OTEsNiArMTA3Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCByZWdUMCwgcmVnVDEsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKIApAQCAtMTAwOCwxNSArMTA5MSwxNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2Rl
R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5
X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRp
Y19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTAyOCw3ICsxMTEyLDggQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQo
dm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTA0NSw5ICsxMTMw
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVh
ZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0
LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAg
IGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4ICsx
MTU0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1
bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMDk0LDYgKzExODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5
SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0g
bV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTExMCw3ICsxMTk3LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRp
b25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
Pjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlH
ZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEx
MzMsOCArMTIyMiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGly
ZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTE2
MCw2ICsxMjQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CiAKQEAgLTExNzYsNyArMTI2Niw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVj
dE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOworICAg
IENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVj
dE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIwNyw4ICsx
Mjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1
bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMyNSw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDAp
OwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dl
dEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjYwLDYgKzEzNTIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdU
MCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9
IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTI3NSw3ICsxMzY4LDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFs
dWVHUFIpOwpAQCAtMTI5NCw3ICsxMzg5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAg
ICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTMxMSw5ICsxNDA3LDEwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbCIpOwpAQCAtMTMzNyw2ICsxNDM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwK
ICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJh
dGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEs
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTM1NCw3ICsxNDUyLDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9
IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwg
Y2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0
aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzczLDcgKzE0NzMs
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CkBAIC0xMzkyLDkgKzE0OTMsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0
eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0
IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8g
Y2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3By
ZXBhcmVDYWxsIik7CkBAIC0xNDE4LDExICsxNTIwLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCisgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMywgcmVnVDIs
IGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAgICAgICAgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDog
UHV0S2luZDo6Tm90RGlyZWN0KTsKLSAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3B1dEJ5SWRz
LmFwcGVuZChnZW4pOwpAQCAtMTQ0OCw2ICsxNTQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2wKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QxLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTE0NjUsNyArMTU2
Nyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBA
IC0xNDgxLDcgKzE1ODUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MDUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0
cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJh
c2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5
IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8g
dGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9p
ZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjI3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVEluQnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAg
ICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU0Niw2ICsxNjUyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG8KICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklu
QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OwogCkBAIC0xNTY0LDcgKzE2NzEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXpl
KSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjc1NCw4ICsyODYzLDggQEAgSklUUHV0QnlJZEdl
bmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2lu
ZCBwdXRLaW5kLAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOwogCiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVn
VDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjc2NSw3ICsy
ODc0LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICAvLyBKSVRQdXRCeUlkR2VuZXJh
dG9yIG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhh
dmUgdG8gcmVsb2FkIHRoZSB0YWcuCiAgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwogCi0g
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0
cygpKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2Vu
LnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25B
cmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdz
KHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5y
YXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHVi
SW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApA
QCAtMjgxNywyOSArMjkzMiwyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAgc3dp
dGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRE
b3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAg
ICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBlRm9y
SklUQXJyYXlNb2RlKGFycmF5TW9kZSk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAgICAg
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50
NjRBcnJheSBpbiBJQwogICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5IC8g
QmlnVWludDY0QXJyYXkgbmV2ZXIgY29tZXMgaGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKICAgICAgICAgICAgIEFTU0VS
VChpc0Zsb2F0KHR5cGUpKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51
bGxwdHIsIHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4NjYs
OCArMjk4MSwxNCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgICAgICJC
YXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
dG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFs
dWUoKSk7CiAgICAgfQotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
PmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgpAQCAtMjkwNiw4ICszMDI3LDEzIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BCiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGgg
Y2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
cHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8t
PnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRk
cmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJn
ZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAg
ICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA3MCwyMCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5
VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdp
dGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVw
IiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0
eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1Yklu
Zm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRy
VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlW
YWxHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9
IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8v
IFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24g
dW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBl
Y3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJl
dHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERp
cmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRl
bnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVy
SUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk2OCw3ICszMDk5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Cisg
ICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9
IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7Cisg
ICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0
VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVT
aGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKwogICAgIGxv
YWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNo
KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHks
IEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwog
ICAgIGxvYWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwg
ZnBSZWdUMCk7CkBAIC0yOTc3LDcgKzMxMTcsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERv
dWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAg
IHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91
c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGlu
Z1R5cGUgZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI5OTUsNyArMzEzNSwxNiBA
QCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0g
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3Rl
ZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAg
ICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3Rl
ZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRy
ZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRl
eGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZElt
bTMyKGV4cGVjdGVkU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJy
YW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5kZXgoc2Ny
YXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCByZXN1bHQpOwpAQCAtMzAwNCw3ICszMTUzLDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0
b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklE
IGJhc2UgPSByZWdUMDsKQEAgLTMwMjMsNyArMzE3MiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigt
QXJyYXlTdG9yYWdlU2hhcGUpLCBpbmRleGluZywgc2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBh
dGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5
U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5m
bykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoQmVsb3dPckVx
dWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJy
YXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZi
eVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVz
dGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBz
Y3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFi
b3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQXJyYXlTdG9yYWdlOjp2ZWN0
b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTMwMzUsNyArMzE5Myw3IEBAIEpJVDo6SnVtcExpc3Qg
SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5
cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzA2MCw3ICszMjE4LDE3
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
IGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkp
KTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RU
eXBlID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JU
eXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJl
c3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAg
IH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVh
cmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwor
CiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxv
dywgcHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91
bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CkBAIC0zMTExLDcgKzMyNzksNyBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMTM2LDcg
KzMzMDQsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlw
ZSh0eXBlKSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlz
Q29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5
cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5j
aDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxl
T3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMyMmM3NzA0Mjg5
YWJiMDgyZjlkZGYyMGQ4YzJmZjY2NWRmZDU2ZTIuLjI2ZjY3YzdiY2MwOTJiZDJmNTliMzRlZDVk
N2M2YjhhMDBkOTczODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BS
KCkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdH
UFIoKSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAg
ICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2Rl
bEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIo
KSk7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBi
YXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0
UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0yNTcsOCAr
MjU3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBy
ZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAgICAgICAgICAg
IGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC0zMDUsOCArMzA1LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRSZWdz
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MsIEludmFsaWRH
UFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwpAQCAt
MzkzLDggKzM5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlw
ZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3Ms
IGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRl
QnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMyw4ICs0MzMsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdz
LnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3Ms
IGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MsIEludmFsaWRH
UFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5k
KGdlbik7CkBAIC02NjAsOCArNjYwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6
OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVz
dWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTcwMSw4ICs3MDEsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVn
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwpAQCAtNzQ4LDggKzc0OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
cmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc5MSw4ICs3OTEsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMp
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1Q0LCByZWdUMyksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTgzNSw5ICs4MzUsOSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwog
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90
RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC04ODIs
OCArODgyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFz
ZSwgcmVnVDEpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKaW5kZXggODgxNDY0MGU2YWNjZWFjMWI5YjA2
OGE0MGM4OTQyODM0ODZjZGZhYi4uNDlhNmQ1MDY3ZTIzZDI1NGFiNGYwYzM1Njk4MDc2ZGE5YTA3
NTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGlu
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAt
MzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0Owog
Y2xhc3MgVk07CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CisKIC8vIFRoaXMgaXMgYSBiYXNlLWNsYXNz
IGZvciBKSVQgc3R1YiByb3V0aW5lcywgYW5kIGFsc28gdGhlIGNsYXNzIHlvdSB3YW50CiAvLyB0
byBpbnN0YW50aWF0ZSBkaXJlY3RseSBpZiB5b3UgaGF2ZSBhIHJvdXRpbmUgdGhhdCBkb2VzIG5v
dCBuZWVkIGFueQogLy8gaGVscCBmcm9tIHRoZSBHQy4gSWYgaW4gZG91YnQsIHVzZSBvbmUgb2Yg
dGhlIG90aGVyIHN0dWIgcm91dGluZXMuIEJ1dApAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBKSVRT
dHViUm91dGluZSB7CiAgICAgfQogICAgIAogICAgIHZpcnR1YWwgfkpJVFN0dWJSb3V0aW5lKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFib3V0VG9EaWUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJv
dXRUb0RpZShWTSYpIHsgfQogICAgIAogICAgIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpcyBj
b3B5YWJsZSwgYnV0IGF0IHRoZSBjb3N0IG9mIHJlZmVyZW5jZQogICAgIC8vIGNvdW50aW5nIGNo
dXJuLiBSZXR1cm5pbmcgYSByZWZlcmVuY2UgaXMgYSBnb29kIHdheSBvZiByZWR1Y2luZwpAQCAt
OTgsNiArMTAwLDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAgIC8vIGRlc3Ryb3llZC4K
ICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFZNJik7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3Vu
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYwNjg2MjczZGRhODFjYmI2ZDAxY2QyMWRk
MDk4OWNjNmUyYjguLjQ0NzA1NWJmZThhYmVmYWE1NmZlNzhlODA2OGQyY2M2Njg5MzIzYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisj
aW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxDb2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2
OCw3IEBAIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2Fs
bGVyRnJhbWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBo
aWNDYWxsQ2FzZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3Vu
dHMpCi0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCisgICAgOiBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0sIHsgfSkKICAgICAsIG1fdmFyaWFudHMoY2Fz
ZXMuc2l6ZSgpKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAzNTkzY2NlODg2MDg4MDE4MzQ2
YTgwOGU1Zjg2NDc4NzFhNDQxYjI5Li4wMWQ5MmMxYjhmMmNjZDVjZTQwODQyNDEzY2U0MjZlYTQz
ZmU2YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTcxLDggKzcx
LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9j
YXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0
clRhZz4gY2FsbCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAg
ICByZXR1cm4gc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uLnJldGFnZ2VkPENGdW5jdGlvblB0clRh
Zz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6RlRMSklUKSB7CiAgICAgICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFn
PiB0YXJnZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+
KGNhbGwpOwpAQCAtMTA1LDYgKzEwNywxNSBAQCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRh
Z2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpOwogfQogCitzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVk
SUMoKSkgeworICAgICAgICBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24gPSBuZXdDYWxsZWVGdW5j
dGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgY2FsbCwgbmV3Q2FsbGVl
RnVuY3Rpb24pOworfQorCiBlbnVtIElubGluZUNhY2hlQWN0aW9uIHsKICAgICBHaXZlVXBPbkNh
Y2hlLAogICAgIFJldHJ5Q2FjaGVMYXRlciwKQEAgLTIwOSw3ICsyMjAsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqCiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxs
KCk7CiAgICAgICAgIGNvbnN0IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlBy
aXZhdGVOYW1lIHx8IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VDZWxs
KSkgewpAQCAtMjE5LDcgKzIzMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAg
ICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6Omdl
bmVyYXRlQXJyYXlMZW5ndGgoc3R1YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9w
dGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLmluaXRBcnJheUxlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjI3LDEw
ICsyMzgsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgbmV3
Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJh
eUxlbmd0aCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmlu
ZyhiYXNlQ2VsbCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkg
PT0gQ2FjaGVUeXBlOjpVbnNldCAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVu
Z3RoKHN0dWJJbmZvKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUo
KSA9PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vz
czo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJp
bmdMZW5ndGgoc3R1YkluZm8pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29k
ZUlubGluZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTQsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgog
ICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQogICAgICAgICAgICAgICAg
ICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAg
ICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAgICAgICAgICAgICBib29s
IGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5
QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAg
ICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAg
IExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFy
dFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkp
OwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0
ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm8uaW5pdEdldEJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDI1LDcgKzQzNiw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0
QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0g
YmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
KHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5B
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM5LDcg
KzQ1MCw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZUdldEJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1
YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3By
aWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRC
eUZ1bmN0aW9uKGtpbmQpKTsKIH0KIAogCkBAIC01MjksNyArNTQwLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2QKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0
aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyKCkpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0g
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5s
aW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDAs
NyArNTUxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKIHZvaWQgcmVwYXRjaEFycmF5R2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewogICAgIGlmICh0cnlDYWNoZUFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2UsIGluZGV4LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25HZXRCeVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQ
dXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtp
bmQpIC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2LDcg
KzY0Nyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5ICYm
IChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09
IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3
Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYg
KHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKICAg
ICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5nUHJv
cGVydHkpIHsKQEAgLTY1OCw3ICs2NjksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAg
ICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6
OmdlbmVyYXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90
LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJ
bmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJ
ZFNlbGZQYXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgp
ID09IGJhc2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJv
cHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmlu
aXRQdXRCeUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNh
Y2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtODAxLDcgKzgx
Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC04MTUsNyArODI2LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBp
ZiAodHJ5Q2FjaGVQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2
ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRG
dW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVy
aWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCiBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJv
cGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1v
ZGUgZWNtYU1vZGUpCkBAIC04NDYsNyArODU3LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MK
ICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAg
ICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBuZXdPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtODc0LDcgKzg4NSw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAgICAgICAg
ICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7
Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Cisg
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5n
SW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04
OTEsOSArOTAyLDkgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAKICAgICBpZiAodHJ5Q2FjaGVE
ZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZlVXBP
bkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVy
aWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgICAgICBpZiAoa2lu
ZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJ
ZEdlbmVyaWMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVC
eVZhbEdlbmVyaWMpOwogICAgIH0KIH0KIApAQCAtOTM3LDcgKzk0OCw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJh
dGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Oklu
QnlJZFNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRj
aGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ss
IHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBA
IC05ODQsNyArOTk1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlE
KAogCiAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKIAotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUo
CiAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0
IDogQWNjZXNzQ2FzZTo6SW5NaXNzLCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kID8gc2xvdC5jYWNo
ZWRPZmZzZXQoKSA6IGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8u
YWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6
c3RyaWN0KCksIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CkBAIC05OTMsNyArMTAw
NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAg
ICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEwMDcsNyArMTAxOCw3IEBAIHZvaWQgcmVwYXRjaEluQnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNP
YmplY3QqCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
CiAgICAgaWYgKHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25D
YWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgICAgIHJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbkJ5SWQpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVDaGVja1ByaXZhdGVCcmFuZCgKQEAgLTEwMzIsNyArMTA0Myw3IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFz
ZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVC
cmFuZEFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQ
cm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJh
bmRJRCwgc3RydWN0dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nl
c3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBz
dHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElE
LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA0MCw3ICsxMDUxLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDU0LDcgKzEwNjUsNyBAQCB2b2lkIHJlcGF0Y2hD
aGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jawogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKIAogICAgIGlmICh0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkK
LSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7Cisg
ICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCkBAIC0xMDkx
LDcgKzExMDIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRl
QnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OlNldFByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0
ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
KTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVT
ZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdT
dHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElE
LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA5OSw3ICsxMTEwLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9j
aywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1
bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExMTMsNyArMTEyNCw3IEBAIHZv
aWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJ
bmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJp
dmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFu
Y2VPZigKQEAgLTExMzMsNyArMTE0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUluc3RhbmNlT2YoCiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIHZhbHVlID0gdmFsdWVW
YWx1ZS5hc0NlbGwoKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+c3Ry
dWN0dXJlKHZtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7
CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCog
cHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7
CiAgICAgICAgIGlmIChwcm90b3R5cGUpIHsKICAgICAgICAgICAgIGlmICghanNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCB2YWx1ZSkpIHsKQEAgLTExNjgsOSArMTE3OSwxMyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNo
YWJsZUp1bXAoKSwKLSAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSByZXN1
bHQuY29kZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFi
bGVKdW1wKCksCisgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCkBAIC0xMTg1LDcgKzEyMDAsNyBAQCB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9m
KAogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAg
ICBpZiAodHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZh
bHVlLCBwcm90b3R5cGVWYWx1ZSwgc3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hl
KQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOworICAgICAg
ICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOwogfQogCiBzdGF0aWMgdm9pZCBs
aW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGVSZWYpCkBAIC0xMjAyLDcgKzEy
MTcsNyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2Fs
bExpbmtJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwog
ICAgIGxpbmtTbG93UGF0aFRvKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAg
Y2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZp
cnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiB9CiAKIHN0YXRp
YyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBjYWxsZWUpCkBAIC0xMzIwLDcgKzEz
MzUsNyBAQCBzdGF0aWMgdm9pZCBsaW5rVmlydHVhbEZvcihWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Io
dm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0
dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNs
b3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsg
fSkpOwogICAgIGNhbGxMaW5rSW5mby5zZXRDbGVhcmVkQnlWaXJ0dWFsKCk7CiB9CiAKQEAgLTE2
NDEsMTQgKzE2NTYsMjYgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKIAogdm9pZCByZXNldEdl
dEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEdl
dEJ5S2luZCBraW5kKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRC
eUZ1bmN0aW9uKGtpbmQpKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgIHN3aXRjaCAoa2luZCkg
eworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToK
KyAgICBjYXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkRpcmVj
dDoKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxv
Y2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1h
bEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOworICAg
ICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgdXNpbmcgRnVuY3Rp
b25UeXBlID0gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7
Ci0gICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0
PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBGdW5jdGlvblR5
cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihy
ZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBGdW5jdGlvblR5cGUgb3B0
aW1pemVkRnVuY3Rpb247CiAgICAgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0T3B0aW1pemU7CkBAIC0xNjY1LDQ1ICsxNjkyLDQ4IEBAIHZvaWQgcmVzZXRQdXRC
eUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAg
ICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dE9wdGltaXplOwogICAgIH0KIAotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlvbik7Ci0g
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlvbik7CisgICAg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
KTsKIH0KIAogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQogewogICAgIGlmIChraW5kID09IERl
bEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAg
ICAgZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7
Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotc3RhdGljIHZvaWQg
cmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3N0YXRpYyB2
b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQogewotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHVi
SW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cisg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgc3R1YkluZm8ubV9jb2Rl
UHRyID0gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIGVsc2UKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAogdm9pZCByZXNldEluQnlJRChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwor
ICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpy
ZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotdm9pZCBy
ZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldElu
c3RhbmNlT2YoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKLSAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8pOworICAgIHJlc2V0UGF0Y2hh
YmxlSnVtcChjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldENoZWNrUHJpdmF0
ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwot
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJh
bmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFNl
dFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRl
QnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vz
c05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKFZNJiB2bSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU09iamVjdCogY2FsbGVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAppbmRleCAzMTM3OWRjNGU1YTlkYzJkYzZlYTQ5MzE3Nzk0NzI2YTAw
MjAzNTFhLi4zYTE5ZmQzNjU0OWQxYTg0ODA5Zjk0ZGFkYTJkZmJlNTcwMDBmZDEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIHJlc2V0R2V0
QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNl
dFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXREZWxC
eShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0
SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlc2V0SW5zdGFu
Y2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBkOTQ5N2ViZDRmMGJhNmY2
MjU3OWRjZDU0MjNhN2I5ODQ3ZTk0NGUyLi43ZTBlNTkzMjc0NWI4YWFlZGI5OTBkOThkYTY2Mjc3
ODQzNWNlMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKQEAgLTUzNiw2ICs1MzYsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENh
Z2UoKTsKICAgICB2KEJvb2wsIHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VUb3BMZXZlbEF3YWl0LCB0cnVlLCBOb3JtYWwsICJh
bGxvdyB0aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLiIpIFwK
ICAgICB2KEJvb2wsIHZlcmJvc2VFeGVjdXRhYmxlUG9vbEFsbG9jYXRpb24sIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYXJlZElDLCBpc0FSTTY0KCksIE5vcm1h
bCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2MGY5OGY1NjNhNzZlZGVkYTUyYTA3
Mjg4M2U0YmFmZWJkNzJkZWU1Li45YzU0Y2I0NDg2ZTZlNDZhNGE0ZjgxNDZjNzAyMDBhZTUwMGI5
OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vz
c0Nhc2UuaCIKICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3Qu
aCIKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKQEAgLTU2Niw2ICs1NjcsNyBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwg
Ym9vbCogc3VjY2VzcykKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJ
SW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRD
VElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAg
ICAgbV9zaGFyZWRKSVRTdHVicyA9IG1ha2VVbmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAg
ICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApAQCAtNjQ5LDYgKzY1MSw4IEBAIFZNOjp+Vk0o
KQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjcmF0Y2hCdWZmZXJzLnNpemUoKTsg
KytpKQogICAgICAgICBWTU1hbGxvYzo6ZnJlZShtX3NjcmF0Y2hCdWZmZXJzW2ldKTsKICNlbmRp
ZgorCisgICAgbV9zaGFyZWRKSVRTdHVicyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgVk06OnByaW1p
dGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2b2lkKiBhcmd1bWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCmluZGV4IDJkM2NkNDY2ODg4YmNlM2FmYjVhODg5MzYxNzI3NThmMThj
OTNmYTYuLjlmZDQ5MGU1MjkzNGEyOWIyMjBlNjA5ODVkMjFmMGY0ZGE2ZWE2NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc0LDYgKzE3NCw3IEBAIGNsYXNzIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hh
ZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRh
YmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwpA
QCAtODQ2LDYgKzg0Nyw4IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjaWYgRU5BQkxFKEZUTF9K
SVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkSklUU3R1YlNldD4gbV9zaGFyZWRKSVRTdHViczsK
KwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMs
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAK
</data>
<flag name="commit-queue"
          id="451262"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429960</attachid>
            <date>2021-05-27 17:15:45 -0700</date>
            <delta_ts>2021-05-27 17:42:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527171545.patch</filename>
            <type>text/plain</type>
            <size>421579</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5jODI1NWZlMTFmNjExOWJh
MmQ2NDg0MDE2M2RlOWUyODM3YjgzZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNTIgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNl
OjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9t
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjbG9uZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpTaGFy
ZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1
YlNldDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleTo6
S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjplcXVh
bCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9y
OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5z
bGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRy
YW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVy
VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjphZGQp
OgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpyZW1vdmUpOgorICAgICAgICAoSlND
OjpTaGFyZWRKSVRTdHViU2V0OjpmaW5kKToKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
aDoKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlc2V0SklURGF0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlU2hh
cmVkSUMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpnZXRTY3JhdGNoUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXApOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFj
Y2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xv
bmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldDo6aGFzaCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omlu
c3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpz
dWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKToK
KyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZSk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGxXaXRob3V0RXhjZXB0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJv
dXRUb0RpZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFwcGVuZENhbGwpOgor
ICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6
OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2gpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250
ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFy
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtl
Q2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRo
Q2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRW
aXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0NvbGxlY3Rpb24pOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hFeHRyYVJlZ0FyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaE5vbkFyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRHUFJFeHRyYUFyZyk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkU3RhY2tBcmcpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFBva2UpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBva2VPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjptYXJz
aGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50
c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNFbnRyeUltcGwpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbCk6CisgICAgICAgICogaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSk6Cisg
ICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJh
dG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGpp
dC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZVNoYXJlZElDKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpK
SVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUQnlJ
ZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpK
SVRHZXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpK
SVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
OjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6
OkpJVEdldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChK
U0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
cml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0
ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFy
cmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVs
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAo
SlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9h
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFib3V0
VG9EaWUpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6a2V5cyBjb25zdCk6CisgICAg
ICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRQdXRJQ0NhbGxU
YXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2FsbCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlEKToKKyAg
ICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQ
cml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2Yp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OmxpbmtT
bG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAoSlNDOjpy
ZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6
cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6CisgICAgICAg
IChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0
U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3Ry
dWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5k
ZXggZTUxNzU3ZTliOGZjNjQyODc4MjdjMTZkMDJkMjFjYzIxOGZiMTMyNi4uODNjYjM2ZDA2Zjgz
MTJjODk1ZjZhNDliMjU2YmJlYzM0NjI3M2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTIzNCw4ICsyMzQsOCBAQCBjbGFzcyBMaW5rQnVm
ZmVyIHsKICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIENvZGVMb2NhdGlvbkNhbGw8dGFn
PiBsb2NhdGlvbk9mKENhbGwgY2FsbCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYWxsLmlzRmxh
Z1NldChDYWxsOjpMaW5rYWJsZSkpOwotICAgICAgICBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENh
bGw6Ok5lYXIpKTsKKyAgICAgICAgLy8gQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6Okxpbmth
YmxlKSk7CisgICAgICAgIC8vIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOwog
ICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbDx0YWc+KGdldExpbmtlckFkZHJlc3M8dGFn
PihhcHBseU9mZnNldChjYWxsLm1fbGFiZWwpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVmZjc4MjI2MmU3MTg1Yjg3
NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNTc5ZDg1OGRkNzcyYzY1N2IyYmI0YzVhNzRhYmExMDNm
ZWRmYjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3
IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIs
IG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
OwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBu
ZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmll
ciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAor
UmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAgICBW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3
U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQs
IG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2Uo
KQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1
Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHN3
aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09iamVj
dCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRpdGlv
blNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiArMTA2Myw4IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9j
YXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAg
aWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEzMTcs
NiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0
eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BS
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBA
IC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQg
QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgVk0mIHZtID0gc3Rh
dGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBNb2R1
bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0
MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgorICAg
IGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJp
YzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2Ug
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nl
c3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7
CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7CisgICAgICAgICAgICBpZiAo
IWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gc3Ry
dWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3VyclN0cnVjdHVy
ZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgIGN1cnJTdHJ1
Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNo
YWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpX
YXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKKyAgICAgICAgICAgIHN0
YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5vdywgd2Ugb25seSBhbGxv
dyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVp
dmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlk
aXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgLy8g
VGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0
IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgICAgIC8vIEFj
Y2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1ZS4KKworICAgICAgICAg
ICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1ldDogIiwgY29uZGl0aW9u
LCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0IGhhcyBhIHdlYWsgcmVm
ZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVyZS4KKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlNDZWxsPih2
bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAtMTQxNyw3ICsxNTAyLDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOwog
CiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVX
YXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb25k
aXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJsb2NrLCBj
b25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTU4Miw3
ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2Fy
eSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0
ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgwMiw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5k
aWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJ
bmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9
PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE4MTQsOCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRl
Lm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChj
b2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0
ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBz
cGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsK
KyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFs
dWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyAr
MTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVy
QnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUu
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOwor
CisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJz
Ojpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsyMDMz
LDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFz
ZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1
ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYg
KzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygp
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0yMTkxLDYgKzIyOTcsMTMg
QEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5VHlwZShBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBKSVRTdHVi
Um91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tD
b25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nl
c3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3Qg
Y2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhl
bSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0Fj
Y2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1f
dHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhz
Lm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5
ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5t
X3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobGhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSAhPSByaHMubV9jb25k
aXRpb25TZXQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxpdGVy
ID0gbGhzLm1fY29uZGl0aW9uU2V0LmJlZ2luKCk7CisgICAgYXV0byByaXRlciA9IHJocy5tX2Nv
bmRpdGlvblNldC5iZWdpbigpOworICAgIGZvciAoOyBsaXRlciAhPSBsaHMubV9jb25kaXRpb25T
ZXQuZW5kKCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAgICAgaWYgKCEoKmxpdGVyID09ICpy
aXRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChs
aHMubV90eXBlKSB7CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CisgICAgY2FzZSBSZXBsYWNlOgorICAgIGNhc2UgTWlzczoKKyAgICBjYXNlIEdl
dEdldHRlcjoKKyAgICBjYXNlIEluSGl0OgorICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQXJy
YXlMZW5ndGg6CisgICAgY2FzZSBTdHJpbmdMZW5ndGg6CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBDaGVj
a1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICBjYXNlIEluZGV4
ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0
QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAg
Y2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVy
OiB7CisgICAgICAgIC8vIEdldHRlciBhbmQgU2V0dGVyIHJlbGllcyBvbiBDb2RlQmxvY2ssIHdo
aWNoIG1ha2VzIHNoYXJpbmcgaW1wb3NzaWJsZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3Nv
ckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNj
ZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCk7CisgICAgICAgIGlmIChsaHNkLm1fZG9tQXR0cmlidXRlIHx8IHJoc2QubV9k
b21BdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBs
aHNkLm1fY3VzdG9tU2xvdEJhc2UgPT0gcmhzZC5tX2N1c3RvbVNsb3RCYXNlCisgICAgICAgICAg
ICAmJiBsaHNkLm1fY3VzdG9tQWNjZXNzb3IgPT0gcmhzZC5tX2N1c3RvbUFjY2Vzc29yOworICAg
IH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBs
aHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9
IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhz
ZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAgICB9
CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9
IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNk
ID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBs
aHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1fbW9k
dWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSByaHNk
Lm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAgIGNh
c2UgSW5zdGFuY2VPZk1pc3M6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAgICAg
ICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBh
dXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1
cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdk
NjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uOWMyZmIzZWE2YWQyOGIxNzQ0YzA5Nzc4
OGRjNjRiMzU1YjRkMGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIsNyBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8v
IFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBv
bHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBh
bGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVm
dWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNl
IHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNz
Q2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVS
KEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpA
QCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVu
dHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0
dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9
IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJy
YW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRl
QnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8
QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQpAQCAtMjUzLDExICsyNTYsMzkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9
CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRpdGlvblNl
dC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5LCBtX3N0
cnVjdHVyZS5nZXQoKSwgbV9vZmZzZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFs
SW5TaGFyaW5nKGNvbnN0IEFjY2Vzc0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsK
LSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2Uo
Y29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vz
c0Nhc2UmJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQor
ICAgICAgICAsIG1fc3RhdGUoV1RGTW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3Zp
YVByb3h5KFdURk1vdmUob3RoZXIubV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RG
TW92ZShvdGhlci5tX29mZnNldCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhl
ci5tX3N0cnVjdHVyZSkpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5t
X2NvbmRpdGlvblNldCkpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3Zl
KG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNv
bnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisg
ICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3Ro
ZXIubV92aWFQcm94eSkKKyAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlv
blNldChvdGhlci5tX2NvbmRpdGlvblNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0No
YWluKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVy
KG90aGVyLm1faWRlbnRpZmllcikKKyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9y
PShjb25zdCBBY2Nlc3NDYXNlJikgPSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBt
X3N0YXRlID0gUHJpbW9yZGlhbDsgfQpAQCAtMjc1LDcgKzMwNiw3IEBAIGNsYXNzIEFjY2Vzc0Nh
c2UgewogCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNj
ZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFj
dGlvbiB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBp
biB3aGljaCB0aGUgY2FzZQogICAgIC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdh
dGNocG9pbnQgc2V0cyB0aGF0IHdpbGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0
NiwxNjggQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCitjbGFzcyBTaGFyZWFibGVKSVRTdHViUm91dGluZSBmaW5hbCA6IHB1
YmxpYyBKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgU2hhcmVhYmxlSklUU3R1YlJvdXRp
bmUoVk0mIHZtLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKKyAgICAg
ICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwg
bV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9r
ZXlzOyB9CisKKyAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1f
a2V5czsKK307CisKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKFNoYXJlZEpJVFN0dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJT
ZXQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBrZXlzKQorICAgIHsKKyAgICAgICAgSGFzaGVyIGhh
c2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAgICAgICAgV1RGOjph
ZGQoaGFzaGVyLCBrZXktPmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwor
ICAgIH0KKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7CisgICAgICAg
ICAgICBLZXkoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAg
ICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQ
UihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAg
ICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0
dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJz
KHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChi
aXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRTdHViUm91
dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAg
ICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAg
ICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAg
ICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAg
ICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCAhPSBiLm1fd3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
SklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJl
ZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAg
IEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAg
ICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVkLT5rZXlz
KCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBh
LCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJjaGVyIHsK
KyAgICAgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5cyk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6
OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byYgYXZlYyA9ICphLm1fd3JhcHBlZC0+a2V5cygpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBhdXRvJiBidmVjID0gYi5tX2tleXM7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdmVjLnNpemUoKSA9PSBidmVjLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYnZlYy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFy
aW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgIEdQ
UlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgR1BS
UmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsK
KyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYgbV9rZXlzOwor
ICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5LCBKSVRT
dHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleS5tX3dy
YXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChIYXNoOjpL
ZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0KKworICAg
IHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAgICAgaWYg
KGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3ZlKGl0ZXIp
OworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVyJiBzZWFy
Y2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hhcmVkSklU
U3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKGVu
dHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1fd3JhcHBl
ZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4
NC4uNDJkMDc5NGRkNjI0MGM2MzgwYzliYTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBz
dHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihC
eVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdkZjA1ZTEw
YmM5MGI2NTZmMzUwM2M4NWMwNTRjNWQzYWZhN2M2YjkuLjE4OWE1ODQ3NzBmMDJjYjM4N2Y3NWQ5
YTQ0MzZmY2I1MDg0Y2U0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC04NjEsNyArODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkK
ICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgp
KSB7CiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+
bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAg
ICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5m
by0+ZGVyZWYoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAg
ICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KSB7Ci0gICAgICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1
YkluZm8tPmFib3V0VG9EaWUoKm1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IDc3MzI5ZjNhNDFlMDRhMWM3MmRiNjJjMWQ1OGY0ZjVjMzYzOTcyNTEuLjgxYWI5N2Zi
ZDgxOGIxZmI3YzFmYmZlZDQwMjQ5ZmM5MzcxNjNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMCw2ICs0MjAsMTEgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09
IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKworICAgIGJvb2wgdXNlU2hhcmVkSUMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEpJVENvZGU6OnVzZVNoYXJlZElDKGppdFR5cGUo
KSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5
N2ZmMWNmZjdjZjM4MzYuLjZhMzBlNjM4ZTIwMGNhMDgwZTE0YmFhZDg3YWU4ZTE2NGZmNjljNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1heUJlTnVsbCh2bSwgb3duZXIsIGN1c3Rv
bVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFs
U2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLCBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9
IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0
ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51
bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RC
YXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVl
U2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2N1c3Rv
bUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJU
YWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05
MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nh
c2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAgbV9kb21BdHRyaWJ1dGUg
PSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
cwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgIEdQUlJl
ZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYgKzIyNSwxMSBAQCB2b2lk
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6IGZwU2NyYXRjaCkKICAg
ICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwogICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JD
Q2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQu
Y29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
cmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlm
CiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92
ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNu
aXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXgg
ODczZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMi4uMTAwZmIyN2VlODU2NjE2
ZmI0MTg0MjVlYzJjNzIzNDk0YTRhZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC01MywxNyArNTMs
MTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFi
bGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciosIEdQUlJlZyBiYXNlRm9yR2V0
R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAor
ICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJv
b2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1
c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAgIEpTT2JqZWN0KiBjdXN0
b21TbG90QmFzZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJl
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
LCBib29sIHZpYVByb3h5ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBjdXN0b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJh
c2UgPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVBy
aW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xv
bmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKIAogICAgIH5HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhm
YWZkOThkMGIyODU5M2NiYmIwNTdiYWU5NmZiMzIxYS4uMTJkMWI1YTBlYzdkZTVmNjc3YWQzNmRh
MTJiYWNlNDA2MjVhMGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUFjY2Vzcy5jcHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBHUFJSZWcgZ2V0U2NyYXRjaFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9z
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkp
CiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMzc5LDggKzM4MSw0NSBAQCBib29s
IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3Zv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKKyAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9
IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENDYWxsSGVscGVycyBqaXQ7
CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBh
IG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUg
bWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7
CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fz
c2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVD
YWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZl
ci5saW5rKGp1bXAsIHRhcmdldCk7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5v
UHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9p
ZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJl
ZElDKCkpIHsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpID09IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
KSB7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnN0dWJJbmZvKSwgc3R1YkluZm8ubV9zdHVi
SW5mb0dQUik7CisgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigp
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1
bXAoKTsKKworICAgICAgICAgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxp
bmUoInN0dWIgY2FsbHMiLCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uZG9u
ZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bGlua2VkQ29kZUlubGluZSk7CisgICAgICAgIH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRy
ID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKIAogICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CkBAIC0zOTQsNiArNDMzLDI2IEBAIHZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0
clRhZywgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7CiB9CiAKK3ZvaWQg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1
dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQg
aGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2Yg
YW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVB
U0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVt
cCwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKworICAgIEZJTkFMSVpFX0NPREUo
bGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVt
cCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4
ZjIyNjQwNmM3ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQuLjhkNjYwMWM4Yjk4ZDgxMjVlYzZiMTAw
YTA3OWM1MWUxMTJhMzgzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmgKQEAgLTEwNCw3ICsxMDQsMTAgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsK
ICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZv
JiwgSlNBcnJheSopOwogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0
cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChT
dHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKLSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHVi
QXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0
dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2Vs
ZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJv
b2wgZ2VuZXJhdGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5j
cHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFlNzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4
ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdjMTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0z
MiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IElu
c3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5
cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgcHJvdG90eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
cHJvdG90eXBlKSk7CiB9CiAKIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFBy
aW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5
IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQs
IENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90
eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3ND
YXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9m
QWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmluZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5
OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNz
Q2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNj
ZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0
YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gQWNjZXNzQ2FzZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsK
ICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYs
CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZv
aWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VP
ZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFk
YzIzMzY5MzNkNjc2YzNiZTllOTBjNjAxODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZl
NjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4
ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rp
b24uc2V0KHZtLCBvd25lciwgaW50cmluc2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVm
PEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGlu
dHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1
M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEyYmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMg
Ym9vbCBjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAg
ICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9u
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNG
dW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApp
bmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEwOGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFm
NDgxNTU2NjE1MTcwODVhODhlMTlhMDczYWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3Bw
CkBAIC00NSwxOCArNDUsMTggQEAgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVs
ZUVudmlyb25tZW50LnNldCh2bSwgb3duZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVF
bnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQor
UmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVu
dCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVs
ZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1l
c3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAppbmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNk
MDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVu
dmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52
aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZz
ZXQpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVs
ZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKaW5kZXggNWQ5MDU0NTk3NGYxZWQzN2YyOGNhZjNhMmFlYjM0NmE0OTEwYTI4My4uNmRhY2Ni
Zjg3MWMwODdhYWJhOTg2MzVjNTAxYTc4YjdmNGZkMTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwxNCBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNv
bmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2go
KSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KICAgICAKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpL
aW5kKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlh
N2QwOWEwMTUuLjVkM2YxMzY3ZWE0ZDU0Y2JkNTFmYWI0MmRjYjMxNjkxYmQxOWZlOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7
CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0g
ICAgICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9u
KTsKKyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFu
ZEluc3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25k
aXRpb24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2go
KQpAQCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVT
Y3JhdGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICBy
ZXN0b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBp
ZiAoaml0LT5jb2RlQmxvY2soKS0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsK
KyAgICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29u
c3QgUmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNh
bGwoKQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnBy
ZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9
OwogfQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQog
ewogICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3Rl
cnMoKTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVz
VXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJh
U3RhY2tQYWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBv
bHltb3JwaGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYg
bG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3Jp
Z2luYWxDYXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdp
bmFsQ2FzZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3Mg
YWZ0ZXIgZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2lu
YWxDYXNlc1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3Jp
Z2luYWxDYXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAg
ICAgIGF1dG8gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwogCiAgICAg
ICAgIC8vIEFkZCBpdCBvbmx5IGlmIGl0IGlzIG5vdCByZXBsYWNlZCBieSB0aGUgc3Vic2VxdWVu
dCBjYXNlcyBpbiB0aGUgbGlzdC4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMzQ2
LDkgKzM0OSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKAogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjph
ZGRDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKIHsK
LSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsK
KyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKICAgICBuZXdB
Y2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4gYWRkQ2FzZXMo
bG9ja2VyLCB2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nlc3NlcykpOwog
fQpAQCAtNDQwLDcgKzQ0Myw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNB
Y2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWdu
ZWQgc3JjSW5kZXggPSAwOwogICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAo
c3JjSW5kZXggPCBtX2xpc3Quc2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10p
OwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0
aGVuIHdlIGhhdmUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAg
ICAgICAgLy8gZmFpbCB0byByZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1
Y3R1cmVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzQ5NCw4
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRo
aXNUYWdHUFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQ
Uik7CiAKICAgICBzdGF0ZS5zY3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQ
UigpOwogCkBAIC01MDAsMTIgKzUwNSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1v
cnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMg
aml0KGNvZGVCbG9jayk7Ci0gICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNl
cnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVz
ZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJh
U3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2Rl
ID0gZmFsc2U7CiAKQEAgLTUyMSwxMiArNTIwLDMwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiT3B0aW1pemVkIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwotICAg
IAorCisgICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNl
dHRlckNhbGxzID0gZmFsc2U7CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4ga2V5cyhjYXNlcy5zaXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBm
b3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5k
b2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgpID09
IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRl
cikKKyAgICAgICAgICAgIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAg
a2V5c1tpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUu
bV9kb2VzQ2FsbHMgPSBkb2VzQ2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJD
YWxscyA9IGRvZXNKU0dldHRlclNldHRlckNhbGxzOworICAgIC8vIEdldHRlciAvIFNldHRlciBy
ZWxpZXMgb24gc3RhY2stcG9pbnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBs
aW5rZWQgQ29kZUJsb2NrLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAg
aWYgKGRvZXNKU0dldHRlclNldHRlckNhbGxzKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNl
OworCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNv
bnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3
b24ndCBjaGFuZ2UgdGhhdCBzZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRC
eVN0cnVjdHVyZUNoZWNrID0gdHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9
IGZhbHNlOwogICAgIGJvb2wgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBi
b29sIG5lZWRzU3RyaW5nUHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1i
b2xQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CkBAIC01NDIsMTAgKzU1OSw3MSBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvYwogICAgICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0
ZS53YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBh
bGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVD
aGVjayhzdHViSW5mbyk7Ci0gICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2Fz
ZTo6R2V0dGVyIHx8IG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAg
ICAgICAgICBoYXNKU0dldHRlclNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2Fz
ZS0+dXNlc1BvbHlQcm90bygpKQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3Bl
cnR5Q2hlY2sgfHwgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVk
ID0gZmFsc2U7CisKKyAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWI7CisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpIHsKKyAg
ICAgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVl
R1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnVz
ZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAga2V5cworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJjaGVyKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGF1dG8gZmluaXNoQ29kZUdlbmVyYXRpb24gPSBbJl0oUmVmUHRy
PEpJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9zdHViUm91dGluZSA9IFdURk1v
dmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9p
bnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2Vs
bD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgaWYgKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJSZXR1cm5p
bmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAgICAgbV9saXN0ID0g
V1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOworCisgICAgICAg
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAgICAgICAgaWYgKG1f
bGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2Vu
ZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CisK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgbV9zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfTsKKworICAgIGlmIChzdHViKSB7CisgICAg
ICAgIGZvciAoYXV0byYgYWNjZXNzQ2FzZSA6IGNhc2VzKQorICAgICAgICAgICAgYWNjZXNzQ2Fz
ZS0+Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uoc3RhdGUsIGNvZGVCbG9jayk7CisgICAg
ICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKICAgICB9CiAK
KyAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsK
KworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRl
Lm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8g
Z3VhcmFudGVlIHRoYXQgc3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlz
IG5vdCBhIHByb2JsZW0gaWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNh
bGxzIHNpbmNlIHN0YWNrLXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJl
Z2lzdGVyIGFuZCBpdCBpcyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1
dGFibGUgY2FsbCBkb2VzIG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rp
bmcgc3RhY2stcG9pbnRlciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVy
IGNhbGxzLiBCdXQgdGhpcyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFj
ay1wb2ludGVyLCBhbmQgbWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8g
VG8gZW5zdXJlIFBBQy10YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVy
IHRvIHRoZSBhcHByb3ByaWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIH0KKworICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAg
ICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAK
ICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5s
aWtlbHksIGJ1dCB3ZSBtYWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFu
ZFJlcGF0Y2guYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc2OCw3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0
aW9uSGFuZGxlcnMgPSBudWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3Rv
cmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAg
IGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pT
R2V0dGVyU2V0dGVyQ2FsbHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hl
biBkb2luZyBnZW5lcmljVW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAg
ICAgICAvLyBOb3RlIGFsc28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20g
Z2V0dGVyL3NldHRlci4gQ3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2
ICs4MDgsMTUgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nKCk7CiAgICAgfQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBu
b3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNh
biBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNh
bGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxs
IHRvIHRoZSB0aHVuayB3aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAg
ICAvLyBBbmQgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBC
YXNlbGluZUpJVC4KKyAgICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRo
U3RhcnRMb2NhdGlvbigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKwogICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRl
cm5hbDo6dmVyYm9zZSkKQEAgLTczOSw5ICs4MjYsMTIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2MKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHN1Y2Nlc3NMYWJl
bCA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKIAotICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5z
dWNjZXNzLCBzdWNjZXNzTGFiZWwpOwotCi0gICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgQVNTRVJUKHN0YXRlLnN1Y2Nlc3MuZW1wdHkoKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBz
dHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1
YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKQEAgLTc0OSwzNSArODM5LDIxIEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBjb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9j
aywgbGlua0J1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICIlcyIsIHRvQ1N0
cmluZygiQWNjZXNzIHN0dWIgZm9yICIsICpjb2RlQmxvY2ssICIgIiwgc3R1YkluZm8uY29kZU9y
aWdpbiwgIiB3aXRoIHJldHVybiBwb2ludCAiLCBzdWNjZXNzTGFiZWwsICI6ICIsIGxpc3REdW1w
KGNhc2VzKSkuZGF0YSgpKTsKLQotICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7Ci0gICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOwotICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykK
LSAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7
Ci0gICAgCi0gICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
LCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxs
TGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShz
dGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5
KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmIChQb2x5bW9y
cGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6
ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKLSAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2Vz
KTsKLSAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7Ci0gICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9u
czo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQotICAg
ICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxD
b2RlOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OkdlbmVyYXRlZE5ld0NvZGU7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQocmVzdWx0S2luZCwgY29kZS5jb2RlKCkpOworICAgIHN0dWIgPSBjcmVhdGVKSVRTdHVi
Um91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNl
bGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRP
d25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7
CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChjYW5C
ZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1fc2hhcmVkSklUU3R1YnMtPmFkZChTaGFyZWRKSVRT
dHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0
dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNl
ZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBmaW5pc2hDb2Rl
R2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKIH0KIAotdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6
YWJvdXRUb0RpZSgpCit2b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKFZNJiB2bSkK
IHsKICAgICBpZiAobV9zdHViUm91dGluZSkKLSAgICAgICAgbV9zdHViUm91dGluZS0+YWJvdXRU
b0RpZSgpOworICAgICAgICBtX3N0dWJSb3V0aW5lLT5hYm91dFRvRGllKHZtKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFi
MzRhZWNiNDEuLmY5ZjhjYmYwZDU1OThlMWYxZWYyMzAxYjQ1OGZiYWRiMDMzNDRkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
V2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xk
IHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMg
bWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2Rl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIFBv
bHltb3JwaGljQWNjZXNzIHsKICAgICAvLyBvcHRpbWl6YXRpb24gdG8gdGhlbiBhdm9pZCBjYWxs
aW5nIHRoaXMgbWV0aG9kIGFnYWluIGR1cmluZyB0aGUgZml4cG9pbnQuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNpdG9yJikgY29u
c3Q7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKTsKKyAgICB2b2lkIGFib3V0VG9EaWUoVk0mKTsK
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zUEModm9pZCogcGMpIGNvbnN0CkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBo
aWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOwogICAgIAogICAgIHZvaWQgY29tbWl0KAog
ICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVl
X3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLApAQCAtMTk2LDYgKzE5Niw4IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUgewogICAgICAgICA6IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1f
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMoZmFsc2UpCisgICAgICAgICwgbV9kb2VzQ2FsbHMoZmFs
c2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhh
bmRsaW5nKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2Vw
dGlvbihmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KGZhbHNlKQpA
QCAtMjI1LDggKzIyNywxMCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50
czsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOwogICAg
IEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1fZG9lc0pTR2V0
dGVyU2V0dGVyQ2FsbHMgOiAxOworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwogCi0gICAgdm9p
ZCBpbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOworICAg
IHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKIAogICAgIHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2b2lkIHN1Y2Nl
ZWQoKTsKQEAgLTI0OCw3ICsyNTIsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRF
eGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwotICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0
aW9ucygpOworICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwogCiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhj
ZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRv
bnRSZXN0b3JlID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2MmEzODllMmVm
NTBlZWE2YTNiMzRlNzVmYTlkLi40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1MDc5YWNiY2Mx
MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
YWNjZXMKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9
PSBSZXBsYWNlKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJveHlh
YmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+UHJveHlhYmxl
QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm94eWFibGVB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApp
bmRleCBkYzM5ZTI2Y2EyZjRiMmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5lODQzODVjYTc1
YzlmNzUyZThlOGUxNmNkZGUwYWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3LDExICszNywx
MSBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogCiAg
ICAgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWRkaXRpb25hbFNldC5nZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAgICBzdGF0aWMg
UmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAogICAgICAg
ICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBu
dWxscHRyLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAogICAg
IHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIH5Q
cm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2
YTM5Yjg0NThiOTAwY2IyYTUyZWY0ZjE1MTEyMGYuLmRlMDI1ZTc0ZWRkODJmZmU4NjFiNzM3NzMx
ZDUwYTI0NmM0OTljNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaQogICAgICwgcHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwgcHJvcGVydHlJ
c1N5bWJvbChmYWxzZSkKIHsKKyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogfQog
CiBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEyMCwxMSArMTIx
LDExIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGll
KCkKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoVk0mIHZtKQogewogICAgIHN3
aXRjaCAobV9jYWNoZVR5cGUpIHsKICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKLSAgICAgICAg
dS5zdHViLT5hYm91dFRvRGllKCk7CisgICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSh2bSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OkdldEJ5SWRTZWxmOgpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjJmNmNiYTMx
YmZmYmFjNGMxYzBhMmY5NTE4MzI2ZjJjMzMwNzc3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04NywxMiArODcsMTIg
QEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRk
QWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNz
Q2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2Fz
ZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKik7CiAKICAgICB2b2lkIGRlcmVmKCk7Ci0gICAgdm9pZCBhYm91dFRvRGllKCk7Cisg
ICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsK
IApAQCAtMzQ3LDE2ICszNDcsMjQgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRM
b2NhdGlvbjsKIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRh
Zz4gbV9jb2RlUHRyOworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3Bl
cmF0aW9uOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24p
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0K
KwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUjsK
LSAgICBHUFJSZWcgdmFsdWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CisgICAgR1BSUmVnIHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9uIHsK
ICAgICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAg
IH0gcmVnczsKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBGSVhN
RTogWzMyLWJpdHNdIENoZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlzIHVz
ZWQgc29tZXdoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDhhZGVhZDUwZjQ1NTZjZmYyNWU3YzdjOTk3ODMwNGQ0MTc3MDk3NDcuLjQ3NjU0YTc2
ZGI1YTExM2YwZmNiNmJmNjhhM2QyMmFjYmM2YTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xhc3MgSklUQ29t
cGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2Fs
bExpbmtSZWNvcmQoZnVuY3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4gZnVu
Y3Rpb25DYWxsOwogICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggOTgx
ZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAwMWJlODE2MDEyNi4uMzg4NmNiMmJkYmI4M2RjNzdi
NzcyNWVhZjU3NDEyNDU1ZWMxMWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTg4LDYgKzE4OCw4IEBAIGNsYXNzIENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xv
d1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwog
fTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5
cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBA
IC0yNjMsNiArMjY1LDY2IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBz
b3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
K2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVi
bGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAg
ICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNs
b3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJl
cXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20s
IGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1Yklu
Zm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAgICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Mo
c2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24p
CisgICAgICAgICwgbV9hcmd1bWVudHMoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQg
dW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRpdmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5j
ZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAgeworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwor
ICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAg
ICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVz
dWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1ZSkKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJh
dGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBzdGQ6OmdldDxB
cmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFk
ZHJlc3MsIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJ
bmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtlX2luZGV4
X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2YWx1
ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0aW9uVHlw
ZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsK
KyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRU
eXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlwZSByZXN1
bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5mbywgc3R1
YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxsTW9kZSwg
cmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3Vt
ZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHViSW5mbywg
c3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5lZWRUb1Nw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0LCBhcmd1
bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhm
OC4uYzMwNjY2NjUwNmFmNTU4NmM2NDExMWIxOGE2NmI1MjkyNTVmNWMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwMjYsMjQg
KzEwMjYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9k
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAg
YmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklU
Q29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1w
KCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUxLDcgKzEw
NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2Uo
KTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5
cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50
eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKQEAgLTEwOTYsNyArMTEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlw
ZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEx
MSwxNCArMTEzNSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNo
KE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigp
OwpAQCAtMTEyOCwyMCArMTE1NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNl
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTExNzAsMjIgKzEyMTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQy
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgIH0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBKU1Zh
bHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBh
eWxvYWRHUFIoKTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwor
CiAgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQog
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVn
cykpOwogCkBAIC0xMTk0LDIwICsxMjQzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwog
CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAot
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9q
aXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEzMDAsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBP
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwogCkBAIC0xMjQ4LDE0ICsxMzE4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQu
cmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVk
KGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsCi0gICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
KyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0zNTYxLDkgKzM2NDIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlMKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0g
R2V0UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9n
cmFwaC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxh
dGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBPcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
fQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgc3Bl
Y3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworCiAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTM1NzQsMTQg
KzM2NjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlW
YWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBi
YXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1dG8gYmFz
ZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkgeworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0
LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAgICAgICBi
YXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAgICAgICAg
cmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAgLTM1ODks
OCArMzY4Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93bkNlbGwK
LSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2Uu
cGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOworICAgICAg
ICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxv
YWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAgICAgbV9q
aXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwyOCArMzY5OSw0MCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CiAg
ICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAgIGNhc2Ug
Q2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwg
MCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJh
c2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
ICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBz
dHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUs
IDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zNzIyLDI5ICszODMxLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisKKyAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERl
ZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSog
bm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJhbmRHUFIg
PSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigp
LCBicmFuZEdQUik7CkBAIC0zNzU4LDE2ICszODc4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFu
ZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRH
UFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJy
YW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKQEAgLTM3NzgsOSArMzkwNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIGJy
YW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzc5MiwxNiArMzkyNiwyNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAor
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7
CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAg
LTM5MTksMjIgKzQwNjEsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRl
c0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BS
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJz
KCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBl
UmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJl
Z3MsCi0gICAgICAgIHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBw
cm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1Yklu
Zm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQu
YWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTQ1LDYgKzQwOTIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAg
ICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTUyLDEz
ICs0MTAwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAg
ICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcHJv
dG90eXBlR1BSID0gcHJvdG90eXBlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAK
LSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwg
c2NyYXRjaDJHUFIpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAKICAgICAg
ICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzk2OCwxMiArNDEyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZihOb2RlKiBub2RlKQogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgIAorICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEpT
VmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKICAgICAK
QEAgLTM5ODksNyArNDE0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQ
Uiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNvbXBpbGVJbnN0
YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIs
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CiAgICAg
CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTEzMDE5LDQ2ICsxMzE3OCw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNW
YWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNt
YU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2Rl
KiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwor
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9k
ZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQ
dXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CkBAIC0xNDY5MCwxOCArMTQ4NjcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVj
bWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQog
ewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3Bp
bGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAg
ICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChz
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5z
ZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
dmFsdWVSZWdzLCBzdHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ3MTEsOSAr
MTQ4OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jl
c3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MmUxZThjZDUy
YTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYzLi4zYzlmNGQ1Y2Y3NjIzMmViODEzNzU0OGJi
YzU1NTM3ZDkzNDUwZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC03MTksMTYgKzcxOSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja0RldGFjaGVkKE5vZGUqKTsKIAotICAgIHZvaWQgY2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3Bp
bGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxs
KTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyBy
ZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlz
dCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAg
IHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFy
Z2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQg
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25l
LCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcg
dGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2
b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BS
UmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBK
SVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBM
aXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUqKTsKQEAg
LTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBnZW5lcmlj
SlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwog
ICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1Zh
bHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0
R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdz
IHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKQEAgLTk0OSw2ICs5NDksMjYg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVf
aWZfdDwKKyAgICAgICAgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwK
KyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24o
Vl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7
CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVy
LgpAQCAtOTg4LDYgKzEwMDgsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBy
ZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogCisgICAgdm9pZCBhcHBl
bmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHJl
cGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2lu
KG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIG1faml0LmFwcGVuZENh
bGwoYWRkcmVzcyk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kT3BlcmF0
aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAg
IHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTAxMCw2ICsxMDM3LDEz
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQog
CisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRy
ZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQu
bW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKKyAgICB9CisKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBi
NTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li5jMWI1ZDA2MWMzYzVhNGE2
NTA2Y2I3YzYwZWUyOTY3ZmMyMTZhNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE2OCwxNSArMTY4LDE2IEBA
IGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdH
UFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NU
eXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
b3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5
cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5
bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZp
ZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdp
biwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVz
dWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0
LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgK
LSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJS
ZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXls
b2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlzIGEgaGFja3kgZml4IGZvciB3aGVuIHRo
ZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdp
dGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ug
b2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVs
eSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2Jh
Ymx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24u
CkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgK
ICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlk
ZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXls
b2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlw
ZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcsIHR5cGUpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIyOCwxNSArMjI5LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNU
YWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVn
IHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhU
YXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIAogICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7
CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBK
U1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdz
KHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBp
ZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpT
VmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZyk7CiAg
ICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjM0MSw4ICsy
MzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdz
LnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKIAogICAgICAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUo
U3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNT
dHJpbmcgPSB0cnVlOwpAQCAtMzQwNSw3ICszNDA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJl
c3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVz
dWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwg
SW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdp
dGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52
YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZh
bGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwg
bm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI1LDcgKzM0MjcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAg
ICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWUu
anNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlk
V2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAg
ICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFn
R1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggYjkxMThiNjJlODdkOTcwYWM1NDYxZjYzYmQzYzM4MGZiOGIwMTI2MC4uMzM2YjFh
OTVkMjQ2ZTcxOTRhNzc0MTAyNjUzYzMyOWQzNDM0ZjViMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNDcsMTIgKzE0Nywx
MiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmln
aW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxs
UmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0
ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmln
aW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQs
IG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1
bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwg
dHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2Vw
dGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkp
OwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICAv
LyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3Qg
bmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwg
ZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywg
dGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAg
ICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIs
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSks
CisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAg
IHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VH
UFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0
QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRX
aXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhp
c0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGls
ZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NS
RXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xODcsMjAgKzE5
NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUgogICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJh
c2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldCh0aGlzR1BSLCBmYWxzZSk7CiAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxzZSk7CisgICAgaWYgKHN0dWJJbmZv
R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZv
R1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUikpOworICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQUik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7
CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
c09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAg
ICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAg
CiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTI2ODEsMTYgKzI3
MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0KKyAgICAgICAgICAgIE9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJvcGVydHkpOwor
CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BS
ID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogCisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSk7CisKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUg
PSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0
SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgICAgICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMjcwMCw4
ICsyNzI3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VH
UFIpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9w
ZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5p
c1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3Bl
cnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMjcxMiwxMSArMjczOSwxOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg0LDkgKzQwMTksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgICAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpAQCAtMzk5NCwx
NCArNDAzNiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwg
cmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRD
b21waWxlcjo6SnVtcExpc3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKQEAgLTQwMTMsNyArNDA2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRC
eUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIs
IHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90
Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2Rh
ZDhiZjM1Li4zYTYyMGY0NzI0ZmQyY2FiMjk4ZGQ1MzA4MTlmZjI0YTgzYWI4YzE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYg
KzM5NzgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBv
aW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1z
WzBdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdw
cigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJS
ZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAg
aWYgKCFiYXNlSXNDZWxsKQpAQCAtNDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQ
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CkBAIC00MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAw
OwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25I
YW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAg
LTQxMzAsMTAgKzQxNDUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJh
bmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwg
YWNjZXNzVHlwZSwKLSAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMg
KzQxNzUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChu
b3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0g
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nl
c3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1
bmN0aW9uKGFjY2Vzc1R5cGUpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNz
RnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xv
d1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBW
YWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEg
OiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBt
aWdodCB3YW50IHRvIGxhdGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1Mzgs
MTAgKzQ1NjcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBK
UyBzZXR0ZXIgY2FsbCBJQ3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0
aGlzLgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRp
b25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwg
SlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3Rl
ciwgZWNtYU1vZGUsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5n
cHIoKSksIHN0dWJJbmZvR1BSLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBl
Y21hTW9kZSwKICAgICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRo
RnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIElu
dmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5y
YXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5j
dGlvbigpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygp
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1Bh
dGhDYWxsKTsKQEAgLTUyMzksNiArNTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNo
cG9pbnQpOwogCkBAIC01MjU5LDEwICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAg
ICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1Yklu
Zm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50
MzI7CkBAIC01MjgwLDEzICs1MzI1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwg
cmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5r
VG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5
Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gMiA6IDE7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25I
YW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNb
MF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2Ny
YXRjaCgwKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlk
R1BSUmVnOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgw
KSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNo
KDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQog
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwo
YmFzZSkpOwpAQCAtNTg3NCw3ICs1OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBh
cmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQ
UiAhPSBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhw
YXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5v
cm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFt
cy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlW
YWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFt
cy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwg
SlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAg
ICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5m
b0dQUiwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAg
LTEyMjQyLDggKzEyMzE0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwor
ICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIz
MzIsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAor
ICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsK
KwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwx
MiArMTIzNDgsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRp
b25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3
Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwg
c2xvd1BhdGhDYWxsKTsKQEAgLTEyNDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsK
KyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5y
ZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgCkBAIC0xMjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2go
MCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRj
aCgxKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRH
UFJSZWc7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmVKdW1wOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEy
NTIzLDggKzEyNjEwLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhq
aXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAot
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0
R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIsIHByb3Rv
dHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBh
dGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKQEAgLTEyNTM3LDEyICsxMjYyNCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0x
Mzk4Niw2ICsxNDA4NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRC
eUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5j
ZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxl
IHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91
Z2gsIHNpbmNlIHRoZQpAQCAtMTQwMTQsMTAgKzE0MTE0LDEyIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1z
LCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNo
KDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdw
cigpKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksIHN0dWJJbmZvR1BSLCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwMzAsMTIgKzE0MTMyLDI0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1Bh
dGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpG
VExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3
Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBh
cmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0
cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNs
b3dQYXRoQ2FsbCk7CkBAIC0xNDA2MCw4ICsxNDE3NCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlzVmFsdWUpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC0xNDA4MywxMCArMTQxOTcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRl
SW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZh
bGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sw
XS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
LCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFz
dFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBq
aXQubGFiZWwoKTsKQEAgLTE0MDk5LDEyICsxNDIxNSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1z
WzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5n
cHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4IDJhZGQ0
OTRjNTMyYWFlYThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFlNzkyNmM2
YTA3MTgzNzMxNTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4OwogCiBTbG93
UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcg
cmV0dXJuUmVnaXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxw
ZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVn
IGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAgICwgbV9u
dW1BcmdzKG51bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lzdGVyKQpA
QCAtNjMsNiArNjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0
KAogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVudFJlZ2lz
dGVycyk7CiAgICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAg
IG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKyAgICBpZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RDYWxsVGFy
Z2V0UmVnaXN0ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmlsdGVyKHVz
ZWRSZWdpc3RlcnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxpbmdDb252
ZW50aW9uUmVnaXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxsQ29udGV4
dDo6flNsb3dQYXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxs
Q29udGV4dDo6a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxU
YXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNl
dCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAgIHJldHVy
biBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRS
ZWdpc3RlcnMsIG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2Fs
bENvbnRleHQ6OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgbnVsbHB0
ciwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsKIH0KIAog
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwyMiBAQCBT
bG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xvd1BhdGhD
YWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzIGNhbGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtleVdpdGhU
YXJnZXQoY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQYXRoQ2Fs
bChtX2ppdC5jYWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFkZExpbmtU
YXNrKAorICAgICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0K
KyAgICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCBy
ZXN1bHQua2V5KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0LmNhbGwo
KSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkpOworICAg
ICAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiB7CiAgICAgaWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlmM2ZhODBj
MTJhLi5kNmYyODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1NCwxNyBA
QCBjbGFzcyBTbG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhpbmd5IHRo
YXQgd2lsbCBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0cyBhbmQg
c3VjaC4KIGNsYXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNsb3dQYXRo
Q2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5z
aWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0aENhbGxD
b250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVk
IG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdl
dFJlZ2lzdGVyKTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8gTk9URTog
VGhlIGNhbGwgdGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBsaW5rZWQg
YnkgdGhlIEpJVCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlzIG5vIG5l
ZWQgZm9yIHlvdSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2Fs
bChWTSYsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7CisgICAgU2xv
d1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAogcHJpdmF0
ZToKICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRo
VGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVnaXN0ZXJT
ZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdDb252ZW50
aW9uUmVnaXN0ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlv
bigKIHsKICAgICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQYXRoQ2Fs
bENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5
cGVzKSArIDEsIHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4
dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3Vs
dEdQUiwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2b2lkKEFy
Z3VtZW50VHlwZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29udGV4dC5t
YWtlQ2FsbCh2bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAgU2xvd1Bh
dGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxs
T3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJn
ZXQsCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BS
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwgY2FsbDsK
KyAgICB7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJz
LCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDx2
b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAgICAgICAg
Y2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlv
blRhcmdldCkKKyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRFeGNlcHRp
b25DaGVjayh2bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZt
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBl
eGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJl
c3VsdEdQUiwKKyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoY2Fs
bFNpdGVJbmRleCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24o
dm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwgcmVzdWx0
R1BSLCBhcmd1bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JD
b2RlT3JpZ2luKFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0ZSYgc3Rh
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2Vw
dGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0ZUluZGV4
Rm9yQ29kZU9yaWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rp
b24sCisgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZjNjIwMzNh
ODM5MDhlNmZjYzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3MmJlZjU1
MTNlZmU1YWEzOWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lz
dGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2lu
dGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3Rl
cnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgiPHVzZWRS
ZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAi
LCBpbmRpcmVjdE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAi
LCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1l
bnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEzODQyYmRk
MzNkLi4wY2U2MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUxLDExICs1
MSwxMiBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtl
eSgKICAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBjYWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMs
Ci0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQsIGlu
dDMyX3QgaW5kaXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNldCkKICAg
ICAgICAgLCBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+
KCkpCiAgICAgICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVycykKICAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNldChpbmRp
cmVjdE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBAIGNsYXNz
IFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3QgUmVnaXN0
ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudFJlZ2lz
dGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIGludDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGlyZWN0
T2Zmc2V0OyB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0KEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJl
Z2lzdGVycygpLCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNl
ZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSwg
aW5kaXJlY3RPZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAg
ICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDogbV91c2Vk
UmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDAp
CiAgICAgewogICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZhbHVlVGFn
KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZhbHVlKQot
ICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4ICs5Mywy
MCBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdXNl
ZFJlZ2lzdGVycyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYmIG1fY2Fs
bFRhcmdldCA9PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09
IG90aGVyLm1fb2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZz
ZXQKKyAgICAgICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRpcmVjdE9m
ZnNldDsKICAgICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2Fs
bFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICByZXR1cm4g
bV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdl
dC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNldDsKICAg
ICB9CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lzdGVyU2V0
IG1fYXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAgIHB0cmRp
ZmZfdCBtX29mZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQgeyAwIH07
CiB9OwogCiBzdHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZhOTMzMTMzYzBiMzZj
ODY2MTNhZC4uMzk5Y2RiNzA2ZDc3ODg5YTY3ZGM4OTM5YzdjNWEwMmI1NmI3NzU0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIpOwogICAg
IAogICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZm
ZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihz
Y3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjEpOworICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1
aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAK
ICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3Io
Vk0mIHZtLCBjb25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7
CiAgICAgfQogICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAs
IEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5v
bkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXkuYXJndW1l
bnRSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXkuYXJndW1l
bnRSZWdpc3RlcnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGRvbnRD
bG9iYmVyLnNldChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2JiZXJDaGVj
ayhqaXQsIFdURk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVyczo6Q2Fs
bCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6
OkNhbGwgY2FsbDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gaml0LmNh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5pbmRpcmVj
dE9mZnNldCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtl
eS5vZmZzZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0
LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5v
blJldHVybkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMK
ICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7Ci0gICAgcGF0Y2hCdWZm
ZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQo
KSkKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJGVEwg
c2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4
IDM1NGY5NTQ3YjRhYmYzMjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2QuLmJmOGEwODA0MGNlYzg3
YjY0Zjc3YzM2YWVhZGJmZWQ5ZGU0MDI3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShK
SVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZp
cnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAg
ICAgICBhdXRvIGNhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpJ
VENvbXBpbGF0aW9uUHRyVGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1ZmZlci5hZGRNYWluVGhy
ZWFkRmluYWxpemF0aW9uVGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxU
aHVua0Zvcih2bSwgKmluZm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgICAgICAgICAg
aW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRo
dW5rLCB2bSwgeyB9KSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJD
YWxsKGNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2OGIxMjEzZjZkMjRjNzBhZmI1MDMz
MjBlYWE3MmQ4OWU3ZDg2YmU5Li5lOTA5NmI1NzczZjMyMTczMTY5ZTczZmFlMzQxMTE4ODY5ODk3
ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTIwNyw3
ICsyMDcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
IAogICAgIC8vIGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0
eXBlcyBwYXNzZWQgaW4gcmVnaXN0ZXIgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuCiAgICAgLy8g
ZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBv
biB0aGUgc3RhY2suCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgogICAgIHN0cnVjdCBBcmdDb2xs
ZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAgICAgIHsKQEAgLTIxOSw4ICsy
MTksOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAgICAg
IH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBj
LCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnPgotICAgICAg
ICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwgZz4mIG90aGVy
KQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1
bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBo
PgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwg
ZywgaD4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBncHJTb3VyY2VzID0gb3RoZXIu
Z3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9ucyA9IG90aGVyLmdwckRlc3Rp
bmF0aW9uczsKQEAgLTIzMCw2NSArMjMwLDc0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMgPSBvdGhl
ci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJn
KEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAg
ICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJj
ZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0
aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJn
dW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hS
ZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyAr
IDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5mcHJTb3VyY2VzW251bUZQUlNv
dXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZnByRGVzdGluYXRpb25zW251
bUZQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyAr
IDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJl
ZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRo
aXMpOwogCiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2VzW251bUNyb3NzU291cmNlc10g
PSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rlc3RpbmF0aW9uc1tudW1Dcm9z
c1NvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
ICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQ
UlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0Fy
ZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBl
eHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVz
dWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNl
c10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BS
U291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4gcHVz
aE5vbkFyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBy
ZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3Vy
Y2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1H
UFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tl
PiBhZGRHUFJFeHRyYUFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhH
UFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCisg
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhp
cyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMT4g
YWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9CiAKICNpZiBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMzMxLDEyICszNDAsMTQgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVu
c2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNl
dCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVu
dCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIC8vIENs
YW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBzeW1ib2wgZm9yIEZQUlJlZy9HUFJS
ZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0aGV5IGFyZSBwYXNzZWQgZGlyZWN0
bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1ZwogICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMgPSBHUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogCisgICAgICAgIFVOVVNFRF9QQVJBTShu
b25BcmdHUFJzKTsKKwogICAgICAgICBjdXJyZW50R1BSQXJndW1lbnQgKz0gZXh0cmFHUFJBcmdz
OwogICAgICAgICBjdXJyZW50RlBSQXJndW1lbnQgLT0gbnVtQ3Jvc3NTb3VyY2VzOwogICAgICAg
ICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKQEAgLTM1MCwxNSArMzYxLDE1
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2Fs
Y3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2ln
bmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwg
Y3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOwogICAgIH0K
IAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAg
QUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1l
bnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQ
b2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9r
ZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50
RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOwogICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CiAgICAgfQogCkBA
IC0zNzYsOCArMzg3LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogICAgIC8vIEF2b2lkIE1TVkMgb3B0aW1pemF0
aW9uIHRpbWUgZXhwbG9zaW9uIGFzc29jaWF0ZWQgd2l0aCBfX2ZvcmNlaW5saW5lIGluIHJlY3Vy
c2l2ZSB0ZW1wbGF0ZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVnVHlw
ZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQg
bWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVnVHlwZSBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkVfRVhDRVBU
X01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdXNpbmcgSW5mb1R5
cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CkBAIC0zOTIsMzEg
KzQwMywzMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91
YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3Vi
bGUiKTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxs
QXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpT
VmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdz
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVl
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KQEAgLTQy
NCw4ICs0MzUsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJz
IHsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShN
SVBTKQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwg
IldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogCkBAIC00
NjksMjUgKzQ4MCwyNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50R1BBcmdDb3VudCA8IG51bWJl
ck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Mg
KyAxLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhhcmcp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIC8vIE90aGVyd2lzZSBwYXNzIEZQIGFyZ3VtZW50IG9uIHN0YWNrLgot
ICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKENVUlJF
TlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVn
cy5hcmdDb3VudChhcmcpOwpAQCAtNDk3LDM0ICs1MDgsMzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyks
IGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBwb2tlQXJndW1l
bnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlw
ZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHBva2VBcmd1
bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIs
IEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BSSW5mbzo6cmVnVDApOwog
CiAgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51bUFyZ1JlZ2lzdGVycykgewot
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKLSAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOwog
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwotICAg
ICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UgKyAxKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
ICsgMik7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAyKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENV
UlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQor
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBw
YXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KHBheWxvYWQuZ3By
KCkpOwpAQCAtNTQ0LDkgKzU1NSw5IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0FsaWduZWQ8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVS
ZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5z
aWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcudGFnR1BS
KCkpOwpAQCAtNTY5LDExICs1ODAsMTEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFz
c2VtYmx5SGVscGVycyB7CiAjZW5kaWYgLy8gQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFM
V0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19iYXNlX29mPFRy
dXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0ZDo6aXNfY29udmVydGlibGU8QXJn
LCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhpcyBzaW5jZSBERkdTcGVjdWxhdGl2
ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2YgVHJ1c3RlZEltbVB0cgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBvbmx5IHN1cHBvcnRzIG5v
bi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNpbmNlIHdlIG5ldmVyIGNhbGwg
b3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAgICAgICAgIC8vIElmIHdlIGV2
ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50cyB3
ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZvciBib3RoIHR5cGVzLCB3aGlj
aCBzb3VuZHMKQEAgLTU5MSw0NiArNjAyLDQ2IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFy
Zz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9
IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMyKGFyZyksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVu
YWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBB
cmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRf
VFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA9
PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02NChhcmcpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVyPEFyZz46OnZhbHVlICYmIHN0
ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9wb2ludGVy
X3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSkKICAgICAgICAgICAgIHx8
IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUpPgotICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICAvLyBT
cGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlIGJlY2F1c2UgaXQncyByZWFsbHkg
YW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVyd2lzZS4uLgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6dmFsdWUKICAgICAgICAgJiYg
c3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlPjo6dmFsdWU+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwogICAg
IH0KQEAgLTYzOSw4ICs2NTAsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1i
bHlIZWxwZXJzIHsKICN1bmRlZiBSRVNVTFRfVFlQRQogCiAgICAgLy8gQmFzZSBjYXNlOyBzZXQg
dXAgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0
eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNhbml0eSBjaGVjayIpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02NTUsMzEgKzY2Niw0NCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0dXBTdHViQXJnczxudW1G
UFJTb3VyY2VzLCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVn
PihhcmdTb3VyY2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVtRlBS
U291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJjZXMpKTsKICAgICB9CiAKLXB1
YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0VudHJ5
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAg
IHVzaW5nIEZpcnN0QXJndW1lbnRUeXBlID0gdHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPjsKKyAgICAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWU8Rmlyc3RBcmd1bWVudFR5cGUsIENhbGxGcmFtZSo+Ojp2YWx1ZSkgewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtz
IGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQu
Li4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7
CisgICAgICAgIH0gZWxzZSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRo
aXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0
aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlv
blRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwg
IkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAgIH0K
KyAgICB9CiAKLSNkZWZpbmUgRklSU1RfQVJHVU1FTlRfVFlQRSB0eXBlbmFtZSBGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+CitwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RklSU1RfQVJH
VU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFy
Z3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykK
ICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3
b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzIt
Yml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUs
IDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4o
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFy
Z3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8RklSU1RfQVJHVU1FTlRfVFlQRSwgQ2FsbEZyYW1l
Kj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEdQUlJlZyBmdW5jdGlvbkdQUiwg
QXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwgIkJhc2lj
IHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAs
IDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxP
cGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCkucHVz
aE5vbkFyZyhmdW5jdGlvbkdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOwogICAg
IH0KIAotI3VuZGVmIEZJUlNUX0FSR1VNRU5UX1RZUEUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChBZGRyZXNzIGFkZHJlc3MsIEFyZ3MuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+
KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGFkZHJl
c3MuYmFzZSwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOworICAgIH0KIAogICAgIHZv
aWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApp
bmRleCBmN2FhMzI5ZmUyNWQxOWM3MzcxODQ3MGFlZmZiM2I0YWFlYTA1ZGI2Li4yYmYxMWZkNjk1
OTYxYTExNzNmMzJiNGNlOTIxNjJiMDA3MjE4MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJIZWFw
LmgiCkBAIC0zOSw4ICs0MCwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKKyAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0s
IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzKQogICAgIDogSklUU3R1YlJv
dXRpbmUoY29kZSkKKyAgICAsIG1fdm0odm0pCisgICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkK
IHsKICAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRpbmVzLT5hZGQodGhpcyk7CiB9CkBAIC00OSw2
ICs1Miw5IEBAIEdDQXdhcmVKSVRTdHViUm91dGluZTo6fkdDQXdhcmVKSVRTdHViUm91dGluZSgp
IHsgfQogCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgp
CiB7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykKKyAgICAgICAgbV92bS5tX3NoYXJl
ZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisKICAgICBpZiAobV9pc0pldHRpc29uZWQpIHsKICAg
ICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Igd2hlbiB0aGUgc3lzdGVtIHNodXRzIGRv
d24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRoZSBKSVQgc3R1YiByb3V0aW5lIHNldCBn
ZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8gZGVsZXRpbmcKQEAgLTc1LDkgKzgx
LDkgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmRlbGV0ZUZyb21HQygpCiB9CiAKIE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Ci0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0
b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAg
Y29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlu
a0luZm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAgIDogR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKQogICAgICwgbV9jZWxs
cyhjZWxscy5zaXplKCkpCiAgICAgLCBtX2NhbGxMaW5rSW5mb3MoV1RGTW92ZShjYWxsTGlua0lu
Zm9zKSkKIHsKQEAgLTEwNiw5ICsxMTIsOSBAQCB2b2lkIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYgdmlzaQogfQog
CiBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCAgY29uc3QgSlNDZWxs
KiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4m
JiBjYWxsTGlua0luZm9zLAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+PiYmIGtleXMsICBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4m
IGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgg
ZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCi0gICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0
dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykp
CisgICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtl
eXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiAgICAgLCBtX2NvZGVC
bG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKQog
I2lmIEVOQUJMRShERkdfSklUKQogICAgICwgbV9jb2RlT3JpZ2luUG9vbCgmbV9jb2RlQmxvY2tX
aXRoRXhjZXB0aW9uSGFuZGxlci0+Y29kZU9yaWdpbnMoKSkKQEAgLTEzMSw3ICsxMzcsNyBAQCBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6fkdDQXdhcmVKSVRTdHVi
Um91dGluZVdpdGhFeGNlcHRpb25IYQogI2VuZGlmCiB9CiAKLXZvaWQgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUoKQordm9pZCBHQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6YWJvdXRUb0RpZShWTSYpCiB7CiAgICAg
bV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlciA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKERG
R19KSVQpCkBAIC0xNTQsNiArMTYwLDcgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRo
RXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiAKIFJlZjxKSVRTdHViUm91
dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYga2V5cywKICAgICBWTSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25l
ciwKICAgICBib29sIG1ha2VzQ2FsbHMsCkBAIC0xNjUsMTggKzE3MiwxOCBAQCBSZWY8SklUU3R1
YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGlmICghbWFrZXNDYWxscykgewog
ICAgICAgICAvLyBBbGxvY2F0aW5nIENhbGxMaW5rSW5mb3MgbWVhbnMgd2Ugc2hvdWxkIGhhdmUg
Y2FsbHMuCiAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm9zLmlzRW1wdHkoKSk7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEpJVFN0dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUodm0sIGNvZGUsIFdURk1v
dmUoa2V5cykpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJ
VChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycy0+aml0VHlwZSgpKSk7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5k
bGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRo
RXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBX
VEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhj
ZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNF
bXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29kZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpOwogICAgIAot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdU
Rk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dD
QXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4IDQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQx
OGU2Y2UxY2E5ZmQuLmIwNDZjOGU3NzlhZjA1MzkwNzkyMzZiNjUwYjYwMGJmNjYzZjFmM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvZGVPcmlnaW5Qb29s
OwogfQogCitjbGFzcyBBY2Nlc3NDYXNlOwogY2xhc3MgQ2FsbExpbmtJbmZvOwogY2xhc3MgSklU
U3R1YlJvdXRpbmVTZXQ7CiAKQEAgLTU0LDEyICs1NSwxMiBAQCBjbGFzcyBKSVRTdHViUm91dGlu
ZVNldDsKIC8vIGxpc3Qgd2hpY2ggZG9lcyBub3QgZ2V0IHJlY2xhaW1lZCBhbGwgYXQgb25jZSku
CiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewog
cHVibGljOgotICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mKTsKKyAgICBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYs
IFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmKTsKICAgICB+R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBW
TSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShj
b2RlLCB2bSwgV1RGTW92ZShrZXlzKSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZpc2l0b3I+CkBAIC02OCw2ICs2OSw4IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6
IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAgICAgICAgIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRl
cm5hbCh2aXNpdG9yKTsKICAgICB9CiAgICAgCisgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICZtX2tleXM7IH0KKwog
ICAgIHZvaWQgZGVsZXRlRnJvbUdDKCk7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC04MSw2ICs4NCw4
IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7
CiAKICAgICBib29sIG1fbWF5QmVFeGVjdXRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0pl
dHRpc29uZWQgeyBmYWxzZSB9OworICAgIFZNJiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOwogfTsKIAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8g
bWFyayBvbmUgYWRkaXRpb25hbCBvYmplY3QgZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgpAQCAtODgs
NyArOTMsNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJv
dXRpbmUgewogY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgewogcHVibGljOgogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoCi0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwq
PiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYs
IEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0xMDksMTAgKzExNCwxMCBAQCBjbGFz
cyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1Ymxp
YyBNYXJraW5nR0NBd2FyZUpJVAogcHVibGljOgogICAgIHR5cGVkZWYgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lIEJhc2U7CiAKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+Jiwg
Vk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2Fs
bExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CisgICAg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+PiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlND
ZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNp
dGVJbmRleCk7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVy
KCkgZmluYWw7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKSBmaW5hbDsKKyAgICB2b2lkIGFib3V0
VG9EaWUoVk0mKSBmaW5hbDsKICAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsK
IAogcHJpdmF0ZToKQEAgLTEzMiw2ICsxMzcsNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRp
bmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAog
Ly8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKIC8vICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCiAvLyAg
ICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywK
IC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBib29sIG1ha2VzQ2FsbHMsCiAvLyAg
ICAuLi4pOwpAQCAtMTQzLDcgKzE0OSw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyB3
YXkuCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCi0gICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29u
c3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAorICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYga2V5cywgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2Fs
bHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxs
TGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMs
IERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5kZXggOGY0NWIzNzdjMTY5NmE1MTZh
ODQzMDBiODkyMWY2YWRkNmEzZDRkZC4uMDY3YWJmZjFkNmFkMjAwNzU0NTE4MDA3N2IwYzRhNTVj
Nzc3MjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTQ2MCw2ICs0NjAs
NyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVu
dEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2VuZGlmCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAo
cmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIx
ID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsg
Ly8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdp
bmRvd3MpCkBAIC02NTIsNiArNjUzLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI2ID0gQVJNNjRSZWdpc3RlcnM6Ong2OyAvLyByZWdU
NgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSNyA9IEFSTTY0UmVnaXN0
ZXJzOjp4NzsgLy8gcmVnVDcKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIw
ID0gQVJNNjRSZWdpc3RlcnM6Ong4OyAvLyByZWdUOAorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vbkFyZ0dQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7IC8vIHJlZ1Q5CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBBUk02NFJlZ2lzdGVyczo6eDA7IC8v
IHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gQVJN
NjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5v
blByZXNlcnZlZE5vblJldHVybkdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCA1NTU2MzAzN2FlYjU4ZmVjOWIzZjAzZjdjZmVlMWZjMGRlM2Vj
ZTIzLi43ZmEwOGViZjZjODhhMzM1ZmIwYTk1OTU2Y2I1NGE4YjY4ODEzYTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC05MjQsNiArOTI0LDEwIEBAIHZvaWQgSklUOjpsaW5rKCkK
ICAgICAgICAgICAgICAgICBkb25lVGFyZ2V0LAogICAgICAgICAgICAgICAgIG5leHRIb3RQYXRo
VGFyZ2V0LAogICAgICAgICAgICAgICAgIHNsb3dQYXRoVGFyZ2V0KTsKKyAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFy
Z2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7Cisg
ICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDc1YzljYjk2YjEzNjUzMmYwODYxZjJmMGE4MDU4ZWZjNmIwNTZiMjQuLjQwOWY0
OWUyNjg4NmE4NDUxMzc3NDhkYzA2YWViMWI4NGRiNmFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtMjk0LDYgKzI5NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbkNhbGw7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGFwcGVuZENhbGwo
QWRkcmVzcyBmdW5jdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbChmdW5jdGlvbiwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4
Nl82NCkKICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShjb25z
dCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CkBAIC0z
OTUsMzkgKzQwMCwzOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gUHJvcGVydHkgaXMg
aW50LWNoZWNrZWQgYW5kIHplcm8gZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLgogICAg
ICAgICAvLyBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4gUmV0dXJucyB0aGUgc2xvdyBj
YXNlcy4gRmFsbC10aHJvdWdoCiAgICAgICAgIC8vIGNhc2UgY29udGFpbnMgcmVzdWx0IGluIHJl
Z1QwLCBhbmQgaXQgaXMgbm90IHlldCBwcm9maWxlZC4KLSAgICAgICAgSnVtcExpc3QgZW1pdElu
dDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUpIHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwg
SW50MzJTaGFwZSk7IH0KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1p
dENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwotICAgICAg
ICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9k
ZShjb25zdCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykg
eyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbElu
Zm8sIEludDMyU2hhcGUpOyB9CisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pOworICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhp
bmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlz
dCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdExv
YWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKIAogICAgICAgICAvLyBQcm9w
ZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29udGFpbnMgaW5kZWNp
bmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5vdCB5ZXQgbG9hZGVk
LiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVyby1leHRlbmRlZC4g
QmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLgogICAg
ICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3Vz
UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8p
OwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1w
TGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAg
ICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGlu
Z1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOwogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVk
QXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUp
OworICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUpOwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5
VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlU
eXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUoT3ApOwpAQCAtODcwLDEzICs4NzUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOworICAgICAgICB2
b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyk7CiAjaWYgT1MoV0lORE9X
UykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+KTsKICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB2
b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3Ms
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRh
ZGF0YT4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgQWRk
cmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsPgpAQCAtODg2LDYgKzg5NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZv
aWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAg
ICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJl
c3VsdChBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQp
OworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogICAgICAgICBzdHJ1Y3QgaXM2NEJpdFR5cGUgewpAQCAt
OTA2LDYgKzkyMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUob3Bl
cmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFy
Z2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIC8vIHg2NCBXaW5kb3dzIGNhbm5vdCB1c2Ugc3Rh
bmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhhbiA2NCBiaXRzLgor
ICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0VHlwZTx0eXBlbmFtZSBGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46OnZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoQWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbHNlIC8vIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFyZ3MuLi4gYXJncykKQEAgLTkxMyw2
ICs5NDAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50czxP
cGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lk
IGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgewor
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4o
dGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAg
IH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgpAQCAtOTIzLDYgKzk1NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQ
cm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAorICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBNZXRhZGF0YSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxP
cGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFy
Z3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOwor
ICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
dGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChPcGVyYXRpb25UeXBlIG9wZXJh
dGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4uLiBhcmdzKQogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAxYjQ5ZDQ4OWRhYTJiNzg2YWI3
OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMwYzdmNzY3MTM3OTQ3MGU0ZGQ5ZDRkYTgzNjVk
YTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTM5OCw4ICsz
OTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNDMyLDgg
KzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQ
cm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlcmF0b3JH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCiAgICAgYXV0byBk
b25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CkBAIC00ODAsOCArNDg3
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgICAgIHByZXNlcnZlZFJlZ3Mu
YWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJl
Z3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhp
dGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5h
bWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVn
cyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00OTksOCArNTA2LDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRydXRo
eSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1Qw
LCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1l
cy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNTI4LDE2ICs1MzUsMjMgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
ICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJy
YW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAgICAgIG5vdE9iamVjdC5hcHBlbmQo
YnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwogCiAgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CiAgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107
CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAg
ICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBp
dGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVu
dGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5j
aElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAgICAgICBDYWxsIGNhbGw7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZv
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCku
cmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRvbmVWUmVnLCByZWdU
MSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgcmVn
VDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKQEAg
LTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAogICAgICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygp
KTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGVjYzRlNWYzZmY2ZDA3
Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFmZGNhYzc4MmFjOWM4NzRlNTUwYWZm
YjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAg
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgp
KSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxvYWRJdGVyYXRvckdQ
UiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICBB
Y2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgcHJlc2VydmVkUmVncy5h
ZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklU
LAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAog
ICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25l
LmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXls
b2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25lUmVncywKKyAgICAgICAgICAgIElu
dmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAg
ICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwo
KSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRl
clJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdzLAorICAgICAgICAgICAgSW52YWxp
ZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4IDZmYTcyNDRlZjBh
MDhjOWYwNDdhMzIyMDRmNzM3ZDI5Mjg3MTkwNmYuLjg3NzcwYmY4NDhhM2FmYTlkZGJmMGIxODIy
MzdmMTNjYTBlMmJiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC01Miwx
MyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiBjbGFzcyBWTTsKIAogZW51bSBj
bGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBIb3N0Q2FsbFRodW5rLAot
ICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVKSVQsCi0gICAgREZHSklULAotICAg
IEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0Q2FsbFRodW5rID0gMGIwMDEsCisg
ICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJhc2VsaW5lSklUID0gMGIwMTEsCisg
ICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIxMDEsCiB9Oworc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7CitzdGF0aWNfYXNzZXJ0KFdURjo6Z2V0
TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8SklUVHlw
ZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9mSklUVHlwZSk7CiAKIGNsYXNzIEpJ
VENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogcHVibGljOgpA
QCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSklUVHlwZTo6SW50
ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0K
IAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElDKEpJVFR5cGUgaml0VHlwZSkKKyAgICB7Cisg
ICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VTaGFyZWRJ
Q0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwogICAgIHZpcnR1YWwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAg
ICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY1
MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNkZTY0NjIyY2UuLjU5YTNjMzFhMGQ1NDQyOWRi
NTFhYzYxNWZmOTcxZjA4NDVhMjBhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC00Myw5ICs0MywxMCBAQCBz
dGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHViSW5mbygpCiB9CiAKIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5
cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2ppdFR5cGUoaml0
VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9jb2RlQmxvY2sgPyBtX2NvZGVCbG9jay0+YWRk
U3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdpbikgOiBnYXJiYWdlU3R1YkluZm8oKTsKICAg
ICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNpdGU7CkBAIC02MCwyMCArNjEsMjIg
QEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCiAKICAgICBtX3N0dWJJ
bmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQ
YXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOworICAgIGlm
IChtX3Nsb3dQYXRoQ2FsbC5tX2xhYmVsLmlzU2V0KCkpCisgICAgICAgIG1fc3R1YkluZm8tPnNs
b3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihtX3Nsb3dQYXRoQ2FsbCk7CiAgICAgbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9u
ID0gc2xvd1BhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zbG93UGF0aEJl
Z2luKTsKIH0KIAogSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDog
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
YWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
VHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHVi
SW5mb0dQUikKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAg
LCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCiB7CiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
dmFsdWUucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MudGhpc0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsK
QEAgLTgzLDEzICs4NiwxNSBAQCBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAog
CiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBM
aW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAg
ICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBz
bG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFy
dCkpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xv
d1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQp
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9z
dHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwog
fQogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2Vt
YmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaXplKQogeworICAgIC8vIFdlIGdlbmVyYXRlIHRo
ZSBzYW1lIGNvZGUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFNoYXJlZElDIGlzIGVuYWJsZWQgYmVj
YXVzZSB3ZSBzdGlsbCBuZWVkIHRvIHVzZSBJbmxpbmVBY2Nlc3MKKyAgICAvLyBmb3IgdGhlIHBl
cmZvcm1hbmNlIHJlYXNvbi4KICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgc2l6ZV90
IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpOwogICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKQEAgLTEwMSw5ICsxMDYsOSBAQCB2b2lkIEpJVEJ5
SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXpl
X3QgaW5saW5lSUNTaQogfQogCiBKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJh
dG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQotICAgIDogSklUQnlJZEdl
bmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2Vk
UmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlw
ZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5
cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAgICAsIG1faXNM
ZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lLnVpZCgpID09IGNvZGVCbG9jay0+dm0oKS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGguaW1wbCgpKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2UucGF5bG9h
ZEdQUigpICE9IHZhbHVlLnRhZ0dQUigpKTsKQEAgLTExNSw5ICsxMjAsOSBAQCB2b2lkIEpJVEdl
dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0K
IAogSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0g
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVz
ZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRo
aXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRX
aXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKHRoaXNSZWdzLnBheWxvYWRHUFIoKSAhPSB0aGlzUmVncy50YWdHUFIo
KSk7CiAKQEAgLTEzMywxMCArMTM4LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVFB1dEJ5
SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoLCAKICAgICBFQ01B
TW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2Vk
UmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICAgICAsIG1fZWNtYU1v
ZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7CkBAIC0xNzEsMTQg
KzE3NiwxNSBAQCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KSVREZWxCeVZhbEdl
bmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCi0gICAgOiBCYXNlKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlW
YWwsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5l
cmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQor
ICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1Yklu
Zm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgIEFTU0VSVChiYXNlLnBheWxv
YWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BS
ID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9
IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3Vs
dC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZv
R1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0g
cmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKQEAgLTE5MSwyNiArMTk3LDM1IEBAIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxC
eVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lk
IEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBq
aXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0g
aml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRU
eXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9z
dHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
KyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlWYWxH
ZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVy
JiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZm
ZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkg
eworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1w
LmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9
CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRj
aCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlJZEdlbmVyYXRvcjo6
SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJS
ZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQogewog
ICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgQVNTRVJU
KGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fc3R1Yklu
Zm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnBy
b3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJl
c3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJ
bmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkg
IT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50
YWdHUFIoKTsKQEAgLTIyMywyMiArMjM4LDMwIEBAIEpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERl
bEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yCiB2
b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAg
PSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2pp
dFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxs
KENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZm
ZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkg
eworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1w
LmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9
CiB9CiAKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAotICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1
ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAg
Ly8gRklYTUU6IFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHBy
b3BlcnR5LgogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwpAQCAtMjUxLDE1ICsyNzQs
MTUgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKIH0KIAogSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlw
ZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJS
ZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBH
UFJSZWcgc2NyYXRjaDIsIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAg
ICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0OwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBl
OworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVn
OwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTI3OSwy
MSArMzAyLDI4IEBAIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0
b3IoCiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYgaml0KQogewotICAgIG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQ
dHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2p1
bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsCi0gICAgICAg
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fanVtcCkpOwotICAg
IAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgubG9jYXRpb25PZjxO
b1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXpl
KGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRy
ID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAg
ICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fanVtcCkpOworICAg
ICAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQYXRoLmxvY2F0aW9uT2Y8Tm9Q
dHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIH0KIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0
b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVn
aXN0ZXJzKQorSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAg
OiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNj
ZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1
bHQocmVzdWx0KQogewpAQCAtMzAyLDYgKzMzMiw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpK
SVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1
YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8t
PnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAtMzEyLDIwICszNDMsMjggQEAgSklU
R2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVs
KCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZv
LT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBK
SVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1
bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1
ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdl
bmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXpl
KAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
bV9qaXRUeXBlKSkgeworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgs
IHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9zdGFydC5p
c1NldCgpKTsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgfQog
fQogCi1KSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IGJyYW5kKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBz
dHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIEFTU0VSVChh
Y2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kIHx8IGFjY2Vzc1R5cGUg
PT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kKTsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25z
dGFudElkZW50aWZpZXIgPSBmYWxzZTsKQEAgLTMzMyw2ICszNzIsNyBAQCBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxv
Y2sqIGNvZGVCbAogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLmJyYW5kR1BSID0gYnJhbmQucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBt
X3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52
LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7CkBAIC0zNDMsMTYgKzM4MywyNCBAQCBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbAogdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0g
aml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyht
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2Rl
UHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBq
aXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZp
bmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
K3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQu
aXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0
aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEJhc2U6
OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+
bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2IyNTUxOTU1NDhiMGYyZWI2NTEuLjVkYjgwYTcz
OTZkODU5OWVmMzI0NDJkMzRmYWM2MGE2ODg1N2NjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQxLDEyICs0MSwx
MiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBj
bGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdDsK
IAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHJvdGVjdGVkOgogICAgIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyk7CiAgICAgCiBwdWJs
aWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9z
dHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBK
SVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBAIC03NywxMyArNzgsMTMgQEAgY2xh
c3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAg
ICAgSklUQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUQnlJZEdlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc3R1YkluZm9HUFIpOwogCiBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
c2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVt
cC5pc1NldCgpKTsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgp
KTsKICAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wOwogICAgIH0KIApAQCAtMTA2LDggKzEw
Nyw4IEBAIGNsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRv
ciB7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsKKyAg
ICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9H
UFIsIEFjY2Vzc1R5cGUpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOwogCkBAIC0xMjAsOCArMTIxLDggQEAgY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisg
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0
aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0
aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKQEAgLTEzMyw4ICsxMzQsOCBAQCBjbGFzcyBKSVRQdXRC
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIHsgfQogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBK
SVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gs
IEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE1MSw4ICsxNTIsOCBAQCBjbGFzcyBKSVREZWxCeVZh
bEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklURGVs
QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAotICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBD
b2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdAogICAgIHsKQEAgLTE3Niw4ICsxNzcsOCBAQCBjbGFzcyBKSVREZWxCeUlkR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVREZWxCeUlkR2Vu
ZXJhdG9yKCkgeyB9CiAKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayos
IEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0
Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAg
ICB7CkBAIC0yMDAsOCArMjAxLDggQEAgY2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAg
SklUSW5CeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5m
b0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07
CkBAIC0yMTEsOCArMjEyLDggQEAgY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6IHB1Ymxp
YyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigp
IHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAgICBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90
b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAorICAgICAgICBDb2RlQmxv
Y2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKKyAgICAgICAgR1BSUmVnIHZhbHVlLCBH
UFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoMSwgR1BS
UmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QgPSBmYWxz
ZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CkBA
IC0yMjksOCArMjMwLDggQEAgY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAK
ICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBK
U1ZhbHVlUmVncyByZXN1bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjU3LDggKzI1OCw4
IEBAIGNsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkg
eyB9CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBicmFuZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0
dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCBlNzlj
ZDM2ZWY1N2Q3YmRjZWNlMTc2OGQwNTg4YWZlZWQ4ODg1MDE1Li4yOGE2NDMzN2UyZjA4ZjVmMjBh
ZGE3MzdiYjc2YmNiNDczNjIyOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaApAQCAtMzMsMTcgKzMzLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1v
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2Rl
KSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3Vy
cmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQo
Y3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklURG91
YmxlOgotICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlv
biwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAg
IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsK
KyAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJl
dHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwor
ICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTEyOCw2ICsxMjgsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3QKICAgICByZXR1cm4g
Y2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwor
ICAgIGFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIGV4Y2VwdGlvbkNoZWNrKCk7Cit9CisKICNp
ZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVy
blR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKIHsKQEAg
LTE1Nyw2ICsxNjQsMTYgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2Fs
bDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRz
dCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1
ZUdQUik7CisjZWxzZQorICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJu
VmFsdWVHUFIpOworI2VuZGlmCit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBj
b25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0
ZXIgZHN0KQogewpAQCAtMTcxLDYgKzE4OCwxOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQog
ICAgIHJldHVybiBjYWxsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KK0FMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIGZ1bmN0aW9uLCBW
aXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
ZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEsIEpTVmFsdWVSZWdzKHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsK
KyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNl
bmRpZgorfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVnKQogewogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBiZDU1YTNkMDUxNmQ0NmI2N2Fl
NTk3YjZjM2E0ZjU4N2I1ZmRkNzMwLi5mNGUxOGUyNmQyODU0ODg2MWNhZTMyYjZmYWRhNDNlMmEx
NGI1MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE2
NCwxMSArMTY0LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUK
ICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIHJlZ1Q1LAogICAgICAgICByZWdUMywg
cmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CkBAIC0xODYsNyArMTg3LDE0IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0
YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKKworICAgIENh
bGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRl
Y2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVz
dWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJ
bmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAgIH0gZWxzZQorICAgICAgICBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzI3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRy
ZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxp
a2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0
TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7
CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudElu
c3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsxNzQyLDEzIEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRp
bmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBy
ZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgp
KSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0
dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJU
YWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAg
ICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZv
LT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5
VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4o
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3Mp
KSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVy
dHlHZW5lcmljKSk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJs
ZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC0xNzY5LDExICsxNzgyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5k
IEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShj
dXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNl
cyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlw
ZSwgYnlWYWxJbmZvKTsKICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMp
OwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtMTc5OSw3ICsxODEzLDE0IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVn
VDEpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
RGVmYXVsdDsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ5VmFsSW5mbyksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhh
c0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5
VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsKIAogICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0
ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOGRiMzU5ZWJkOGNkMDU2Njk3M2I4NjNjNDg2
NzQxYTdmYWUyMjQ1ZS4uY2YxMmRiMmRiODMyN2ZmZDEyODM0MTcxZjc3NDhjOWIxYTk1Mjk3YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAt
MTYyLDExICsxNjIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChwcm90byk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQog
ICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAg
cmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjFhZjM2NTMwOWQyNzkzMzcxZGU2ZWI0MDBi
NDQ2OGFhODM3MGIyNS4uMDI5MmI5YjhjNGVjZTI3YTgxNjc1MDBhMzVkNDEyNTY1NDlkNjMzNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDAy
LDcgKzEwMDIsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBpZiAocmVzdWx0ID09
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5
IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0g
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwg
c3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQpAQCAtMTA5NCw3ICsx
MDk3LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYgKHJlc3VsdCA9PSBPcHRp
bWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBv
cHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAg
ICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJO
X0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOworICAgICAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRy
KE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAg
ICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9i
YWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkp
OwpAQCAtMTI3OCw3ICsxMjg0LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYg
KG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAg
ICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
UmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAg
ICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CiAgICAgfQogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpA
QCAtMjU2Nyw3ICsyNTc2LDExIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNvZGVkSlNWYWx1ZSwgKEpTCiAgICAgICAgIGlm
ICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMAogICAgICAgICAgICAgfHwgb2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgewogICAgICAgICAgICAgLy8gRG9uJ3Qg
ZXZlciB0cnkgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlHZW5lcmljKTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVz
ZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVy
aWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY0NDY3ZTlhMjVlMTQ3N2UxZWMwNjM1ZDQwOTc1
NGQ4ZTc1MzkyZWYuLmI0OWZhZTQzYzMwZTdiNDhhZThmNDRmNzVhOTNkYTUzNDliNGVmYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSA8
d3RmL1Njb3BlZExhbWJkYS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgor
I2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtNjksMTIgKzcwLDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6
OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVn
cyk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlc3VsdFJlZ3MsIHJlZ1QyKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHBy
b3BlcnR5KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0
cnVlOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkU2xvd0Nhc2Uo
KTsKICAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3Mp
OwpAQCAtOTMsMTQgKzk3LDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAgICAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICAgICAgKyttX2dldEJ5VmFs
SW5kZXg7CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1tt
X2dldEJ5VmFsSW5kZXgrK107CisKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRp
bWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBwcm9maWxlLCByZWdUMCwgcmVnVDEpOwogI2Vsc2UKICAgICAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CiAgICAgICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgICAgICBBU1NFUlQoQnl0ZWNv
ZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTE4LDcg
KzEyMyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKICAgICAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzgsNyArMTQ1LDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTU3
LDkgKzE2NSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEw
ICsxOTEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAg
ICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3Vs
dFJlZ3MsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRC
eVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0yMDEsOCArMjEzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMjEx
LDYgKzIyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICNlbHNlCiAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMjI2LDcgKzIzOCw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHVi
SW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRh
LCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNDUsNyArMjU5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwog
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjM7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMjYzLDkgKzI3OCwxMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwg
ZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVy
bmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
eHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtMjg1LDEwICszMDEsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUdQUiwg
YmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFk
ZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIAog
ICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5j
ZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KQEAgLTMwMiw4ICszMjEs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZh
dGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYg
Z2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4Kytd
OwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQpAQCAtMzEyLDYgKzMzMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9z
ZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgYmFzZUdQUiwgYnJhbmRHUFIpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25T
ZXRQcml2YXRlQnJhbmRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMzI4LDkgKzM0NywxMiBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0
aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKT46OkFy
Z3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYKKwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTM0NiwxMCAr
MzY4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVC
cmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJy
YW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAg
ICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdl
bik7CiB9CiAKQEAgLTM1Nyw4ICszODIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogewog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3By
aXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzY3LDYgKzM5MSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7
CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CiAKQEAgLTM4Myw3ICs0MDgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8
ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVz
Pjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZh
dGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTQx
NSw4ICs0NDIsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgYmFzZSk7CiAgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleDsKICAgICBpZiAoIXBy
b3BlcnR5TmFtZUlzSW50ZWdlckNvbnN0YW50KSB7Ci0gICAgICAgIG5vdEluZGV4ID0gZW1pdFBh
dGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4
KTsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICAgICAgYXV0byBpc0ludDMyID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7Cisg
ICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4
SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzSW50MzIu
bGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdEluZGV4ID0gZW1p
dFBhdGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShu
b3RJbmRleCk7CisgICAgICAgIH0KICAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5
X3ZhbC4KICAgICAgICAgemVyb0V4dGVuZDMyVG9Xb3JkKHJlZ1QxLCByZWdUMSk7CiAgICAgfQpA
QCAtNDMyLDIzICs0NjUsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFycmF5TW9kZSBtb2RlID0g
Y2hvb3NlQXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2Ug
SklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91
YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGln
dW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFk
VHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25l
ID0gbGFiZWwoKTsKQEAgLTQ1Nyw3ICs0OTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUg
aW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC00NjUsNyArNDk5LDE2IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGlu
ZGV4aW5nU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8g
aXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4
aW5nU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAg
ICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZElt
bTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUp
KTsKKwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgb3V0T2ZCb3VuZHMgPSBicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGlj
TGVuZ3RoKCkpKTsKQEAgLTUxNSw3ICs1NTgsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTIzLDcgKzU2NiwxNiBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAK
LSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAg
ICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3Rl
ZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQ
dHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
cmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0gZWxzZQorICAg
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9y
YWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtNTY4LDggKzYyMCw4IEBAIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUs
IFB1dEtpbmQgcHV0S2luZCwKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdU
MCwgdmFsdWUsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29k
ZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJ
QyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNl
IGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGlu
IEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC01ODAsNyArNjMy
LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
T3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKICAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKIAotICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJl
Z1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFt
ZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdC
aXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC02MTksNiArNjc3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGly
ZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDAsIHJlZ1QxLCByZWdUMiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIoZWNtYU1vZGUudmFsdWUo
KSkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGJ5VmFsSW5mby0+bV9z
bG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
IDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtNjM4LDggKzY5Nyw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoZWNtYU1vZGUu
dmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIGF1dG8qIG9wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7Ci0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIENhbGwgY2FsbDsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgY2FsbCA9IGFwcGVuZENhbGwoaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9w
dGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3
LDcgKzcxNyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKQEAgLTY3NSw5ICs3MzYsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5m
b0dQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAK
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkg
dG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0
aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNh
bGwiKTsKQEAgLTY5Niw4ICs3NTgsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAg
ZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhK
bXApOworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXA7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZmFySnVtcChBYnNvbHV0
ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAgICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVt
cCgpOworICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgfQogICAgIAogICAg
IExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAgIApAQCAtNzI0LDYgKzc5MSw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVz
dGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CisgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC03NDMsNyArODExLDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmUKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5k
R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC03NjEsNyArODMxLDgg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygp
LgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpA
QCAtNzc5LDkgKzg1MCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BS
LCBwdXRLaW5kR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbCIpOwpAQCAtODQ2LDExICs5MTgsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QxLCBiYXNlKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDIpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9k
ZWxCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CkBAIC04ODEsNiArOTU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihi
eXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC04OTgsMTUgKzk3NCwxNiBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUu
dmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKIH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtOTE4LDcgKzk5NSw4IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4K
ICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAg
LTkzNSw5ICsxMDEzLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJh
dGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBp
dC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAg
LTk1NiwxMCArMTAzNSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgcHJvcGVydHkpOwogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBt
X2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7CkBAIC05OTEsNiArMTA3Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCByZWdUMCwgcmVnVDEsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKIApAQCAtMTAwOCwxNSArMTA5MSwxNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2Rl
R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5
X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRp
Y19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTAyOCw3ICsxMTEyLDggQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQo
dm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTA0NSw5ICsxMTMw
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVh
ZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0
LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAg
IGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4ICsx
MTU0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1
bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMDk0LDYgKzExODAsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5
SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0g
bV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTExMCw3ICsxMTk3LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRp
b25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
Pjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlH
ZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEx
MzMsOCArMTIyMiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGly
ZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTE2
MCw2ICsxMjQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CiAKQEAgLTExNzYsNyArMTI2Niw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVj
dE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOworICAg
IENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVj
dE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIwNyw4ICsx
Mjk5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1
bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMyNSw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDAp
OwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dl
dEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjYwLDYgKzEzNTIsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdU
MCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9
IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTI3NSw3ICsxMzY4LDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFs
dWVHUFIpOwpAQCAtMTI5NCw3ICsxMzg5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAg
ICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTMxMSw5ICsxNDA3LDEwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbCIpOwpAQCAtMTMzNyw2ICsxNDM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwK
ICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJh
dGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEs
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTM1NCw3ICsxNDUyLDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9
IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwg
Y2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0
aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzczLDcgKzE0NzMs
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CkBAIC0xMzkyLDkgKzE0OTMsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0
eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0
IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8g
Y2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3By
ZXBhcmVDYWxsIik7CkBAIC0xNDE4LDExICsxNTIwLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCisgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMywgcmVnVDIs
IGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAgICAgICAgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDog
UHV0S2luZDo6Tm90RGlyZWN0KTsKLSAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3B1dEJ5SWRz
LmFwcGVuZChnZW4pOwpAQCAtMTQ0OCw2ICsxNTQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2wKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QxLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTE0NjUsNyArMTU2
Nyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBA
IC0xNDgxLDcgKzE1ODUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MDUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0
cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJh
c2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5
IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8g
dGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9p
ZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjI3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVEluQnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAg
ICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU0Niw2ICsxNjUyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG8KICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklu
QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OwogCkBAIC0xNTY0LDcgKzE2NzEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXpl
KSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjc1NCw4ICsyODYzLDggQEAgSklUUHV0QnlJZEdl
bmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2lu
ZCBwdXRLaW5kLAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOwogCiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVn
VDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjc2NSw3ICsy
ODc0LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICAvLyBKSVRQdXRCeUlkR2VuZXJh
dG9yIG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhh
dmUgdG8gcmVsb2FkIHRoZSB0YWcuCiAgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwogCi0g
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0
cygpKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2Vu
LnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25B
cmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdz
KHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5y
YXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHVi
SW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApA
QCAtMjgxNywyOSArMjkzMiwyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAgc3dp
dGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRE
b3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAg
ICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBlRm9y
SklUQXJyYXlNb2RlKGFycmF5TW9kZSk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAgICAg
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50
NjRBcnJheSBpbiBJQwogICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5IC8g
QmlnVWludDY0QXJyYXkgbmV2ZXIgY29tZXMgaGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKICAgICAgICAgICAgIEFTU0VS
VChpc0Zsb2F0KHR5cGUpKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51
bGxwdHIsIHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4NjYs
OCArMjk4MSwxNCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgICAgICJC
YXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
dG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFs
dWUoKSk7CiAgICAgfQotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
PmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgpAQCAtMjkwNiw4ICszMDI3LDEzIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BCiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGgg
Y2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
cHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8t
PnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRk
cmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJn
ZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAg
ICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA3MCwyMCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5
VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdp
dGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVw
IiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0
eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1Yklu
Zm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRy
VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlW
YWxHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9
IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8v
IFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24g
dW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBl
Y3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJl
dHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERp
cmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRl
bnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVy
SUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk2OCw3ICszMDk5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Cisg
ICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9
IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7Cisg
ICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0
VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVT
aGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKwogICAgIGxv
YWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNo
KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHks
IEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwog
ICAgIGxvYWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwg
ZnBSZWdUMCk7CkBAIC0yOTc3LDcgKzMxMTcsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERv
dWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAg
IHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91
c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGlu
Z1R5cGUgZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI5OTUsNyArMzEzNSwxNiBA
QCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0g
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3Rl
ZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAg
ICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3Rl
ZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRy
ZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRl
eGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZElt
bTMyKGV4cGVjdGVkU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJy
YW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5kZXgoc2Ny
YXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCByZXN1bHQpOwpAQCAtMzAwNCw3ICszMTUzLDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0
b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklE
IGJhc2UgPSByZWdUMDsKQEAgLTMwMjMsNyArMzE3MiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigt
QXJyYXlTdG9yYWdlU2hhcGUpLCBpbmRleGluZywgc2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBh
dGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5
U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5m
bykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoQmVsb3dPckVx
dWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJy
YXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZi
eVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVz
dGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBz
Y3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFi
b3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQXJyYXlTdG9yYWdlOjp2ZWN0
b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTMwMzUsNyArMzE5Myw3IEBAIEpJVDo6SnVtcExpc3Qg
SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5
cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzA2MCw3ICszMjE4LDE3
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
IGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkp
KTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RU
eXBlID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JU
eXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJl
c3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAg
IH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVh
cmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwor
CiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVu
Z3RoKCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxv
dywgcHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91
bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CkBAIC0zMTExLDcgKzMyNzksNyBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMTM2LDcg
KzMzMDQsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlw
ZSh0eXBlKSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlz
Q29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5
cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5j
aDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxl
T3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMyMmM3NzA0Mjg5
YWJiMDgyZjlkZGYyMGQ4YzJmZjY2NWRmZDU2ZTIuLjI2ZjY3YzdiY2MwOTJiZDJmNTliMzRlZDVk
N2M2YjhhMDBkOTczODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BS
KCkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdH
UFIoKSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAg
ICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2Rl
bEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIo
KSk7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBi
YXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0
UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0yNTcsOCAr
MjU3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBy
ZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAgICAgICAgICAg
IGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC0zMDUsOCArMzA1LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRSZWdz
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MsIEludmFsaWRH
UFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwpAQCAt
MzkzLDggKzM5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlw
ZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3Ms
IGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRl
QnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMyw4ICs0MzMsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdz
LnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3Ms
IGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MsIEludmFsaWRH
UFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5k
KGdlbik7CkBAIC02NjAsOCArNjYwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6
OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVz
dWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTcwMSw4ICs3MDEsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVn
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwpAQCAtNzQ4LDggKzc0OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
cmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc5MSw4ICs3OTEsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMp
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1Q0LCByZWdUMyksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTgzNSw5ICs4MzUsOSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwog
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90
RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC04ODIs
OCArODgyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFz
ZSwgcmVnVDEpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKaW5kZXggODgxNDY0MGU2YWNjZWFjMWI5YjA2
OGE0MGM4OTQyODM0ODZjZGZhYi4uNDlhNmQ1MDY3ZTIzZDI1NGFiNGYwYzM1Njk4MDc2ZGE5YTA3
NTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGlu
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAt
MzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0Owog
Y2xhc3MgVk07CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CisKIC8vIFRoaXMgaXMgYSBiYXNlLWNsYXNz
IGZvciBKSVQgc3R1YiByb3V0aW5lcywgYW5kIGFsc28gdGhlIGNsYXNzIHlvdSB3YW50CiAvLyB0
byBpbnN0YW50aWF0ZSBkaXJlY3RseSBpZiB5b3UgaGF2ZSBhIHJvdXRpbmUgdGhhdCBkb2VzIG5v
dCBuZWVkIGFueQogLy8gaGVscCBmcm9tIHRoZSBHQy4gSWYgaW4gZG91YnQsIHVzZSBvbmUgb2Yg
dGhlIG90aGVyIHN0dWIgcm91dGluZXMuIEJ1dApAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBKSVRT
dHViUm91dGluZSB7CiAgICAgfQogICAgIAogICAgIHZpcnR1YWwgfkpJVFN0dWJSb3V0aW5lKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFib3V0VG9EaWUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJv
dXRUb0RpZShWTSYpIHsgfQogICAgIAogICAgIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpcyBj
b3B5YWJsZSwgYnV0IGF0IHRoZSBjb3N0IG9mIHJlZmVyZW5jZQogICAgIC8vIGNvdW50aW5nIGNo
dXJuLiBSZXR1cm5pbmcgYSByZWZlcmVuY2UgaXMgYSBnb29kIHdheSBvZiByZWR1Y2luZwpAQCAt
OTgsNiArMTAwLDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAgIC8vIGRlc3Ryb3llZC4K
ICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFZNJik7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3Vu
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYwNjg2MjczZGRhODFjYmI2ZDAxY2QyMWRk
MDk4OWNjNmUyYjguLjQ0NzA1NWJmZThhYmVmYWE1NmZlNzhlODA2OGQyY2M2Njg5MzIzYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisj
aW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxDb2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2
OCw3IEBAIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2Fs
bGVyRnJhbWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBo
aWNDYWxsQ2FzZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3Vu
dHMpCi0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCisgICAgOiBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0sIHsgfSkKICAgICAsIG1fdmFyaWFudHMoY2Fz
ZXMuc2l6ZSgpKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAzNTkzY2NlODg2MDg4MDE4MzQ2
YTgwOGU1Zjg2NDc4NzFhNDQxYjI5Li4wMWQ5MmMxYjhmMmNjZDVjZTQwODQyNDEzY2U0MjZlYTQz
ZmU2YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTcxLDggKzcx
LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9j
YXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0
clRhZz4gY2FsbCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAg
ICByZXR1cm4gc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uLnJldGFnZ2VkPENGdW5jdGlvblB0clRh
Zz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6RlRMSklUKSB7CiAgICAgICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFn
PiB0YXJnZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+
KGNhbGwpOwpAQCAtMTA1LDYgKzEwNywxNSBAQCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRh
Z2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpOwogfQogCitzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVk
SUMoKSkgeworICAgICAgICBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24gPSBuZXdDYWxsZWVGdW5j
dGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgY2FsbCwgbmV3Q2FsbGVl
RnVuY3Rpb24pOworfQorCiBlbnVtIElubGluZUNhY2hlQWN0aW9uIHsKICAgICBHaXZlVXBPbkNh
Y2hlLAogICAgIFJldHJ5Q2FjaGVMYXRlciwKQEAgLTIwOSw3ICsyMjAsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqCiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxs
KCk7CiAgICAgICAgIGNvbnN0IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlBy
aXZhdGVOYW1lIHx8IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VDZWxs
KSkgewpAQCAtMjE5LDcgKzIzMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAg
ICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6Omdl
bmVyYXRlQXJyYXlMZW5ndGgoc3R1YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9w
dGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLmluaXRBcnJheUxlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjI3LDEw
ICsyMzgsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgbmV3
Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJh
eUxlbmd0aCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmlu
ZyhiYXNlQ2VsbCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkg
PT0gQ2FjaGVUeXBlOjpVbnNldCAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVu
Z3RoKHN0dWJJbmZvKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUo
KSA9PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vz
czo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJp
bmdMZW5ndGgoc3R1YkluZm8pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29k
ZUlubGluZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTQsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgog
ICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQogICAgICAgICAgICAgICAg
ICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAg
ICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAgICAgICAgICAgICBib29s
IGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5
QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAg
ICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAg
IExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFy
dFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkp
OwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0
ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm8uaW5pdEdldEJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDI1LDcgKzQzNiw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0
QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0g
YmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
KHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5B
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM5LDcg
KzQ1MCw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZUdldEJ5KGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1
YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3By
aWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRC
eUZ1bmN0aW9uKGtpbmQpKTsKIH0KIAogCkBAIC01MjksNyArNTQwLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2QKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0
aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyKCkpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0g
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5s
aW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDAs
NyArNTUxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKIHZvaWQgcmVwYXRjaEFycmF5R2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewogICAgIGlmICh0cnlDYWNoZUFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2UsIGluZGV4LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25HZXRCeVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQ
dXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtp
bmQpIC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2LDcg
KzY0Nyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5ICYm
IChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09
IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3
Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYg
KHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKICAg
ICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5nUHJv
cGVydHkpIHsKQEAgLTY1OCw3ICs2NjksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAg
ICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6
OmdlbmVyYXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90
LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJ
bmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJ
ZFNlbGZQYXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgp
ID09IGJhc2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJv
cHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmlu
aXRQdXRCeUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNh
Y2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtODAxLDcgKzgx
Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC04MTUsNyArODI2LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBp
ZiAodHJ5Q2FjaGVQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2
ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRG
dW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVy
aWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCiBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJv
cGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1v
ZGUgZWNtYU1vZGUpCkBAIC04NDYsNyArODU3LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MK
ICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAg
ICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBuZXdPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtODc0LDcgKzg4NSw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAgICAgICAg
ICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7
Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Cisg
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5n
SW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04
OTEsOSArOTAyLDkgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAKICAgICBpZiAodHJ5Q2FjaGVE
ZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZlVXBP
bkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVy
aWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgICAgICBpZiAoa2lu
ZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJ
ZEdlbmVyaWMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVC
eVZhbEdlbmVyaWMpOwogICAgIH0KIH0KIApAQCAtOTM3LDcgKzk0OCw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJh
dGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Oklu
QnlJZFNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRj
aGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ss
IHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBA
IC05ODQsNyArOTk1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlE
KAogCiAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKIAotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUo
CiAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0
IDogQWNjZXNzQ2FzZTo6SW5NaXNzLCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kID8gc2xvdC5jYWNo
ZWRPZmZzZXQoKSA6IGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8u
YWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6
c3RyaWN0KCksIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CkBAIC05OTMsNyArMTAw
NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAg
ICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEwMDcsNyArMTAxOCw3IEBAIHZvaWQgcmVwYXRjaEluQnlJ
RChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNP
YmplY3QqCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
CiAgICAgaWYgKHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25D
YWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgICAgIHJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbkJ5SWQpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVDaGVja1ByaXZhdGVCcmFuZCgKQEAgLTEwMzIsNyArMTA0Myw3IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFz
ZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVC
cmFuZEFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQ
cm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJh
bmRJRCwgc3RydWN0dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nl
c3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBz
dHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElE
LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA0MCw3ICsxMDUxLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDU0LDcgKzEwNjUsNyBAQCB2b2lkIHJlcGF0Y2hD
aGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jawogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKIAogICAgIGlmICh0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkK
LSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7Cisg
ICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCkBAIC0xMDkx
LDcgKzExMDIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRl
QnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OlNldFByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0
ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
KTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVT
ZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdT
dHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElE
LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA5OSw3ICsxMTEwLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9j
aywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1
bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExMTMsNyArMTEyNCw3IEBAIHZv
aWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJ
bmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJp
dmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFu
Y2VPZigKQEAgLTExMzMsNyArMTE0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUluc3RhbmNlT2YoCiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIHZhbHVlID0gdmFsdWVW
YWx1ZS5hc0NlbGwoKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+c3Ry
dWN0dXJlKHZtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7
CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCog
cHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7
CiAgICAgICAgIGlmIChwcm90b3R5cGUpIHsKICAgICAgICAgICAgIGlmICghanNEeW5hbWljQ2Fz
dDxKU09iamVjdCo+KHZtLCB2YWx1ZSkpIHsKQEAgLTExNjgsOSArMTE3OSwxMyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNo
YWJsZUp1bXAoKSwKLSAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSByZXN1
bHQuY29kZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFi
bGVKdW1wKCksCisgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCkBAIC0xMTg1LDcgKzEyMDAsNyBAQCB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9m
KAogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAg
ICBpZiAodHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZh
bHVlLCBwcm90b3R5cGVWYWx1ZSwgc3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hl
KQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOworICAgICAg
ICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOwogfQogCiBzdGF0aWMgdm9pZCBs
aW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGVSZWYpCkBAIC0xMjAyLDcgKzEy
MTcsNyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2Fs
bExpbmtJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwog
ICAgIGxpbmtTbG93UGF0aFRvKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAg
Y2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZp
cnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiB9CiAKIHN0YXRp
YyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBjYWxsZWUpCkBAIC0xMzIwLDcgKzEz
MzUsNyBAQCBzdGF0aWMgdm9pZCBsaW5rVmlydHVhbEZvcihWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Io
dm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0
dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNs
b3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsg
fSkpOwogICAgIGNhbGxMaW5rSW5mby5zZXRDbGVhcmVkQnlWaXJ0dWFsKCk7CiB9CiAKQEAgLTE2
NDEsMTQgKzE2NTYsMjYgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKIAogdm9pZCByZXNldEdl
dEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEdl
dEJ5S2luZCBraW5kKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRC
eUZ1bmN0aW9uKGtpbmQpKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgIHN3aXRjaCAoa2luZCkg
eworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToK
KyAgICBjYXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkRpcmVj
dDoKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxv
Y2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1h
bEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOworICAg
ICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgdXNpbmcgRnVuY3Rp
b25UeXBlID0gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7
Ci0gICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0
PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBGdW5jdGlvblR5
cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihy
ZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBGdW5jdGlvblR5cGUgb3B0
aW1pemVkRnVuY3Rpb247CiAgICAgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0T3B0aW1pemU7CkBAIC0xNjY1LDQ1ICsxNjkyLDQ4IEBAIHZvaWQgcmVzZXRQdXRC
eUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAg
ICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dE9wdGltaXplOwogICAgIH0KIAotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlvbik7Ci0g
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlvbik7CisgICAg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
KTsKIH0KIAogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQogewogICAgIGlmIChraW5kID09IERl
bEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAg
ICAgZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7
Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotc3RhdGljIHZvaWQg
cmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3N0YXRpYyB2
b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQogewotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHVi
SW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cisg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgc3R1YkluZm8ubV9jb2Rl
UHRyID0gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIGVsc2UKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAogdm9pZCByZXNldEluQnlJRChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwor
ICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpy
ZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotdm9pZCBy
ZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldElu
c3RhbmNlT2YoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKLSAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8pOworICAgIHJlc2V0UGF0Y2hh
YmxlSnVtcChjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldENoZWNrUHJpdmF0
ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwot
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJh
bmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFNl
dFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRl
QnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vz
c05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKFZNJiB2bSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU09iamVjdCogY2FsbGVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAppbmRleCAzMTM3OWRjNGU1YTlkYzJkYzZlYTQ5MzE3Nzk0NzI2YTAw
MjAzNTFhLi4zYTE5ZmQzNjU0OWQxYTg0ODA5Zjk0ZGFkYTJkZmJlNTcwMDBmZDEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIHJlc2V0R2V0
QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNl
dFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXREZWxC
eShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0
SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlc2V0SW5zdGFu
Y2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBkOTQ5N2ViZDRmMGJhNmY2
MjU3OWRjZDU0MjNhN2I5ODQ3ZTk0NGUyLi43ZTBlNTkzMjc0NWI4YWFlZGI5OTBkOThkYTY2Mjc3
ODQzNWNlMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKQEAgLTUzNiw2ICs1MzYsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENh
Z2UoKTsKICAgICB2KEJvb2wsIHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VUb3BMZXZlbEF3YWl0LCB0cnVlLCBOb3JtYWwsICJh
bGxvdyB0aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLiIpIFwK
ICAgICB2KEJvb2wsIHZlcmJvc2VFeGVjdXRhYmxlUG9vbEFsbG9jYXRpb24sIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYXJlZElDLCBpc0FSTTY0KCksIE5vcm1h
bCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2MGY5OGY1NjNhNzZlZGVkYTUyYTA3
Mjg4M2U0YmFmZWJkNzJkZWU1Li45YzU0Y2I0NDg2ZTZlNDZhNGE0ZjgxNDZjNzAyMDBhZTUwMGI5
OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vz
c0Nhc2UuaCIKICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3Qu
aCIKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKQEAgLTU2Niw2ICs1NjcsNyBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwg
Ym9vbCogc3VjY2VzcykKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJ
SW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRD
VElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAg
ICAgbV9zaGFyZWRKSVRTdHVicyA9IG1ha2VVbmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAg
ICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApAQCAtNjQ5LDYgKzY1MSw4IEBAIFZNOjp+Vk0o
KQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjcmF0Y2hCdWZmZXJzLnNpemUoKTsg
KytpKQogICAgICAgICBWTU1hbGxvYzo6ZnJlZShtX3NjcmF0Y2hCdWZmZXJzW2ldKTsKICNlbmRp
ZgorCisgICAgbV9zaGFyZWRKSVRTdHVicyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgVk06OnByaW1p
dGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2b2lkKiBhcmd1bWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCmluZGV4IDJkM2NkNDY2ODg4YmNlM2FmYjVhODg5MzYxNzI3NThmMThj
OTNmYTYuLjRkZTk1ZjYzOGIxZTIzODU5YTFiMzRlOTE3ZGM5M2FhMmY5ZjM1YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc0LDYgKzE3NCw3IEBAIGNsYXNzIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hh
ZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRh
YmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwpA
QCAtODQxLDExICs4NDIsMTMgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUoSklU
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJzOwogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJU3R1YihUaHVua0dlbmVyYXRvcik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJTZXQ+IG1fc2hhcmVkSklUU3R1YnM7
CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCisKICAgICBOYXRpdmVF
eGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUq
IGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwogCg==
</data>
<flag name="commit-queue"
          id="451265"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429961</attachid>
            <date>2021-05-27 17:19:08 -0700</date>
            <delta_ts>2021-05-27 17:38:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527171907.patch</filename>
            <type>text/plain</type>
            <size>421572</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5jODI1NWZlMTFmNjExOWJh
MmQ2NDg0MDE2M2RlOWUyODM3YjgzZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNTIgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNl
OjpjcmVhdGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9t
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjbG9uZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpTaGFy
ZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1
YlNldDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleTo6
S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6
Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjplcXVh
bCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9y
OjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5z
bGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRy
YW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVy
VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjphZGQp
OgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpyZW1vdmUpOgorICAgICAgICAoSlND
OjpTaGFyZWRKSVRTdHViU2V0OjpmaW5kKToKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
aDoKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlc2V0SklURGF0YSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlU2hh
cmVkSUMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpnZXRTY3JhdGNoUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXApOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFj
Y2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xv
bmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldDo6aGFzaCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omlu
c3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpz
dWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKToK
KyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZSk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGxXaXRob3V0RXhjZXB0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJv
dXRUb0RpZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFwcGVuZENhbGwpOgor
ICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6
OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2gpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0
ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250
ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFy
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtl
Q2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0
aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRo
Q2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRW
aXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0NvbGxlY3Rpb24pOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hFeHRyYVJlZ0FyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaE5vbkFyZyk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRHUFJFeHRyYUFyZyk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkU3RhY2tBcmcpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFBva2UpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBva2VPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjptYXJz
aGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50
c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNFbnRyeUltcGwpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbCk6CisgICAgICAgICogaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHVi
Um91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSk6Cisg
ICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6
OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJh
dG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGpp
dC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZVNoYXJlZElDKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpK
SVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUQnlJ
ZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpK
SVRHZXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpK
SVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
OjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6
OkpJVEdldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChK
U0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2Vu
ZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
cml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0
ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFy
cmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVs
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAo
SlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9h
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmFib3V0
VG9EaWUpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6a2V5cyBjb25zdCk6CisgICAg
ICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRQdXRJQ0NhbGxU
YXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2FsbCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlEKToKKyAg
ICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQ
cml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2Yp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OmxpbmtT
bG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAoSlNDOjpy
ZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6
cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6CisgICAgICAg
IChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0
U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5oOgorCiAyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3Ry
dWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5k
ZXggZTUxNzU3ZTliOGZjNjQyODc4MjdjMTZkMDJkMjFjYzIxOGZiMTMyNi4uODNjYjM2ZDA2Zjgz
MTJjODk1ZjZhNDliMjU2YmJlYzM0NjI3M2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTIzNCw4ICsyMzQsOCBAQCBjbGFzcyBMaW5rQnVm
ZmVyIHsKICAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIENvZGVMb2NhdGlvbkNhbGw8dGFn
PiBsb2NhdGlvbk9mKENhbGwgY2FsbCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYWxsLmlzRmxh
Z1NldChDYWxsOjpMaW5rYWJsZSkpOwotICAgICAgICBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENh
bGw6Ok5lYXIpKTsKKyAgICAgICAgLy8gQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6Okxpbmth
YmxlKSk7CisgICAgICAgIC8vIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOwog
ICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbDx0YWc+KGdldExpbmtlckFkZHJlc3M8dGFn
PihhcHBseU9mZnNldChjYWxsLm1fbGFiZWwpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVmZjc4MjI2MmU3MTg1Yjg3
NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNTc5ZDg1OGRkNzcyYzY1N2IyYmI0YzVhNzRhYmExMDNm
ZWRmYjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3
IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIs
IG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
OwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBu
ZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmll
ciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAor
UmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAgICBW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3
U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQs
IG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2Uo
KQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1
Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHN3
aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09iamVj
dCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRpdGlv
blNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiArMTA2Myw4IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9j
YXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAg
aWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEzMTcs
NiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0
eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BS
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBA
IC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQg
QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgVk0mIHZtID0gc3Rh
dGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBNb2R1
bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0
MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgorICAg
IGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJp
YzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2Ug
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nl
c3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7
CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7CisgICAgICAgICAgICBpZiAo
IWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gc3Ry
dWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3VyclN0cnVjdHVy
ZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgIGN1cnJTdHJ1
Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNo
YWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpX
YXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKKyAgICAgICAgICAgIHN0
YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5vdywgd2Ugb25seSBhbGxv
dyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVp
dmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlk
aXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgLy8g
VGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0
IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgICAgIC8vIEFj
Y2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1ZS4KKworICAgICAgICAg
ICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1ldDogIiwgY29uZGl0aW9u
LCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0IGhhcyBhIHdlYWsgcmVm
ZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVyZS4KKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlNDZWxsPih2
bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAtMTQxNyw3ICsxNTAyLDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOwog
CiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVX
YXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb25k
aXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJsb2NrLCBj
b25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTU4Miw3
ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2Fy
eSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0
ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgwMiw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5k
aWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJ
bmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9
PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE4MTQsOCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRl
Lm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChj
b2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0
ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBz
cGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsK
KyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFs
dWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyAr
MTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVy
QnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUu
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOwor
CisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJz
Ojpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsyMDMz
LDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFz
ZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1
ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYg
KzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygp
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0yMTkxLDYgKzIyOTcsMTMg
QEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5VHlwZShBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBKSVRTdHVi
Um91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tD
b25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nl
c3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3Qg
Y2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhl
bSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0Fj
Y2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1f
dHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhz
Lm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5
ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5t
X3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobGhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSAhPSByaHMubV9jb25k
aXRpb25TZXQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxpdGVy
ID0gbGhzLm1fY29uZGl0aW9uU2V0LmJlZ2luKCk7CisgICAgYXV0byByaXRlciA9IHJocy5tX2Nv
bmRpdGlvblNldC5iZWdpbigpOworICAgIGZvciAoOyBsaXRlciAhPSBsaHMubV9jb25kaXRpb25T
ZXQuZW5kKCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAgICAgaWYgKCEoKmxpdGVyID09ICpy
aXRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChs
aHMubV90eXBlKSB7CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CisgICAgY2FzZSBSZXBsYWNlOgorICAgIGNhc2UgTWlzczoKKyAgICBjYXNlIEdl
dEdldHRlcjoKKyAgICBjYXNlIEluSGl0OgorICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQXJy
YXlMZW5ndGg6CisgICAgY2FzZSBTdHJpbmdMZW5ndGg6CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBDaGVj
a1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICBjYXNlIEluZGV4
ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0
QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAg
Y2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVy
OiB7CisgICAgICAgIC8vIEdldHRlciBhbmQgU2V0dGVyIHJlbGllcyBvbiBDb2RlQmxvY2ssIHdo
aWNoIG1ha2VzIHNoYXJpbmcgaW1wb3NzaWJsZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3Nv
ckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNj
ZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCk7CisgICAgICAgIGlmIChsaHNkLm1fZG9tQXR0cmlidXRlIHx8IHJoc2QubV9k
b21BdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBs
aHNkLm1fY3VzdG9tU2xvdEJhc2UgPT0gcmhzZC5tX2N1c3RvbVNsb3RCYXNlCisgICAgICAgICAg
ICAmJiBsaHNkLm1fY3VzdG9tQWNjZXNzb3IgPT0gcmhzZC5tX2N1c3RvbUFjY2Vzc29yOworICAg
IH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBs
aHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9
IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhz
ZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAgICB9
CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9
IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNk
ID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBs
aHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1fbW9k
dWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSByaHNk
Lm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAgIGNh
c2UgSW5zdGFuY2VPZk1pc3M6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAgICAg
ICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBh
dXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1
cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdk
NjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uOWMyZmIzZWE2YWQyOGIxNzQ0YzA5Nzc4
OGRjNjRiMzU1YjRkMGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIsNyBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8v
IFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBv
bHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBh
bGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVm
dWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNl
IHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNz
Q2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVS
KEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpA
QCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVu
dHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0
dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9
IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJy
YW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRl
QnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8
QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQpAQCAtMjUzLDExICsyNTYsMzkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9
CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRpdGlvblNl
dC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5LCBtX3N0
cnVjdHVyZS5nZXQoKSwgbV9vZmZzZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFs
SW5TaGFyaW5nKGNvbnN0IEFjY2Vzc0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsK
LSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2Uo
Y29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vz
c0Nhc2UmJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQor
ICAgICAgICAsIG1fc3RhdGUoV1RGTW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3Zp
YVByb3h5KFdURk1vdmUob3RoZXIubV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RG
TW92ZShvdGhlci5tX29mZnNldCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhl
ci5tX3N0cnVjdHVyZSkpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5t
X2NvbmRpdGlvblNldCkpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3Zl
KG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNv
bnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisg
ICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3Ro
ZXIubV92aWFQcm94eSkKKyAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlv
blNldChvdGhlci5tX2NvbmRpdGlvblNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0No
YWluKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVy
KG90aGVyLm1faWRlbnRpZmllcikKKyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9y
PShjb25zdCBBY2Nlc3NDYXNlJikgPSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBt
X3N0YXRlID0gUHJpbW9yZGlhbDsgfQpAQCAtMjc1LDcgKzMwNiw3IEBAIGNsYXNzIEFjY2Vzc0Nh
c2UgewogCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNj
ZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFj
dGlvbiB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBp
biB3aGljaCB0aGUgY2FzZQogICAgIC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdh
dGNocG9pbnQgc2V0cyB0aGF0IHdpbGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0
NiwxNjggQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCitjbGFzcyBTaGFyZWFibGVKSVRTdHViUm91dGluZSBmaW5hbCA6IHB1
YmxpYyBKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgU2hhcmVhYmxlSklUU3R1YlJvdXRp
bmUoVk0mIHZtLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKKyAgICAg
ICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwg
bV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9r
ZXlzOyB9CisKKyAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1f
a2V5czsKK307CisKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKFNoYXJlZEpJVFN0dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJT
ZXQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBrZXlzKQorICAgIHsKKyAgICAgICAgSGFzaGVyIGhh
c2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAgICAgICAgV1RGOjph
ZGQoaGFzaGVyLCBrZXktPmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwor
ICAgIH0KKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7CisgICAgICAg
ICAgICBLZXkoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAg
ICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQ
UihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAg
ICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0
dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJz
KHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChi
aXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRTdHViUm91
dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAg
ICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAg
ICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAg
ICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAg
ICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCAhPSBiLm1fd3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
SklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJl
ZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAg
IEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAg
ICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVkLT5rZXlz
KCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBh
LCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJjaGVyIHsK
KyAgICAgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5cyk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6
OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byYgYXZlYyA9ICphLm1fd3JhcHBlZC0+a2V5cygpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBhdXRvJiBidmVjID0gYi5tX2tleXM7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdmVjLnNpemUoKSA9PSBidmVjLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYnZlYy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFy
aW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgIEdQ
UlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgR1BS
UmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsK
KyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYgbV9rZXlzOwor
ICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5LCBKSVRT
dHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleS5tX3dy
YXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChIYXNoOjpL
ZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0KKworICAg
IHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAgICAgaWYg
KGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3ZlKGl0ZXIp
OworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVyJiBzZWFy
Y2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hhcmVkSklU
U3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKGVu
dHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1fd3JhcHBl
ZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4
NC4uNDJkMDc5NGRkNjI0MGM2MzgwYzliYTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBz
dHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihC
eVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdkZjA1ZTEw
YmM5MGI2NTZmMzUwM2M4NWMwNTRjNWQzYWZhN2M2YjkuLjE4OWE1ODQ3NzBmMDJjYjM4N2Y3NWQ5
YTQ0MzZmY2I1MDg0Y2U0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC04NjEsNyArODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkK
ICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgp
KSB7CiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+
bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAg
ICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5m
by0+ZGVyZWYoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAg
ICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KSB7Ci0gICAgICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1
YkluZm8tPmFib3V0VG9EaWUoKm1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IDc3MzI5ZjNhNDFlMDRhMWM3MmRiNjJjMWQ1OGY0ZjVjMzYzOTcyNTEuLjgxYWI5N2Zi
ZDgxOGIxZmI3YzFmYmZlZDQwMjQ5ZmM5MzcxNjNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMCw2ICs0MjAsMTEgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09
IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKworICAgIGJvb2wgdXNlU2hhcmVkSUMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEpJVENvZGU6OnVzZVNoYXJlZElDKGppdFR5cGUo
KSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5
N2ZmMWNmZjdjZjM4MzYuLjZhMzBlNjM4ZTIwMGNhMDgwZTE0YmFhZDg3YWU4ZTE2NGZmNjljNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1heUJlTnVsbCh2bSwgb3duZXIsIGN1c3Rv
bVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFs
U2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLCBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9
IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0
ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51
bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RC
YXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVl
U2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2N1c3Rv
bUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJU
YWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05
MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nh
c2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAgbV9kb21BdHRyaWJ1dGUg
PSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
cwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgIEdQUlJl
ZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYgKzIyNSwxMSBAQCB2b2lk
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6IGZwU2NyYXRjaCkKICAg
ICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwogICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JD
Q2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQu
Y29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
cmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlm
CiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92
ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNu
aXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXgg
ODczZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMi4uMTAwZmIyN2VlODU2NjE2
ZmI0MTg0MjVlYzJjNzIzNDk0YTRhZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC01MywxNyArNTMs
MTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFi
bGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciosIEdQUlJlZyBiYXNlRm9yR2V0
R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAor
ICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJv
b2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1
c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAgIEpTT2JqZWN0KiBjdXN0
b21TbG90QmFzZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJl
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
LCBib29sIHZpYVByb3h5ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBjdXN0b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJh
c2UgPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVBy
aW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xv
bmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKIAogICAgIH5HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhm
YWZkOThkMGIyODU5M2NiYmIwNTdiYWU5NmZiMzIxYS4uMTJkMWI1YTBlYzdkZTVmNjc3YWQzNmRh
MTJiYWNlNDA2MjVhMGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUFjY2Vzcy5jcHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBHUFJSZWcgZ2V0U2NyYXRjaFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9z
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkp
CiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMzc5LDggKzM4MSw0NSBAQCBib29s
IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3Zv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKKyAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9
IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENDYWxsSGVscGVycyBqaXQ7
CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBh
IG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUg
bWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7
CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fz
c2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVD
YWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZl
ci5saW5rKGp1bXAsIHRhcmdldCk7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5v
UHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9p
ZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJl
ZElDKCkpIHsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpID09IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
KSB7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnN0dWJJbmZvKSwgc3R1YkluZm8ubV9zdHVi
SW5mb0dQUik7CisgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigp
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1
bXAoKTsKKworICAgICAgICAgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxp
bmUoInN0dWIgY2FsbHMiLCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uZG9u
ZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bGlua2VkQ29kZUlubGluZSk7CisgICAgICAgIH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRy
ID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKIAogICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CkBAIC0zOTQsNiArNDMzLDI2IEBAIHZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0
clRhZywgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7CiB9CiAKK3ZvaWQg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1
dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQg
aGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2Yg
YW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVB
U0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVt
cCwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKworICAgIEZJTkFMSVpFX0NPREUo
bGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVt
cCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4
ZjIyNjQwNmM3ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQuLjhkNjYwMWM4Yjk4ZDgxMjVlYzZiMTAw
YTA3OWM1MWUxMTJhMzgzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmgKQEAgLTEwNCw3ICsxMDQsMTAgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsK
ICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZv
JiwgSlNBcnJheSopOwogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0
cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChT
dHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKLSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHVi
QXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0
dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2Vs
ZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJv
b2wgZ2VuZXJhdGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5j
cHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFlNzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4
ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdjMTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0z
MiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IElu
c3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5
cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgcHJvdG90eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
cHJvdG90eXBlKSk7CiB9CiAKIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFBy
aW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5
IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQs
IENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90
eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3ND
YXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9m
QWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmluZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5
OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNz
Q2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNj
ZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0
YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gQWNjZXNzQ2FzZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsK
ICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYs
CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZv
aWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VP
ZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFk
YzIzMzY5MzNkNjc2YzNiZTllOTBjNjAxODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZl
NjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4
ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rp
b24uc2V0KHZtLCBvd25lciwgaW50cmluc2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVm
PEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGlu
dHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1
M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEyYmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMg
Ym9vbCBjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAg
ICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9u
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNG
dW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApp
bmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEwOGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFm
NDgxNTU2NjE1MTcwODVhODhlMTlhMDczYWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3Bw
CkBAIC00NSwxOCArNDUsMTggQEAgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVs
ZUVudmlyb25tZW50LnNldCh2bSwgb3duZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVF
bnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQor
UmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVu
dCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVs
ZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1l
c3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAppbmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNk
MDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVu
dmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52
aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZz
ZXQpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVs
ZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKaW5kZXggNWQ5MDU0NTk3NGYxZWQzN2YyOGNhZjNhMmFlYjM0NmE0OTEwYTI4My4uNmRhY2Ni
Zjg3MWMwODdhYWJhOTg2MzVjNTAxYTc4YjdmNGZkMTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwxNCBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNv
bmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2go
KSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KICAgICAKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpL
aW5kKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlh
N2QwOWEwMTUuLjVkM2YxMzY3ZWE0ZDU0Y2JkNTFmYWI0MmRjYjMxNjkxYmQxOWZlOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7
CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0g
ICAgICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9u
KTsKKyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFu
ZEluc3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25k
aXRpb24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2go
KQpAQCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVT
Y3JhdGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICBy
ZXN0b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBp
ZiAoaml0LT5jb2RlQmxvY2soKS0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsK
KyAgICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29u
c3QgUmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNh
bGwoKQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnBy
ZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9
OwogfQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQog
ewogICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3Rl
cnMoKTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVz
VXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJh
U3RhY2tQYWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBv
bHltb3JwaGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYg
bG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3Jp
Z2luYWxDYXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdp
bmFsQ2FzZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3Mg
YWZ0ZXIgZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2lu
YWxDYXNlc1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3Jp
Z2luYWxDYXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAg
ICAgIGF1dG8gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwogCiAgICAg
ICAgIC8vIEFkZCBpdCBvbmx5IGlmIGl0IGlzIG5vdCByZXBsYWNlZCBieSB0aGUgc3Vic2VxdWVu
dCBjYXNlcyBpbiB0aGUgbGlzdC4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMzQ2
LDkgKzM0OSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKAogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjph
ZGRDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKIHsK
LSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsK
KyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKICAgICBuZXdB
Y2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4gYWRkQ2FzZXMo
bG9ja2VyLCB2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nlc3NlcykpOwog
fQpAQCAtNDQwLDcgKzQ0Myw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNB
Y2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWdu
ZWQgc3JjSW5kZXggPSAwOwogICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAo
c3JjSW5kZXggPCBtX2xpc3Quc2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10p
OwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0
aGVuIHdlIGhhdmUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAg
ICAgICAgLy8gZmFpbCB0byByZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1
Y3R1cmVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzQ5NCw4
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRo
aXNUYWdHUFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQ
Uik7CiAKICAgICBzdGF0ZS5zY3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQ
UigpOwogCkBAIC01MDAsMTIgKzUwNSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1v
cnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMg
aml0KGNvZGVCbG9jayk7Ci0gICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNl
cnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVz
ZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJh
U3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2Rl
ID0gZmFsc2U7CiAKQEAgLTUyMSwxMiArNTIwLDMwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiT3B0aW1pemVkIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwotICAg
IAorCisgICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNl
dHRlckNhbGxzID0gZmFsc2U7CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4ga2V5cyhjYXNlcy5zaXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBm
b3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5k
b2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgpID09
IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRl
cikKKyAgICAgICAgICAgIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAg
a2V5c1tpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUu
bV9kb2VzQ2FsbHMgPSBkb2VzQ2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJD
YWxscyA9IGRvZXNKU0dldHRlclNldHRlckNhbGxzOworICAgIC8vIEdldHRlciAvIFNldHRlciBy
ZWxpZXMgb24gc3RhY2stcG9pbnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBs
aW5rZWQgQ29kZUJsb2NrLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAg
aWYgKGRvZXNKU0dldHRlclNldHRlckNhbGxzKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNl
OworCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNv
bnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3
b24ndCBjaGFuZ2UgdGhhdCBzZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRC
eVN0cnVjdHVyZUNoZWNrID0gdHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9
IGZhbHNlOwogICAgIGJvb2wgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBi
b29sIG5lZWRzU3RyaW5nUHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1i
b2xQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CkBAIC01NDIsMTAgKzU1OSw3MSBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvYwogICAgICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0
ZS53YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBh
bGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVD
aGVjayhzdHViSW5mbyk7Ci0gICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2Fz
ZTo6R2V0dGVyIHx8IG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAg
ICAgICAgICBoYXNKU0dldHRlclNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2Fz
ZS0+dXNlc1BvbHlQcm90bygpKQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3Bl
cnR5Q2hlY2sgfHwgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVk
ID0gZmFsc2U7CisKKyAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWI7CisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpIHsKKyAg
ICAgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVl
R1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnVz
ZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAga2V5cworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJjaGVyKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGF1dG8gZmluaXNoQ29kZUdlbmVyYXRpb24gPSBbJl0oUmVmUHRy
PEpJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9zdHViUm91dGluZSA9IFdURk1v
dmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9p
bnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2Vs
bD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgaWYgKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJSZXR1cm5p
bmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAgICAgbV9saXN0ID0g
V1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOworCisgICAgICAg
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAgICAgICAgaWYgKG1f
bGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2Vu
ZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CisK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgbV9zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfTsKKworICAgIGlmIChzdHViKSB7CisgICAg
ICAgIGZvciAoYXV0byYgYWNjZXNzQ2FzZSA6IGNhc2VzKQorICAgICAgICAgICAgYWNjZXNzQ2Fz
ZS0+Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uoc3RhdGUsIGNvZGVCbG9jayk7CisgICAg
ICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKICAgICB9CiAK
KyAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsK
KworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRl
Lm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8g
Z3VhcmFudGVlIHRoYXQgc3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlz
IG5vdCBhIHByb2JsZW0gaWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNh
bGxzIHNpbmNlIHN0YWNrLXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJl
Z2lzdGVyIGFuZCBpdCBpcyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1
dGFibGUgY2FsbCBkb2VzIG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rp
bmcgc3RhY2stcG9pbnRlciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVy
IGNhbGxzLiBCdXQgdGhpcyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFj
ay1wb2ludGVyLCBhbmQgbWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8g
VG8gZW5zdXJlIFBBQy10YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVy
IHRvIHRoZSBhcHByb3ByaWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIH0KKworICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAg
ICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAK
ICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5s
aWtlbHksIGJ1dCB3ZSBtYWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFu
ZFJlcGF0Y2guYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc2OCw3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0
aW9uSGFuZGxlcnMgPSBudWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3Rv
cmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAg
IGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pT
R2V0dGVyU2V0dGVyQ2FsbHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hl
biBkb2luZyBnZW5lcmljVW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAg
ICAgICAvLyBOb3RlIGFsc28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20g
Z2V0dGVyL3NldHRlci4gQ3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2
ICs4MDgsMTUgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nKCk7CiAgICAgfQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBu
b3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNh
biBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNh
bGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxs
IHRvIHRoZSB0aHVuayB3aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAg
ICAvLyBBbmQgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBC
YXNlbGluZUpJVC4KKyAgICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRo
U3RhcnRMb2NhdGlvbigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKwogICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRl
cm5hbDo6dmVyYm9zZSkKQEAgLTczOSw5ICs4MjYsMTIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2MKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHN1Y2Nlc3NMYWJl
bCA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKIAotICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5z
dWNjZXNzLCBzdWNjZXNzTGFiZWwpOwotCi0gICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgQVNTRVJUKHN0YXRlLnN1Y2Nlc3MuZW1wdHkoKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBz
dHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1
YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKQEAgLTc0OSwzNSArODM5LDIxIEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBjb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9j
aywgbGlua0J1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICIlcyIsIHRvQ1N0
cmluZygiQWNjZXNzIHN0dWIgZm9yICIsICpjb2RlQmxvY2ssICIgIiwgc3R1YkluZm8uY29kZU9y
aWdpbiwgIiB3aXRoIHJldHVybiBwb2ludCAiLCBzdWNjZXNzTGFiZWwsICI6ICIsIGxpc3REdW1w
KGNhc2VzKSkuZGF0YSgpKTsKLQotICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7Ci0gICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOwotICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykK
LSAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7
Ci0gICAgCi0gICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
LCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxs
TGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShz
dGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5
KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmIChQb2x5bW9y
cGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6
ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKLSAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2Vz
KTsKLSAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7Ci0gICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9u
czo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQotICAg
ICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxD
b2RlOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OkdlbmVyYXRlZE5ld0NvZGU7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQocmVzdWx0S2luZCwgY29kZS5jb2RlKCkpOworICAgIHN0dWIgPSBjcmVhdGVKSVRTdHVi
Um91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNl
bGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRP
d25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7
CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChjYW5C
ZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1fc2hhcmVkSklUU3R1YnMtPmFkZChTaGFyZWRKSVRT
dHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0
dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNl
ZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBmaW5pc2hDb2Rl
R2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKIH0KIAotdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6
YWJvdXRUb0RpZSgpCit2b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKFZNJiB2bSkK
IHsKICAgICBpZiAobV9zdHViUm91dGluZSkKLSAgICAgICAgbV9zdHViUm91dGluZS0+YWJvdXRU
b0RpZSgpOworICAgICAgICBtX3N0dWJSb3V0aW5lLT5hYm91dFRvRGllKHZtKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFi
MzRhZWNiNDEuLmY5ZjhjYmYwZDU1OThlMWYxZWYyMzAxYjQ1OGZiYWRiMDMzNDRkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
V2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xk
IHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMg
bWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2Rl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIFBv
bHltb3JwaGljQWNjZXNzIHsKICAgICAvLyBvcHRpbWl6YXRpb24gdG8gdGhlbiBhdm9pZCBjYWxs
aW5nIHRoaXMgbWV0aG9kIGFnYWluIGR1cmluZyB0aGUgZml4cG9pbnQuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNpdG9yJikgY29u
c3Q7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKTsKKyAgICB2b2lkIGFib3V0VG9EaWUoVk0mKTsK
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zUEModm9pZCogcGMpIGNvbnN0CkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBo
aWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOwogICAgIAogICAgIHZvaWQgY29tbWl0KAog
ICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVl
X3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLApAQCAtMTk2LDYgKzE5Niw4IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUgewogICAgICAgICA6IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1f
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMoZmFsc2UpCisgICAgICAgICwgbV9kb2VzQ2FsbHMoZmFs
c2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhh
bmRsaW5nKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2Vw
dGlvbihmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KGZhbHNlKQpA
QCAtMjI1LDggKzIyNywxMCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50
czsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOwogICAg
IEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1fZG9lc0pTR2V0
dGVyU2V0dGVyQ2FsbHMgOiAxOworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwogCi0gICAgdm9p
ZCBpbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOworICAg
IHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKIAogICAgIHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2b2lkIHN1Y2Nl
ZWQoKTsKQEAgLTI0OCw3ICsyNTIsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRF
eGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwotICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0
aW9ucygpOworICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwogCiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhj
ZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRv
bnRSZXN0b3JlID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2MmEzODllMmVm
NTBlZWE2YTNiMzRlNzVmYTlkLi40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1MDc5YWNiY2Mx
MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
YWNjZXMKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9
PSBSZXBsYWNlKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJveHlh
YmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+UHJveHlhYmxl
QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm94eWFibGVB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApp
bmRleCBkYzM5ZTI2Y2EyZjRiMmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5lODQzODVjYTc1
YzlmNzUyZThlOGUxNmNkZGUwYWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3LDExICszNywx
MSBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogCiAg
ICAgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWRkaXRpb25hbFNldC5nZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAgICBzdGF0aWMg
UmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAogICAgICAg
ICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBu
dWxscHRyLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAogICAg
IHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIH5Q
cm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2
YTM5Yjg0NThiOTAwY2IyYTUyZWY0ZjE1MTEyMGYuLmRlMDI1ZTc0ZWRkODJmZmU4NjFiNzM3NzMx
ZDUwYTI0NmM0OTljNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaQogICAgICwgcHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwgcHJvcGVydHlJ
c1N5bWJvbChmYWxzZSkKIHsKKyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogfQog
CiBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEyMCwxMSArMTIx
LDExIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGll
KCkKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoVk0mIHZtKQogewogICAgIHN3
aXRjaCAobV9jYWNoZVR5cGUpIHsKICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKLSAgICAgICAg
dS5zdHViLT5hYm91dFRvRGllKCk7CisgICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSh2bSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OkdldEJ5SWRTZWxmOgpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjJmNmNiYTMx
YmZmYmFjNGMxYzBhMmY5NTE4MzI2ZjJjMzMwNzc3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04NywxMiArODcsMTIg
QEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRk
QWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNz
Q2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2Fz
ZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKik7CiAKICAgICB2b2lkIGRlcmVmKCk7Ci0gICAgdm9pZCBhYm91dFRvRGllKCk7Cisg
ICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsK
IApAQCAtMzQ3LDE2ICszNDcsMjQgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRM
b2NhdGlvbjsKIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRh
Zz4gbV9jb2RlUHRyOworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3Bl
cmF0aW9uOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24p
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0K
KwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUjsK
LSAgICBHUFJSZWcgdmFsdWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CisgICAgR1BSUmVnIHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9uIHsK
ICAgICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAg
IH0gcmVnczsKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBGSVhN
RTogWzMyLWJpdHNdIENoZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlzIHVz
ZWQgc29tZXdoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDhhZGVhZDUwZjQ1NTZjZmYyNWU3YzdjOTk3ODMwNGQ0MTc3MDk3NDcuLjQ3NjU0YTc2
ZGI1YTExM2YwZmNiNmJmNjhhM2QyMmFjYmM2YTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xhc3MgSklUQ29t
cGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2Fs
bExpbmtSZWNvcmQoZnVuY3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4gZnVu
Y3Rpb25DYWxsOwogICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggOTgx
ZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAwMWJlODE2MDEyNi4uMzg4NmNiMmJkYmI4M2RjNzdi
NzcyNWVhZjU3NDEyNDU1ZWMxMWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTg4LDYgKzE4OCw4IEBAIGNsYXNzIENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xv
d1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwog
fTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5
cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBA
IC0yNjMsNiArMjY1LDY2IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBz
b3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
K2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVi
bGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAg
ICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNs
b3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJl
cXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20s
IGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1Yklu
Zm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAgICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Mo
c2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24p
CisgICAgICAgICwgbV9hcmd1bWVudHMoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQg
dW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRpdmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5j
ZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAgeworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwor
ICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAg
ICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVz
dWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1ZSkKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJh
dGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBzdGQ6OmdldDxB
cmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFk
ZHJlc3MsIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJ
bmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtlX2luZGV4
X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2YWx1
ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0aW9uVHlw
ZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsK
KyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRU
eXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlwZSByZXN1
bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5mbywgc3R1
YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxsTW9kZSwg
cmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3Vt
ZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHViSW5mbywg
c3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5lZWRUb1Nw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0LCBhcmd1
bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhm
OC4uYzMwNjY2NjUwNmFmNTU4NmM2NDExMWIxOGE2NmI1MjkyNTVmNWMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwMjYsMjQg
KzEwMjYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9k
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAg
YmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklU
Q29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1w
KCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUxLDcgKzEw
NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2Uo
KTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5
cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50
eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKQEAgLTEwOTYsNyArMTEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlw
ZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEx
MSwxNCArMTEzNSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNo
KE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigp
OwpAQCAtMTEyOCwyMCArMTE1NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNl
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTExNzAsMjIgKzEyMTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQy
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgIH0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBKU1Zh
bHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBh
eWxvYWRHUFIoKTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwor
CiAgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQog
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVn
cykpOwogCkBAIC0xMTk0LDIwICsxMjQzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwog
CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAot
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9q
aXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEzMDAsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBP
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwogCkBAIC0xMjQ4LDE0ICsxMzE4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQu
cmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVk
KGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsCi0gICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
KyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0zNTYxLDkgKzM2NDIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlMKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0g
R2V0UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9n
cmFwaC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxh
dGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBPcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
fQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgc3Bl
Y3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworCiAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTM1NzQsMTQg
KzM2NjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlW
YWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBi
YXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1dG8gYmFz
ZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkgeworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0
LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAgICAgICBi
YXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAgICAgICAg
cmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAgLTM1ODks
OCArMzY4Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93bkNlbGwK
LSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2Uu
cGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOworICAgICAg
ICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxv
YWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAgICAgbV9q
aXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwyOCArMzY5OSw0MCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CiAg
ICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAgIGNhc2Ug
Q2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwg
MCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJh
c2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
ICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBz
dHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUs
IDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zNzIyLDI5ICszODMxLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisKKyAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERl
ZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSog
bm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJhbmRHUFIg
PSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigp
LCBicmFuZEdQUik7CkBAIC0zNzU4LDE2ICszODc4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFu
ZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRH
UFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJy
YW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKQEAgLTM3NzgsOSArMzkwNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIGJy
YW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzc5MiwxNiArMzkyNiwyNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAor
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7
CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAg
LTM5MTksMjIgKzQwNjEsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRl
c0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BS
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJz
KCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBl
UmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJl
Z3MsCi0gICAgICAgIHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBw
cm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1Yklu
Zm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQu
YWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTQ1LDYgKzQwOTIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAg
ICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTUyLDEz
ICs0MTAwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAg
ICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcHJv
dG90eXBlR1BSID0gcHJvdG90eXBlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAK
LSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwg
c2NyYXRjaDJHUFIpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAKICAgICAg
ICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzk2OCwxMiArNDEyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZihOb2RlKiBub2RlKQogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgIAorICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEpT
VmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKICAgICAK
QEAgLTM5ODksNyArNDE0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQ
Uiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNvbXBpbGVJbnN0
YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIs
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CiAgICAg
CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTEzMDE5LDQ2ICsxMzE3OCw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNW
YWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNt
YU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2Rl
KiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwor
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9k
ZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQ
dXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CkBAIC0xNDY5MCwxOCArMTQ4NjcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVj
bWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQog
ewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3Bp
bGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAg
ICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChz
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5z
ZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
dmFsdWVSZWdzLCBzdHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ3MTEsOSAr
MTQ4OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jl
c3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MmUxZThjZDUy
YTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYzLi4zYzlmNGQ1Y2Y3NjIzMmViODEzNzU0OGJi
YzU1NTM3ZDkzNDUwZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC03MTksMTYgKzcxOSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja0RldGFjaGVkKE5vZGUqKTsKIAotICAgIHZvaWQgY2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3Bp
bGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxs
KTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyBy
ZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlz
dCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAg
IHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFy
Z2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQg
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25l
LCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcg
dGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2
b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BS
UmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBK
SVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBM
aXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUqKTsKQEAg
LTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBnZW5lcmlj
SlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwog
ICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1Zh
bHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0
R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdz
IHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKQEAgLTk0OSw2ICs5NDksMjYg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVf
aWZfdDwKKyAgICAgICAgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwK
KyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24o
Vl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7
CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVy
LgpAQCAtOTg4LDYgKzEwMDgsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBy
ZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogCisgICAgdm9pZCBhcHBl
bmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHJl
cGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2lu
KG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIG1faml0LmFwcGVuZENh
bGwoYWRkcmVzcyk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kT3BlcmF0
aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAg
IHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTAxMCw2ICsxMDM3LDEz
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQog
CisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRy
ZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQu
bW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKKyAgICB9CisKICAgICBKSVRD
b21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBi
NTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li5jMWI1ZDA2MWMzYzVhNGE2
NTA2Y2I3YzYwZWUyOTY3ZmMyMTZhNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE2OCwxNSArMTY4LDE2IEBA
IGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdH
UFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NU
eXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
b3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5
cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5
bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZp
ZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdp
biwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVz
dWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0
LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgK
LSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJS
ZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXls
b2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlzIGEgaGFja3kgZml4IGZvciB3aGVuIHRo
ZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdp
dGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ug
b2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVs
eSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2Jh
Ymx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24u
CkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgK
ICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlk
ZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXls
b2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlw
ZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcsIHR5cGUpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIyOCwxNSArMjI5LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNU
YWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVn
IHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhU
YXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIAogICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7
CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBK
U1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdz
KHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBp
ZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpT
VmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZyk7CiAg
ICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjM0MSw4ICsy
MzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdz
LnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKIAogICAgICAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUo
U3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNT
dHJpbmcgPSB0cnVlOwpAQCAtMzQwNSw3ICszNDA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJl
c3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVz
dWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwg
SW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdp
dGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52
YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZh
bGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwg
bm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI1LDcgKzM0MjcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAg
ICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWUu
anNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlk
V2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAg
ICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFn
R1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggYjkxMThiNjJlODdkOTcwYWM1NDYxZjYzYmQzYzM4MGZiOGIwMTI2MC4uMzM2YjFh
OTVkMjQ2ZTcxOTRhNzc0MTAyNjUzYzMyOWQzNDM0ZjViMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNDcsMTIgKzE0Nywx
MiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmln
aW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxs
UmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0
ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmln
aW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQs
IG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1
bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwg
dHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2Vw
dGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkp
OwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICAv
LyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3Qg
bmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwg
ZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywg
dGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAg
ICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIs
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSks
CisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAg
IHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VH
UFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0
QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRX
aXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhp
c0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGls
ZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NS
RXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xODcsMjAgKzE5
NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUgogICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJh
c2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldCh0aGlzR1BSLCBmYWxzZSk7CiAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxzZSk7CisgICAgaWYgKHN0dWJJbmZv
R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZv
R1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUikpOworICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQUik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7
CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
c09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAg
ICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAg
CiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTI2ODEsMTYgKzI3
MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0KKyAgICAgICAgICAgIE9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJvcGVydHkpOwor
CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BS
ID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogCisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAxKSk7CisKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUg
PSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0
SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgICAgICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMjcwMCw4
ICsyNzI3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VH
UFIpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9w
ZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5p
c1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3Bl
cnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMjcxMiwxMSArMjczOSwxOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg0LDkgKzQwMTksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgICAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpAQCAtMzk5NCwx
NCArNDAzNiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwg
cmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRD
b21waWxlcjo6SnVtcExpc3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKQEAgLTQwMTMsNyArNDA2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRC
eUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIs
IHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90
Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2Rh
ZDhiZjM1Li4zYTYyMGY0NzI0ZmQyY2FiMjk4ZGQ1MzA4MTlmZjI0YTgzYWI4YzE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYg
KzM5NzgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBv
aW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1z
WzBdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdw
cigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJS
ZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAg
aWYgKCFiYXNlSXNDZWxsKQpAQCAtNDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQ
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CkBAIC00MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAw
OwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25I
YW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAg
LTQxMzAsMTAgKzQxNDUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJh
bmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwg
YWNjZXNzVHlwZSwKLSAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMg
KzQxNzUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChu
b3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0g
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nl
c3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1
bmN0aW9uKGFjY2Vzc1R5cGUpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNz
RnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xv
d1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBW
YWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEg
OiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBt
aWdodCB3YW50IHRvIGxhdGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1Mzgs
MTAgKzQ1NjcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBK
UyBzZXR0ZXIgY2FsbCBJQ3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0
aGlzLgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRp
b25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwg
SlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3Rl
ciwgZWNtYU1vZGUsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5n
cHIoKSksIHN0dWJJbmZvR1BSLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBl
Y21hTW9kZSwKICAgICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRo
RnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIElu
dmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5y
YXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5j
dGlvbigpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygp
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1Bh
dGhDYWxsKTsKQEAgLTUyMzksNiArNTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNo
cG9pbnQpOwogCkBAIC01MjU5LDEwICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAg
ICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1Yklu
Zm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50
MzI7CkBAIC01MjgwLDEzICs1MzI1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwg
cmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5r
VG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5
Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gMiA6IDE7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25I
YW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZv
ckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNb
MF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2Ny
YXRjaCgwKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlk
R1BSUmVnOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgw
KSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNo
KDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQog
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwo
YmFzZSkpOwpAQCAtNTg3NCw3ICs1OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBh
cmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQ
UiAhPSBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhw
YXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5v
cm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFt
cy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlW
YWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFt
cy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwg
SlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAg
ICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5m
b0dQUiwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAg
LTEyMjQyLDggKzEyMzE0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwor
ICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIz
MzIsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAor
ICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsK
KwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwx
MiArMTIzNDgsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRp
b25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3
Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwg
c2xvd1BhdGhDYWxsKTsKQEAgLTEyNDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsK
KyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5y
ZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgCkBAIC0xMjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIo
KTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2go
MCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRj
aCgxKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRH
UFJSZWc7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGRvbmVKdW1wOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEy
NTIzLDggKzEyNjEwLDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhq
aXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAot
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0
R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIsIHByb3Rv
dHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBh
dGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQu
bGFiZWwoKTsKQEAgLTEyNTM3LDEyICsxMjYyNCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0x
Mzk4Niw2ICsxNDA4NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRC
eUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5j
ZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxl
IHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91
Z2gsIHNpbmNlIHRoZQpAQCAtMTQwMTQsMTAgKzE0MTE0LDEyIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1z
LCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNo
KDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdw
cigpKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksIHN0dWJJbmZvR1BSLCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwMzAsMTIgKzE0MTMyLDI0IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1Bh
dGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpG
VExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3
Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBh
cmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0
cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNs
b3dQYXRoQ2FsbCk7CkBAIC0xNDA2MCw4ICsxNDE3NCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlzVmFsdWUpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC0xNDA4MywxMCArMTQxOTcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRl
SW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZh
bGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sw
XS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
LCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFz
dFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBq
aXQubGFiZWwoKTsKQEAgLTE0MDk5LDEyICsxNDIxNSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1z
WzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5n
cHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4IDJhZGQ0
OTRjNTMyYWFlYThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFlNzkyNmM2
YTA3MTgzNzMxNTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4OwogCiBTbG93
UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcg
cmV0dXJuUmVnaXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxw
ZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVn
IGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAgICwgbV9u
dW1BcmdzKG51bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lzdGVyKQpA
QCAtNjMsNiArNjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0
KAogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVudFJlZ2lz
dGVycyk7CiAgICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAg
IG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKyAgICBpZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RDYWxsVGFy
Z2V0UmVnaXN0ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmlsdGVyKHVz
ZWRSZWdpc3RlcnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxpbmdDb252
ZW50aW9uUmVnaXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxsQ29udGV4
dDo6flNsb3dQYXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxs
Q29udGV4dDo6a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxU
YXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNl
dCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAgIHJldHVy
biBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRS
ZWdpc3RlcnMsIG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2Fs
bENvbnRleHQ6OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgbnVsbHB0
ciwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsKIH0KIAog
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwyMiBAQCBT
bG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xvd1BhdGhD
YWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzIGNhbGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtleVdpdGhU
YXJnZXQoY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQYXRoQ2Fs
bChtX2ppdC5jYWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFkZExpbmtU
YXNrKAorICAgICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0K
KyAgICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCBy
ZXN1bHQua2V5KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0LmNhbGwo
KSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkpOworICAg
ICAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiB7CiAgICAgaWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlmM2ZhODBj
MTJhLi5kNmYyODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1NCwxNyBA
QCBjbGFzcyBTbG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhpbmd5IHRo
YXQgd2lsbCBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0cyBhbmQg
c3VjaC4KIGNsYXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNsb3dQYXRo
Q2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5z
aWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0aENhbGxD
b250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVk
IG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdl
dFJlZ2lzdGVyKTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8gTk9URTog
VGhlIGNhbGwgdGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBsaW5rZWQg
YnkgdGhlIEpJVCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlzIG5vIG5l
ZWQgZm9yIHlvdSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2Fs
bChWTSYsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7CisgICAgU2xv
d1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAogcHJpdmF0
ZToKICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRo
VGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVnaXN0ZXJT
ZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdDb252ZW50
aW9uUmVnaXN0ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlv
bigKIHsKICAgICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQYXRoQ2Fs
bENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5
cGVzKSArIDEsIHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4
dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3Vs
dEdQUiwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2b2lkKEFy
Z3VtZW50VHlwZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29udGV4dC5t
YWtlQ2FsbCh2bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAgU2xvd1Bh
dGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxs
T3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJn
ZXQsCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BS
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwgY2FsbDsK
KyAgICB7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJz
LCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDx2
b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAgICAgICAg
Y2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlv
blRhcmdldCkKKyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRFeGNlcHRp
b25DaGVjayh2bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZt
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBl
eGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJl
c3VsdEdQUiwKKyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoY2Fs
bFNpdGVJbmRleCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24o
dm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwgcmVzdWx0
R1BSLCBhcmd1bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JD
b2RlT3JpZ2luKFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0ZSYgc3Rh
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2Vw
dGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0
LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0ZUluZGV4
Rm9yQ29kZU9yaWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rp
b24sCisgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZjNjIwMzNh
ODM5MDhlNmZjYzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3MmJlZjU1
MTNlZmU1YWEzOWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lz
dGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2lu
dGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3Rl
cnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgiPHVzZWRS
ZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAi
LCBpbmRpcmVjdE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAi
LCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1l
bnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEzODQyYmRk
MzNkLi4wY2U2MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUxLDExICs1
MSwxMiBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtl
eSgKICAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBjYWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMs
Ci0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQsIGlu
dDMyX3QgaW5kaXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNldCkKICAg
ICAgICAgLCBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+
KCkpCiAgICAgICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVycykKICAg
ICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNldChpbmRp
cmVjdE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBAIGNsYXNz
IFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3QgUmVnaXN0
ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudFJlZ2lz
dGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIGludDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGlyZWN0
T2Zmc2V0OyB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0KEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJl
Z2lzdGVycygpLCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNl
ZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSwg
aW5kaXJlY3RPZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAg
ICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDogbV91c2Vk
UmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDAp
CiAgICAgewogICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZhbHVlVGFn
KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZhbHVlKQot
ICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4ICs5Mywy
MCBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdXNl
ZFJlZ2lzdGVycyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYmIG1fY2Fs
bFRhcmdldCA9PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09
IG90aGVyLm1fb2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZz
ZXQKKyAgICAgICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRpcmVjdE9m
ZnNldDsKICAgICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2Fs
bFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICByZXR1cm4g
bV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdl
dC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNldDsKICAg
ICB9CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lzdGVyU2V0
IG1fYXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAgIHB0cmRp
ZmZfdCBtX29mZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQgeyAwIH07
CiB9OwogCiBzdHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZhOTMzMTMzYzBiMzZj
ODY2MTNhZC4uZDkyMDJhM2Q0MTllNWNiMmE1OWUzMWZiZTg1YTRhZDUzYmU0OTQxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIpOwogICAg
IAogICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZm
ZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihz
Y3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjEpOworICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1
aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAK
ICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3Io
Vk0mIHZtLCBjb25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7
CiAgICAgfQogICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAs
IEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5v
bkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXkuYXJndW1l
bnRSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXkuYXJndW1l
bnRSZWdpc3RlcnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGRvbnRD
bG9iYmVyLnNldChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2JiZXJDaGVj
ayhqaXQsIFdURk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVyczo6Q2Fs
bCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6
OkNhbGwgY2FsbDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQuY2FsbChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwga2V5LmluZGlyZWN0T2Zmc2V0
KCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJz
OjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNl
dCgpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9y
ZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJu
R1BSKTsKQEAgLTIzMiw3ICsyMzksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgIGpp
dC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5r
KGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOworICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQorICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBh
dGggY2FsbCB0aHVuayBmb3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggMzU0Zjk1
NDdiNGFiZjMyODk2ZDFjZWI0ZWEyMDBmYmI0YTRkZWNjZC4uYmY4YTA4MDQwY2VjODdiNjRmNzdj
MzZhZWFkYmZlZDlkZTQwMjc0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAor
I2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgpAQCAtNjUyLDcgKzY1Myw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0VmlydHVhbENh
bGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgICAgIGF1
dG8gY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SklUQ29tcGls
YXRpb25QdHJUYWc+KGNhbGwpOwogICAgICAgICBsaW5rQnVmZmVyLmFkZE1haW5UaHJlYWRGaW5h
bGl6YXRpb25UYXNrKFs9LCAmdm1dICgpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9y
KHZtLCAqaW5mbyk7Ci0gICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1
YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgICAgICAgICBpbmZvLT5z
ZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZt
LCB7IH0pKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2Fs
bExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVh
bFRodW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcy
ZDg5ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4OTdlYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3LDcgKzIwNyw3
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogCiAgICAg
Ly8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBh
c3NlZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBleHRyYVBv
a2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBz
dGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBu
b25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24g
ewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIxOSw4IEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAg
ICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2ln
bmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAgIEFyZ0Nv
bGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCisgICAg
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVk
IGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+CisgICAg
ICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYg
b3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3Vy
Y2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25z
OwpAQCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2Vt
Ymx5SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3Nz
RGVzdGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVn
IGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBw
dXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2Vz
ICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1H
UFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9u
c1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwg
RlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhG
UFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsg
MSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0
KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10g
PSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291
cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0
aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3Vt
ZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1
bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsg
MSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAK
ICAgICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3Vt
ZW50OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3NzU291cmNl
c10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
IAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyAr
IDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRl
c3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJl
ZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9r
ZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRo
aXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFy
Z3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2Vz
XSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJn
KEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgq
dGhpcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0g
YXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJj
ZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQ
UkV4dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRy
YVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0
aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
ICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tl
KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYm
IENQVShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBw
dWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQg
Y3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UpCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2ln
bmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9u
QXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xhbmcgY2xh
aW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBz
dGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBB
cmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51
bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQ
UnMpOworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CiAgICAg
ICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIElHTk9S
RV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEsMTUgQEAgY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZv
ckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2ln
bmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1l
bnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQ
b2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9r
ZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50
RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1l
bnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5z
aWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
KQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZz
ZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0
ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1
bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZSk7CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAgLTM3Niw4
ICszODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRpb24gdGlt
ZSBleHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRl
bXBsYXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFs
bEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJl
Z1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2
b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5
cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IElu
Zm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMg
PSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSArNDAzLDMx
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNl
UmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2
YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwog
ICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNl
UmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5v
bkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
R1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVu
dFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJl
Z3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBB
cmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdz
KQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0LDggKzQz
NSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2Vs
c2UgLy8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBG
UFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hv
dWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2OSwyNSAr
NDgwLDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFy
Z3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4
dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9r
ZSgpLCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCiAK
ICAgICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0gICAgICAg
IGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAx
KTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2Ug
KyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdV
TUVOVF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJl
ZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNp
Z25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0Nv
dW50KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4u
Lik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVudHNBbGln
bmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBB
cmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0Fs
aWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFy
Z0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAg
ICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRH
UFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSArIDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAyKTsK
KyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsg
MSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZSArIDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9B
UkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQs
IEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIoKSk7CkBA
IC01NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJS
RU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJn
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMg
PSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBj
dXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIoKSk7CkBA
IC01NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlI
ZWxwZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFy
ZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lO
TElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZElt
bSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0
ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhh
cyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykK
ICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0
aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRp
b25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZlciBuZWVk
ZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdlIHdvdWxk
IG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNoIHNvdW5k
cwpAQCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2Vt
Ymx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUg
QXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZf
dDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFs
dWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2
YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0g
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQor
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFy
Z3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
IEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lm
X3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZh
bHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6
dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgot
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9p
Zl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFs
dWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19j
b252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+
PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjpp
c19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7
CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwg
Y2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWlu
ZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBB
TFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJS
RU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6Omlz
X3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdz
KQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAt
NjM5LDggKzY1MCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0aGUg
YXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51
bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJj
ZXMsIEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1Nv
dXJjZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2Vz
LCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVibGljOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdXNpbmcg
Rmlyc3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfc2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0
LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0Nh
bGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsK
KyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5
IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1
cCBmb3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMg
c2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQorICAgIH0K
IAotI2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9w
ZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxX
QVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9U
WVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQogICAgIHsK
LSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZv
ciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4K
LSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0Nh
bGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsK
LSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwg
MCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRz
RW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwg
MCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFs
dWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSBy
ZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAg
Zm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5
IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlv
blR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJn
KGZ1bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAgfQogCi0j
dW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29s
bGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVzcy5iYXNl
LCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9pZCBzZXR1
cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IGY3
YWEzMjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLjJiZjExZmQ2OTU5NjFhMTE3
M2YzMmI0Y2U5MjE2MmIwMDcyMTgzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAg
LTM5LDggKzQwLDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMpCiAgICAgOiBKSVRTdHViUm91dGluZShj
b2RlKQorICAgICwgbV92bSh2bSkKKyAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQogewogICAg
IHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0aGlzKTsKIH0KQEAgLTQ5LDYgKzUyLDkg
QEAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgeyB9CiAK
IHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIHsKKyAg
ICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQorICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1
YnMtPnJlbW92ZSh0aGlzKTsKKwogICAgIGlmIChtX2lzSmV0dGlzb25lZCkgewogICAgICAgICAv
LyBUaGlzIGNhc2UgaXMgbmVlZGVkIGZvciB3aGVuIHRoZSBzeXN0ZW0gc2h1dHMgZG93bi4gSXQg
bWF5IGJlIHRoYXQKICAgICAgICAgLy8gdGhlIEpJVCBzdHViIHJvdXRpbmUgc2V0IGdldHMgZGVs
ZXRlZCBiZWZvcmUgd2UgZ2V0IGFyb3VuZCB0byBkZWxldGluZwpAQCAtNzUsOSArODEsOSBAQCB2
b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6ZGVsZXRlRnJvbUdDKCkKIH0KIAogTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBW
TSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQ
dHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBjb25zdCBW
ZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3Mp
Ci0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pCisgICAgOiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpCiAgICAgLCBtX2NlbGxzKGNlbGxz
LnNpemUoKSkKICAgICAsIG1fY2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQog
ewpAQCAtMTA2LDkgKzExMiw5IEBAIHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6
bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRp
bmVXaXRoRXhjZXB0aW9uSGFuZGxlcigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0NlbGwqIG93bmVy
LCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxM
aW5rSW5mb3MsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYg
a2V5cywgIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMs
IEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRp
b25IYW5kbGVyQ2FsbFNpdGVJbmRleCkKLSAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKKyAgICA6
IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93
bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgLCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNl
cHRpb25IYW5kbGVyLT5jb2RlT3JpZ2lucygpKQpAQCAtMTMxLDcgKzEzNyw3IEBAIEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5l
V2l0aEV4Y2VwdGlvbkhhCiAjZW5kaWYKIH0KIAotdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVX
aXRoRXhjZXB0aW9uSGFuZGxlcjo6YWJvdXRUb0RpZSgpCit2b2lkIEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKFZNJikKIHsKICAgICBtX2NvZGVC
bG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoREZHX0pJVCkK
QEAgLTE1NCw2ICsxNjAsNyBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIAogUmVmPEpJVFN0dWJSb3V0aW5lPiBj
cmVhdGVKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAorICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4mJiBrZXlzLAogICAgIFZNJiB2bSwKICAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogICAg
IGJvb2wgbWFrZXNDYWxscywKQEAgLTE2NSwxOCArMTcyLDE4IEBAIFJlZjxKSVRTdHViUm91dGlu
ZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgaWYgKCFtYWtlc0NhbGxzKSB7CiAgICAgICAg
IC8vIEFsbG9jYXRpbmcgQ2FsbExpbmtJbmZvcyBtZWFucyB3ZSBzaG91bGQgaGF2ZSBjYWxscy4K
ICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRpbmUoY29kZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWFibGVKSVRTdHViUm91dGluZSh2bSwgY29kZSwgV1RGTW92ZShrZXlz
KSkpOwogICAgIH0KICAgICAKICAgICBpZiAoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMp
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkpKTsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29k
ZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9y
RXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUo
Y2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25I
YW5kbGVyQ2FsbFNpdGVJbmRleCkpOwogICAgIH0KIAogICAgIGlmIChjZWxscy5pc0VtcHR5KCkg
JiYgY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBHQ0F3YXJlSklUU3R1
YlJvdXRpbmU6OmNyZWF0ZShjb2RlLCB2bSk7CisgICAgICAgIHJldHVybiBHQ0F3YXJlSklUU3R1
YlJvdXRpbmU6OmNyZWF0ZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSk7CiAgICAgCi0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwg
b3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShr
ZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmgKaW5kZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFj
YTlmZC4uYjA0NmM4ZTc3OWFmMDUzOTA3OTIzNmI2NTBiNjAwYmY2NjNmMWYzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAK
K2NsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91
dGluZVNldDsKIApAQCAtNTQsMTIgKzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0Owog
Ly8gbGlzdCB3aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNz
IEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6
Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBG
aXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJv
dXRpbmUoKSBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0
ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2Rl
LCBWTSYgdm0pCisgICAgc3RhdGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwg
Rml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
LCBXVEZNb3ZlKGtleXMpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KQEAgLTY4LDYgKzY5LDggQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGlj
IEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKHZp
c2l0b3IpOwogICAgIH0KICAgICAKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorCiAgICAgdm9p
ZCBkZWxldGVGcm9tR0MoKTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTgxLDYgKzg0LDggQEAgY2xh
c3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIAogICAg
IGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSmV0dGlzb25l
ZCB7IGZhbHNlIH07CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vz
c0Nhc2U+PiBtX2tleXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9u
ZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3ICs5Myw3
IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7
CiBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRT
dHViUm91dGluZSB7CiBwdWJsaWM6CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgK
LSAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFn
PENhbGxMaW5rSW5mbz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENh
bGxMaW5rSW5mbz4mJik7CiAgICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVy
cmlkZTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTEwOSwxMCArMTE0LDEwIEBAIGNsYXNzIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtp
bmdHQ0F3YXJlSklUCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUg
QmFzZTsKIAotICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0lu
Zm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYs
IEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
KTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5h
bDsKIAotICAgIHZvaWQgYWJvdXRUb0RpZSgpIGZpbmFsOworICAgIHZvaWQgYWJvdXRUb0RpZShW
TSYpIGZpbmFsOwogICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIGZpbmFsOwogCiBwcml2
YXRlOgpAQCAtMTMyLDYgKzEzNyw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyBSZWY8
SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogLy8gICAgY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKIC8vICAgIFZNJiB2
bSwKKy8vICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLAogLy8gICAg
Y29uc3QgSlNDZWxsKiBvd25lciwKIC8vICAgIGJvb2wgbWFrZXNDYWxscywKIC8vICAgIC4uLik7
CkBAIC0xNDMsNyArMTQ5LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2Vw
dGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIHdheS4KIAog
UmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0Nl
bGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mJiBrZXlzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKICAg
ICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5m
b3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9z
YWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4
OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgwMDc3YjBjNGE1NWM3NzcyMjY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDYwLDYgKzQ2MCw3IEBAIGNs
YXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBv
biBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZS
ZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1
cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdU
MSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJl
dHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykK
QEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6eDY7IC8vIHJlZ1Q2CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0gQVJNNjRSZWdpc3RlcnM6Ong3
OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBBUk02
NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9u
QXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsgLy8gcmVnVDAK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBBUk02NFJlZ2lz
dGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDU1NTYzMDM3YWViNThmZWM5YjNmMDNmN2NmZWUxZmMwZGUzZWNlMjMuLjdm
YTA4ZWJmNmM4OGEzMzVmYjBhOTU5NTZjYjU0YThiNjg4MTNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTkyNCw2ICs5MjQsMTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAg
ICAgICAgICAgIGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhUYXJnZXQs
CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOworICAgICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgICAg
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBz
bG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJn
ZXQgPSBzbG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggNzVjOWNiOTZiMTM2NTMyZjA4NjFmMmYwYTgwNThlZmM2YjA1NmIyNC4uNDA5ZjQ5ZTI2ODg2
YTg0NTEzNzc0OGRjMDZhZWIxYjg0ZGI2YWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC0yOTQsNiArMjk0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uQ2FsbDsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbChBZGRyZXNz
IGZ1bmN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsKGZ1bmN0aW9uLCBPcGVyYXRp
b25QdHJUYWcpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQog
ICAgICAgICBDYWxsIGFwcGVuZENhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAgICAgIHsKQEAgLTM5NSwzOSAr
NDAwLDM5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBpbnQtY2hl
Y2tlZCBhbmQgemVybyBleHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuCiAgICAgICAgIC8v
IFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLiBSZXR1cm5zIHRoZSBzbG93IGNhc2VzLiBG
YWxsLXRocm91Z2gKICAgICAgICAgLy8gY2FzZSBjb250YWlucyByZXN1bHQgaW4gcmVnVDAsIGFu
ZCBpdCBpcyBub3QgeWV0IHByb2ZpbGVkLgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2Fk
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkg
eyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBJbnQzMlNo
YXBlKTsgfQotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGln
dW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRl
eGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7Ci0gICAgICAgIEp1bXBM
aXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0
IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKKyAg
ICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKSB7IHJldHVy
biBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbywgSW50
MzJTaGFwZSk7IH0KKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7Cisg
ICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUg
ZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRB
cnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOworICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFy
cmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOwogCiAgICAgICAgIC8vIFByb3BlcnR5IGlz
IGluIHJlZ1QxLCBiYXNlIGlzIGluIHJlZ1QwLiByZWdUMiBjb250YWlucyBpbmRlY2luZyB0eXBl
LgogICAgICAgICAvLyBUaGUgdmFsdWUgdG8gc3RvcmUgaXMgbm90IHlldCBsb2FkZWQuIFByb3Bl
cnR5IGlzIGludC1jaGVja2VkIGFuZAogICAgICAgICAvLyB6ZXJvLWV4dGVuZGVkLiBCYXNlIGlz
IGNlbGwgY2hlY2tlZC4gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuCiAgICAgICAgIC8v
IHJldHVybnMgdGhlIHNsb3cgY2FzZXMuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIEludDMyU2hhcGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRH
ZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8sIElu
dDMyU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAg
ICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChi
eXRlY29kZSwgYmFkVHlwZSwgRG91YmxlU2hhcGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRH
ZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8sIERv
dWJsZVNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAg
ICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVy
aWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAg
ICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1
bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUg
PSBDb250aWd1b3VzU2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1
dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAg
ICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFy
cmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsK
KyAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUpOwog
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBFQ01BTW9kZSBlY21hTW9k
ZShPcCk7CkBAIC04NzAsMTMgKzg3NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CisgICAgICAgIHZvaWQgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKTsKICNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4pOwogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVu
ZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHZvaWQgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNzLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGw+CkBAIC04ODYsNiArODk1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0Zv
ckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAg
ICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+CiAgICAgICAgIHN0cnVjdCBpczY0Qml0VHlwZSB7CkBAIC05MDYsNiAr
OTIzLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24p
OwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFy
Z3MuLi4pOworICAgICAgICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBj
YWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJpdHMuCisgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9w
ZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2Vsc2UgLy8gT1MoV0lORE9XUykgJiYg
Q1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlw
ZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgQXJncy4uLiBhcmdzKQpAQCAtOTEzLDYgKzk0MCwx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlv
blR5cGU+KGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY2FsbE9w
ZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQs
IGFyZ3MuLi4pOworICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRy
ZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2Vu
ZGlmIC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+
CkBAIC05MjMsNiArOTU3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUo
bWV0YWRhdGEsIG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZShNZXRhZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRz
Rm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRX
aXRoUHJvZmlsZShtZXRhZGF0YSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQu
b2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzLCBBcmdzLi4uIGFyZ3MpCiAgICAgICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDFiNDlkNDg5ZGFhMmI3ODZhYjc5MzkyZjlh
MzRlYmM2NDRjZGFiMTguLjM3NGJhMzBjN2Y3NjcxMzc5NDcwZTRkZDlkNGRhODM2NWRhMzYwZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMzk4LDggKzM5OCw4IEBA
IHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0
ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00MzIsOCArNDMyLDE1
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUo
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyYXRvckdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3
Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJv
ZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICBhdXRvIGRvbmUgPSBq
dW1wKCk7CiAKICAgICBub3RPYmplY3QubGluayh0aGlzKTsKQEAgLTQ4MCw4ICs0ODcsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKICAgICAgICAgUmVnaXN0ZXJTZXQgcHJlc2VydmVkUmVncyA9IFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKICAgICAgICAgcHJlc2VydmVkUmVncy5hZGQodmFs
dWVHUFIpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0
ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKLSAg
ICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1
bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRv
bmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVH
UFIpLCByZWdUMywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQ5OSw4ICs1MDYsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKICAgICAgICAgSnVtcExpc3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCks
IEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVn
VDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKTsKIAogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZh
bHVlLmltcGwoKSksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIp
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
cmVnVDQsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC01MjgsMTYgKzUzNSwyMyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93QwogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogICAgICAg
ICBKdW1wTGlzdCBub3RPYmplY3Q7CiAgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZO
b3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKLSAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJ
Zk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKICAgICAg
ICAgCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1
bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RP
YmplY3QoaXRlclJlc3VsdEdQUikpOwogCisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxl
PGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyUmVzdWx0
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlk
ZW50KS5yYXdCaXRzKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBjYWxs
T3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRz
KCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OworCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKICAg
ICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CiAg
ICAgICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwpAQCAtNTU2LDgg
KzU3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogCiAgICAgICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25X
aXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwotCisg
ICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1
ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZWNjNGU1ZjNmZjZkMDdmOTljMDc4
NGRkNGMxMmRlYmEwZTIxMGRjZi4uMTUyNTE0YWZkY2FjNzgyYWM5Yzg3NGU1NTBhZmZiOWM3Mjhi
ZWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAt
Mzk2LDEyICszOTYsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAg
ICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIENhbGxTaXRlSW5kZXgo
Qnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLAogICAg
ICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyYXRvckdQUiwgcGF5bG9hZEl0ZXJhdG9yR1BSKSwKICAg
ICAgICAgbmV4dFJlZ3MsCisgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgIEFjY2Vzc1R5
cGU6OkdldEJ5SWQpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAg
LTUwNSwxMiArNTA3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZChwYXls
b2FkVmFsdWVHUFIpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAg
ICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAg
ICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAg
ICAgICBwcmVzZXJ2ZWRSZWdzLAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgp
KSwKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVy
UmVzdWx0R1BSKSwKICAgICAgICAgICAgIGRvbmVSZWdzLAorICAgICAgICAgICAgSW52YWxpZEdQ
UlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CkBAIC01MzMsMTIgKzUzNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgSklU
VHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksCiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksCiAgICAgICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwKICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0
R1BSKSwKICAgICAgICAgICAgIHJlc3VsdFJlZ3MsCisgICAgICAgICAgICBJbnZhbGlkR1BSUmVn
LAogICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggNmZhNzI0NGVmMGEwOGM5ZjA0
N2EzMjIwNGY3MzdkMjkyODcxOTA2Zi4uODc3NzBiZjg0OGEzYWZhOWRkYmYwYjE4MjIzN2YxM2Nh
MGUyYmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTUyLDEzICs1Miwx
NSBAQCBjbGFzcyBUcmFja2VkUmVmZXJlbmNlczsKIGNsYXNzIFZNOwogCiBlbnVtIGNsYXNzIEpJ
VFR5cGUgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIEhvc3RDYWxsVGh1bmssCi0gICAgSW50
ZXJwcmV0ZXJUaHVuaywKLSAgICBCYXNlbGluZUpJVCwKLSAgICBERkdKSVQsCi0gICAgRlRMSklU
CisgICAgTm9uZSA9IDBiMDAwLAorICAgIEhvc3RDYWxsVGh1bmsgPSAwYjAwMSwKKyAgICBJbnRl
cnByZXRlclRodW5rID0gMGIwMTAsCisgICAgQmFzZWxpbmVKSVQgPSAwYjAxMSwKKyAgICBERkdK
SVQgPSAwYjEwMCwKKyAgICBGVExKSVQgPSAwYjEwMSwKIH07CitzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIHdpZHRoT2ZKSVRUeXBlID0gMzsKK3N0YXRpY19hc3NlcnQoV1RGOjpnZXRNU0JTZXRD
b25zdGV4cHIoc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxKSVRUeXBlPj4oSklU
VHlwZTo6RlRMSklUKSkgKyAxID09IHdpZHRoT2ZKSVRUeXBlKTsKIAogY2xhc3MgSklUQ29kZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7CiBwdWJsaWM6CkBAIC0xNTYs
NiArMTU4LDE1IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SklUQ29kZT4gewogICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBKSVRUeXBlOjpJbnRlcnByZXRl
clRodW5rIHx8IGppdFR5cGUgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAgICAgfQogCisgICAg
c3RhdGljIGJvb2wgdXNlU2hhcmVkSUMoSklUVHlwZSBqaXRUeXBlKQorICAgIHsKKyAgICAgICAg
aWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRp
bWl6aW5nSklUKCk7CisgICAgfQorCiAgICAgdmlydHVhbCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIGVudW0g
Y2xhc3MgU2hhcmVBdHRyaWJ1dGUgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggZjUyYzNjNzYy
MTVhYTMyNmRkZTlmODk4NTYyOThjM2RlNjQ2MjJjZS4uNTlhM2MzMWEwZDU0NDI5ZGI1MWFjNjE1
ZmY5NzFmMDg0NWEyMGE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTQzLDkgKzQzLDEwIEBAIHN0YXRpYyBT
dHJ1Y3R1cmVTdHViSW5mbyogZ2FyYmFnZVN0dWJJbmZvKCkKIH0KIAogSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRU
eXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSwKICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykK
ICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faml0VHlwZShqaXRUeXBlKQog
ewogICAgIG1fc3R1YkluZm8gPSBtX2NvZGVCbG9jayA/IG1fY29kZUJsb2NrLT5hZGRTdHViSW5m
byhhY2Nlc3NUeXBlLCBjb2RlT3JpZ2luKSA6IGdhcmJhZ2VTdHViSW5mbygpOwogICAgIG1fc3R1
YkluZm8tPmNhbGxTaXRlSW5kZXggPSBjYWxsU2l0ZTsKQEAgLTYwLDIwICs2MSwyMiBAQCB2b2lk
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKIAogICAgIG1fc3R1YkluZm8tPmRv
bmVMb2NhdGlvbiA9IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9kb25l
KTsKIAotICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9j
YXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CisgICAgaWYgKG1fc2xv
d1BhdGhDYWxsLm1fbGFiZWwuaXNTZXQoKSkKKyAgICAgICAgbV9zdHViSW5mby0+c2xvd1BhdGhD
YWxsTG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xv
d1BhdGhDYWxsKTsKICAgICBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBzbG93
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pOwog
fQogCiBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NU
eXBlLCB1c2VkUmVnaXN0ZXJzKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGpp
dFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlLAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BS
KQorICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BS
ID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSB2YWx1ZS5w
YXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJl
ZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIo
KTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwpAQCAtODMs
MTMgKzg2LDE1IEBAIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAKIHZvaWQg
SklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZm
ZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cisg
ICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwg
ZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZv
LT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIHZv
aWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBq
aXQsIHNpemVfdCBpbmxpbmVJQ1NpemUpCiB7CisgICAgLy8gV2UgZ2VuZXJhdGUgdGhlIHNhbWUg
Y29kZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgU2hhcmVkSUMgaXMgZW5hYmxlZCBiZWNhdXNlIHdl
IHN0aWxsIG5lZWQgdG8gdXNlIElubGluZUFjY2VzcworICAgIC8vIGZvciB0aGUgcGVyZm9ybWFu
Y2UgcmVhc29uLgogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKICAgICBzaXplX3Qgc3RhcnRT
aXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAgICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQuanVtcCgpOwpAQCAtMTAxLDkgKzEwNiw5IEBAIHZvaWQgSklUQnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxp
bmVJQ1NpCiB9CiAKIEpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCi0g
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2Fj
aGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9y
KGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3Rl
cnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5
cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1
YkluZm9HUFIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3Io
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICwgbV9pc0xlbmd0aEFj
Y2Vzcyhwcm9wZXJ0eU5hbWUudWlkKCkgPT0gY29kZUJsb2NrLT52bSgpLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aC5pbXBsKCkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkg
IT0gdmFsdWUudGFnR1BSKCkpOwpAQCAtMTE1LDkgKzEyMCw5IEBAIHZvaWQgSklUR2V0QnlJZEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdGhpc1JlZ3MpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lz
dGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0
VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3Ms
IEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlz
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQodGhpc1JlZ3MucGF5bG9hZEdQUigpICE9IHRoaXNSZWdzLnRhZ0dQUigpKTsKIApA
QCAtMTMzLDEwICsxMzgsMTAgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUUHV0QnlJZEdlbmVy
YXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENh
Y2hlYWJsZUlkZW50aWZpZXIsCisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFs
dWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIAogICAgIEVDTUFNb2RlIGVj
bWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3Rl
cnMsIGJhc2UsIHZhbHVlKQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0
ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21h
TW9kZSkKICAgICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3MSwxNCArMTc2LDE1
IEBAIFZfSklUT3BlcmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhG
dW5jdGlvbigpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5VmFsR2VuZXJhdG9y
OjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2Nr
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNl
ZFJlZ2lzdGVycykKK0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBC
YXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFz
Q29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigp
ICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNl
LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVy
dHkucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxv
YWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQu
dGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpA
QCAtMTkxLDI2ICsxOTcsMzUgQEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklURGVs
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsK
ICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0
Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7
CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZv
KSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0K
ICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFz
dFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVt
cC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRo
LCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAg
ICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9z
dHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQo
KSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0KIH0KIAot
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQotICAg
IDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6
OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxC
eUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9z
dHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICBBU1NFUlQoYmFzZS5w
YXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFz
ZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlH
UFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBh
eWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1
bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigp
OwpAQCAtMjIzLDIyICsyMzgsMzAgQEAgSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdl
bmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3IKIHZvaWQgSklU
RGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQog
ewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5w
YXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkp
IHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1Yklu
Zm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAg
fQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFz
dFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVt
cC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRo
LCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAg
ICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9z
dHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQo
KSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0KIH0KIAog
SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAg
IDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nl
c3NUeXBlOjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3Io
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4s
IHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAgICAvLyBGSVhN
RTogV2UgYXJlIG5vdCBzdXBwb3J0aW5nIGZhc3QgcGF0aCBmb3IgImxlbmd0aCIgcHJvcGVydHku
CiAgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5TmFtZSk7CkBAIC0yNTEsMTUgKzI3NCwxNSBAQCB2
b2lkIEpJVEluQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQogfQogCiBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAorICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90
b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBz
Y3JhdGNoMiwgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0KQotICAgIDogSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IoCi0gICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKKyAgICA6IEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0
dWJJbmZvLT5iYXNlR1BSID0gdmFsdWU7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1
bHQ7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm90b3R5cGVHUFIgPSBwcm90b3R5cGU7CisgICAg
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAg
bV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjc5LDIxICszMDIs
MjggQEAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKIAog
dm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJiBqaXQpCiB7Ci0gICAgbV9qdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwg
SklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fanVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQog
CiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQ
YXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwKLSAgICAgICAgZmFzdFBh
dGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9qdW1wKSk7Ci0gICAgCi0gICAg
ZmFzdFBhdGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5vUHRyVGFn
PihtX3Nsb3dQYXRoQmVnaW4pKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRU
eXBlKSkgeworICAgICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0
dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBh
dGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9qdW1wKSk7CisgICAgICAgIGZh
c3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgubG9jYXRpb25PZjxOb1B0clRhZz4o
bV9zbG93UGF0aEJlZ2luKSk7CisgICAgfQogfQogCi1KSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklU
R2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQotICAgIDogQmFzZShjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMp
CitKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBl
LCB1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3Jlc3VsdChyZXN1
bHQpCiB7CkBAIC0zMDIsNiArMzMyLDcgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBt
X3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHVi
SW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVU
YWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CkBAIC0zMTIsMjAgKzM0MywyOCBAQCBKSVRHZXRCeVZh
bEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
ZGVPcmlnaW4gY29kZQogdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAg
ICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsK
KyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJS
b3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQog
Ci12b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBm
YXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9y
OjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7
Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAg
ICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5
cGUpKSB7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsK
KyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFy
dExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkp
OworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKLUpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQp
Ci0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNz
VHlwZSwgdXNlZFJlZ2lzdGVycykKK0pJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBl
IGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZv
R1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5
cGUgPT0gQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nl
c3NUeXBlOjpTZXRQcml2YXRlQnJhbmQpOwogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRl
bnRpZmllciA9IGZhbHNlOwpAQCAtMzMzLDYgKzM3Miw3IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29k
ZUJsCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1f
c3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHVi
SW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1Yklu
Zm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYuYnJhbmRU
YWdHUFIgPSBicmFuZC50YWdHUFIoKTsKQEAgLTM0MywxNiArMzgzLDI0IEBAIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsCiB2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJh
dGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFi
ZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJ
bmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1Yklu
Zm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRo
SnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJl
bCgpOwogfQogCi12b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUo
Ci0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQ
YXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgp
KTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgQmFzZTo6ZmluYWxp
emUoZmFzdFBhdGgsIHNsb3dQYXRoLCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQ
dHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZh
c3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRh
Zz4obV9zdGFydCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXgg
ZDZjYTZlMTZhM2YzMmM2NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MS4uNWRiODBhNzM5NmQ4NTk5
ZWYzMjQ0MmQzNGZhYzYwYTY4ODU3Y2M4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNDEsMTIgKzQxLDEyIEBAIGNs
YXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFj
Y2Vzc1R5cGUgOiBpbnQ4X3Q7CitlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCiBjbGFz
cyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiBwcm90ZWN0ZWQ6CiAgICAgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IoKSB7IH0KLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
KENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKICAgICAKIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8oKSBjb25zdCB7IHJldHVybiBtX3N0dWJJbmZv
OyB9CkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAg
ICAKIHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEpJVFR5cGUg
bV9qaXRUeXBlOwogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIG1fZG9uZTsKQEAgLTc3LDEzICs3OCwxMyBAQCBjbGFzcyBKSVRC
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRC
eUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
dHViSW5mb0dQUik7CiAKIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0
aEp1bXAoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLmlzU2V0
KCkpOworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwogICAg
ICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXA7CiAgICAgfQogCkBAIC0xMDYsOCArMTA3LDggQEAg
Y2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUpOworICAgICAgICBD
b2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNj
ZXNzVHlwZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
Jik7CiAKQEAgLTEyMCw4ICsxMjEsOCBAQCBjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0gICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVn
cyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOworICAgICAg
ICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdz
LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJik7CiB9OwpAQCAtMTMzLDggKzEzNCw4IEBAIGNsYXNzIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgeyB9CiAKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUs
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAorICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1v
ZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYpOwogICAgIApAQCAtMTUxLDggKzE1Miw4IEBAIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVREZWxCeVZhbEdl
bmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0
eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9j
ayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBw
cm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0
CiAgICAgewpAQCAtMTc2LDggKzE3Nyw4IEBAIGNsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBw
dWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3Io
KSB7IH0KIAogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlw
ZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAg
LTIwMCw4ICsyMDEsOCBAQCBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJ
ZEdlbmVyYXRvciB7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5
SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAg
IENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsK
IAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKQEAgLTIx
MSw4ICsyMTIsOCBAQCBjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIDogcHVibGljIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKCkgeyB9CiAg
ICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEdQUlJlZyByZXN1bHQsCi0gICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwg
R1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCisgICAgICAgIENvZGVCbG9jayosIEpJ
VFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAorICAgICAgICBHUFJSZWcgdmFsdWUsIEdQUlJlZyBw
cm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2Ny
YXRjaDIsCiAgICAgICAgIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlKTsKICAg
ICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKQEAgLTIyOSw4
ICsyMzAsOCBAQCBjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvciB7CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yNTcsOCArMjU4LDggQEAgY2xh
c3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoKSB7IH0KIAog
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJy
YW5kKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9H
UFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IGU3OWNkMzZlZjU3
ZDdiZGNlY2UxNzY4ZDA1ODhhZmVlZDg4ODUwMTUuLjI4YTY0MzM3ZTJmMDhmNWYyMGFkYTczN2Ji
NzZiY2I0NzM2MjI4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBA
IC0zMywxNyArMzMsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAg
ICBjYXNlIEpJVEludDMyOgotICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5z
dHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0g
ICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUp
OworICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgcmV0dXJu
IGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAg
ICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwg
YnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0dXJuIGVt
aXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAg
IHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUs
IGJ5VmFsSW5mbyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI4
LDYgKzEyOCwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdAogICAgIHJldHVybiBjYWxsOwog
fQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KEFkZHJlc3MgZnVuY3Rpb24pCit7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgYXBw
ZW5kQ2FsbChmdW5jdGlvbik7CisgICAgZXhjZXB0aW9uQ2hlY2soKTsKK30KKwogI2lmIE9TKFdJ
TkRPV1MpICYmIENQVShYODZfNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShj
b25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogewpAQCAtMTU3LDYg
KzE2NCwxNiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQog
CitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
SlNWYWx1ZVJlc3VsdChBZGRyZXNzIGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQorewor
ICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsK
KyNlbHNlCisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQ
Uik7CisjZW5kaWYKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CiBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3Qp
CiB7CkBAIC0xNzEsNiArMTg4LDE5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAgcmV0
dXJuIGNhbGw7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRX
aXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxS
ZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlv
bik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFk
YXRhLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJl
dHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSwgSlNWYWx1ZVJlZ3MocmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUikpOworICAgIGVt
aXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9
CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcpCiB7
CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGJkNTVhM2QwNTE2ZDQ2YjY3YWU1OTdiNmMz
YTRmNTg3YjVmZGQ3MzAuLmY0ZTE4ZTI2ZDI4NTQ4ODYxY2FlMzJiNmZhZGE0M2UyYTE0YjUyNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTY0LDExICsx
NjQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MSwgcHJvdG8pOwogCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAog
ICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAg
ICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgcmVnVDUsCiAgICAgICAgIHJlZ1QzLCByZWdUNCk7
IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgbV9pbnN0
YW5jZU9mcy5hcHBlbmQoZ2VuKTsKQEAgLTE4Niw3ICsxODcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4gPSBtX2luc3RhbmNlT2Zz
W21faW5zdGFuY2VPZkluZGV4KytdOwogICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVnVDEpOworCisgICAgQ2FsbCBjYWxs
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluc3Rh
bmNlT2ZPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUo
b3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5v
bkFyZ0dQUjAsIHJlZ1QyLCByZWdUMSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDIsIHJlZ1QxKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwogfQogCkBAIC0xNzE5LDcgKzE3MjcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVI
YXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAog
ICAgIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBl
ZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9y
QXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlKTsKKyAgICBK
dW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rp
b24sIGFycmF5TW9kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgbW92ZShUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgSnVtcCBkb25l
ID0ganVtcCgpOwogCkBAIC0xNzM0LDggKzE3NDIsMTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHQKICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRh
ZywKICAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCBy
ZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFk
ZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRh
cmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgIH0gZWxz
ZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5
cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZv
LT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVy
aWMpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4
ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE3
NjksMTEgKzE3ODIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhl
ZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIAogICAgIC8vIEZJWE1F
OiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1l
bnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0
LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1p
dExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlLCBieVZh
bEluZm8pOwogICAgIAogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAg
CiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC0xNzk5LDcgKzE4MTMsMTQgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0g
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlE
ZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJ
bmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0
OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnlWYWxJbmZvKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUob3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgQnlWYWxJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOwogCiAgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93
UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4
XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAppbmRleCA4ZGIzNTllYmQ4Y2QwNTY2OTczYjg2M2M0ODY3NDFhN2Zh
ZTIyNDVlLi5jZjEyZGIyZGI4MzI3ZmZkMTI4MzQxNzFmNzc0OGM5YjFhOTUyOTdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNjIsMTEg
KzE2MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHBy
b3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAg
ICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAg
IHJlZ1QxLCAvLyBwcm90bworICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICByZWdUMywg
cmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCAyMWFmMzY1MzA5ZDI3OTMzNzFkZTZlYjQwMGI0NDY4YWE4
MzcwYjI1Li4wMjkyYjliOGM0ZWNlMjdhODE2NzUwMGEzNWQ0MTI1NjU0OWQ2MzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwMDIsNyArMTAw
MiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6
ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIGlmIChyZXN1bHQgPT0gT3B0aW1p
emF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0
aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAg
Y3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9j
ay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
dGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FE
RFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3Jp
cHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CkBAIC0xMDk0LDcgKzEwOTcsMTAg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlv
blJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXpl
LgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBh
dGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVT
UyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVj
dCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CkBAIC0x
Mjc4LDcgKzEyODQsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAob3B0aW1p
emF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8v
IERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5B
ZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2Vu
ZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2Vu
ZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yNTY3
LDcgKzI1NzYsMTEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlMKICAgICAgICAgaWYgKCsrYnlW
YWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVj
dHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBldmVyIHRy
eSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhS
ZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjQ0NjdlOWEyNWUxNDc3ZTFlYzA2MzVkNDA5NzU0ZDhlNzUz
OTJlZi4uYjQ5ZmFlNDNjMzBlN2I0OGFlOGY0NGY3NWE5M2RhNTM0OWI0ZWZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlIDx3dGYvU2Nv
cGVkTGFtYmRhLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5jbHVk
ZSAiUHJvYmVDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogI2lmIFVTRShKU1ZBTFVFNjQp
CkBAIC02OSwxMiArNzAsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlW
YWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZXN1bHRSZWdzKTsKKyAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0
UmVncywgcmVnVDIpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkp
KQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
ICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC05
MywxNCArOTcsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsK
KyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlW
YWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAog
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCBk
c3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHByb2ZpbGUsIHJlZ1QwLCByZWdUMSk7CiAjZWxzZQogICAgICAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKICAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMTgsNyArMTIzLDkg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBy
b2ZpbGUpLCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGNh
bGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogICAgICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzOCw3ICsxNDUsOCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGpp
dCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSNDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xNTcsOSArMTY1
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhp
cyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0g
ICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0
KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxz
ZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xODIsMTAgKzE5MSwx
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFs
dWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5h
bWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncywg
cmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5VmFscy5h
cHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTIwMSw4ICsyMTMsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwot
ICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0yMTEsNiArMjIy
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUs
IGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0yMjYsNyArMjM4LDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmUKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkp
LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldFBy
aXZhdGVOYW1lT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVy
blZhbHVlR1BSKTsKQEAgLTI0NSw3ICsyNTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwog
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAg
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAg
ICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0yNjMsOSArMjc4LDEwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25h
bWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
IAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3Rs
eSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRv
IHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF94eHhfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC0yODUsMTAgKzMwMSwxMyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlR1BSLCBiYXNlKTsK
IAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nh
c2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogCiAgICAgLy8g
V2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUgZW5kIG9mIHNlcXVlbmNlIHNpbmNl
IHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgpAQCAtMzAyLDggKzMyMSw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAgICArK21fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCkBAIC0zMTIsNiArMzMwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKICAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXpl
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCBiYXNlR1BSLCBicmFuZEdQUik7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0zMjgsOSArMzQ3LDEyIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFp
dHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRU
eXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZgorCiAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMzQ2LDEwICszNjgsMTMg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFk
ZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIH0K
IApAQCAtMzU3LDggKzM4Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4
XTsKLSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJy
YW5kQWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAK
ICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zNjcsNiArMzkxLDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGJyYW5kR1BSKTsKICNlbHNl
CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAt
MzgzLDcgKzQwOCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlw
ZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1
ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
T3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNDE1LDggKzQ0
MiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBiYXNlKTsKICAgICBQYXRjaGFibGVKdW1wIG5vdEluZGV4OwogICAgIGlmICghcHJvcGVydHlO
YW1lSXNJbnRlZ2VyQ29uc3RhbnQpIHsKLSAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxl
SnVtcElmTm90SW50KHJlZ1QxKTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Cisg
ICAgICAgICAgICBhdXRvIGlzSW50MzIgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICAgICAg
ICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFy
Z2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNJbnQzMi5saW5rKHRo
aXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hh
YmxlSnVtcElmTm90SW50KHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4
KTsKKyAgICAgICAgfQogICAgICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgog
ICAgICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQocmVnVDEsIHJlZ1QxKTsKICAgICB9CkBAIC00MzIs
MjMgKzQ2NSwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VB
cnJheU1vZGUocHJvZmlsZSk7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQz
MjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0g
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7
CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgot
ICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJh
eVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChi
eXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsK
ICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJl
bCgpOwpAQCAtNDU3LDcgKzQ5MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGlu
Z1NoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bywgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVl
ID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTQ2NSw3ICs0OTksMTYgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWQKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdT
aGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJl
Y3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFw
ZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9i
YWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlz
Q29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5k
ZXhpbmdTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworCiAg
ICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0
KCkpLCByZWdUMik7CiAgICAgSnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpOwpAQCAtNTE1LDcgKzU1OCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0Nv
bnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2
YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01MjMsNyArNTY2LDE2IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihB
cnJheVN0b3JhZ2VTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAg
YXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIo
QXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNz
KCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwg
VHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihB
cnJheVN0b3JhZ2VTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZl
Y3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCkBAIC01NjgsOCArNjIwLDggQEAgSklUUHV0QnlJZEdl
bmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2lu
ZCBwdXRLaW5kLAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1
ZSwgcmVnVDEpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9w
ZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEp
LCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0
S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3
cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2Vs
bC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxp
bmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTU4MCw3ICs2MzIsMTMgQEAg
SklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRl
Y29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OwogICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOwogCi0gICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHBy
b3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4o
QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0Jp
dHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7
CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICBk
b25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYxOSw2ICs2NzcsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oaXNEaXJlY3QgPyBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVn
VDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgpKSk7CiAj
ZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVy
YXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC02MzgsOCArNjk3LDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgp
KSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCi0gICAgYXV0byogb3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKLSAgICBDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUg
OiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC02NTcsNyArNzE3
LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
cHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwpAQCAtNjc1LDkgKzczNiwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKT4oZ2xvYmFs
T2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BSLCBl
Y21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8v
IEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUg
dGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGll
bnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhh
cmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRp
b25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOwpA
QCAtNjk2LDggKzc1OCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCi0gICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0
aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKLSAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7Cisg
ICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVz
cygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Cisg
ICAgICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICB9CiAgICAgCiAgICAgTGFiZWwg
ZG9uZSA9IGxhYmVsKCk7CiAgICAgCkBAIC03MjQsNiArNzkxLDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm8sIFRydXN0ZWRJbW0z
MihwdXRLaW5kLnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0
ZWNvZGVJbmRleCk7CiAKQEAgLTc0Myw3ICs4MTEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZQogICAgIG1vdmUoVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXpl
KTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTc2MSw3ICs4MzEsOCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
SklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC03Nzks
OSArODUwLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIHB1dEtp
bmRHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhN
RTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdl
dCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRv
IGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsIik7CkBAIC04NDYsMTEgKzkxOCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDEsIGJhc2UpOwogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdU
Mik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdU
MywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5SWRz
LmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDAp
KTsKQEAgLTg4MSw2ICs5NTYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdU
MCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
Lm1fZWNtYU1vZGUudmFsdWUoKSkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CiAKQEAgLTg5OCwxNSArOTc0LDE2IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgp
KSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVn
VDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDAp
KTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQog
CiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC05MTgsNyArOTk1LDggQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJ
VCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtOTM1LDkg
KzEwMTMsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1h
a2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGlu
c3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAg
IGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsK
KyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1
bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtOTU2LDEw
ICsxMDM1LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3Bl
cnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBwcm9w
ZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZGVsQnlW
YWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVn
VDApKTsKQEAgLTk5MSw2ICsxMDczLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IHJlZ1QwLCByZWdUMSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkp
OwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VS
VChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBA
IC0xMDA4LDE1ICsxMDkxLDE2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBD
YWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2Vy
dChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OwotCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCkBAIC0xMDI4LDcgKzExMTIsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2Vu
ZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAK
LSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkgKzExMzAsMTAgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5
X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBh
IHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAg
Ly8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQor
ICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xMDY4LDggKzExNTQsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3Ms
IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1
bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAg
ICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEwOTQsNiArMTE4MCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBn
ZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGlt
aXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogCkBAIC0xMTEwLDcgKzExOTcsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdl
dEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1
ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAg
IENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRP
cHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsx
MjIyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTYwLDYgKzEy
NDksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXpl
LCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7
CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApA
QCAtMTE3Niw3ICsxMjY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEyOTksOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNj
ZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3Ms
IHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwpAQCAtMTIzMyw4ICsxMzI1LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAg
ICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNX
aXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTEyNjAsNiArMTM1Miw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFk
YXRhLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMjc1LDcgKzEzNjgsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7
CkBAIC0xMjk0LDcgKzEzODksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzExLDkgKzE0MDcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhN
RTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdl
dCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRv
IGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
Iik7CkBAIC0xMzM3LDYgKzE0MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
X3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0
QnlJZFdpdGhUaGlzT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSwgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMzU0LDcgKzE0NTIsOSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzNzMsNyArMTQ3Myw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEz
OTIsOSArMTQ5MywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNp
ZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0
aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0
LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNh
bGwiKTsKQEAgLTE0MTgsMTEgKzE1MjAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCByZWdUMiwgZWNtYU1v
ZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5k
OjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC0xNDQ4LDYgKzE1NDksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDEsIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTQ2NSw3ICsxNTY3LDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTE0ODEs
NyArMTU4NSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKQEAgLTE1MDAsOSArMTYwNSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwog
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwg
cHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAv
LyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhl
IHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xp
ZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsIik7CkBAIC0xNTIxLDggKzE2MjcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAgICAgSklUSW5CeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2lu
QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNTQ2LDYgKzE2NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsbwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAg
LTE1NjQsNyArMTY3MSw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNs
dHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCBy
ZXR1cm5WYWx1ZUdQUik7CkBAIC0yNzU0LDggKzI4NjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QzLCByZWdUMik7CiAKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEs
IGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BSUmVnLCByZWdUMSwgZWNt
YU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yNzY1LDcgKzI4NzQsMTMg
QEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIC8vIEpJVFB1dEJ5SWRHZW5lcmF0b3Igb25s
eSBwcmVzZXJ2ZSB0aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2UgaGF2ZSB0byBy
ZWxvYWQgdGhlIHRhZy4KICAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7CiAKLSAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwor
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlv
bigpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1Yklu
Zm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0
eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0
aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHBy
b3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yODE3
LDI5ICsyOTMyLDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAgICBzd2l0Y2ggKGFy
cmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJ
bnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJs
ZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91
c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIG5l
ZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBuZWVk
c0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5cGVGb3JKSVRBcnJh
eU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQotICAgICAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwg
dHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5
IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50
NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAgQVNTRVJUKGlzRmxv
YXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRBcnJheVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwg
dHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg2Niw4ICsyOTgx
LDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywg
cGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAgICAgIkJhc2VsaW5l
IHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJp
bmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsK
ICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlw
ZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1f
YmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFs
SW5mby0+bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0
aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2Fs
bChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMg
OiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBUaGlzIGZ1bmN0aW9u
IGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVuaXQgKEpJVE9wZXJh
dGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0ZWQgc3BlY2lhbGl6
YXRpb25zIGluIGFkdmFuY2UuCkBAIC0yOTA2LDggKzMwMjcsMTMgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8s
IFJldHVybkEKICAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0aCBjYWNoZWQg
cHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBwcm9wZXJ0
eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1Yklu
Zm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRy
VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVO
YW1lR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0
aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAgIH0KIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0yOTQ0LDE1ICszMDcwLDIwIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzCiAgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNo
ZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0
S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51
aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1
cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9IGdl
bi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
YnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3Qg
PyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVy
aWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gcHV0S2lu
ZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBv
cGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0
aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJu
QWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihC
eVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
KTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RG91Ymxl
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNl
ID0gcmVnVDA7CkBAIC0yOTY4LDcgKzMwOTksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRE
b3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIAog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
aWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNo
MzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICAgICAg
ICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJn
ZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxp
bmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7
CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworCiAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVz
cyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9h
ZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCBmcFJlZ1Qw
KTsKQEAgLTI5NzcsNyArMzExNyw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJu
IHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBl
eHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk5NSw3ICszMTM1LDE2IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0
byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBU
cnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBl
ID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhw
ZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJbmRleChzY3JhdGNoLCBw
cm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDA0LDcgKzMxNTMsNyBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVt
cExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9
IHJlZ1QwOwpAQCAtMzAyMyw3ICszMTcyLDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJy
YXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJheVN0
b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7Cisg
ICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihCZWxvd09yRXF1YWwsIHNj
cmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3Jh
Z2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5m
by0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAg
ICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0z
MihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0g
ZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gs
IFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFw
ZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0
aE9mZnNldCgpKSkpOwpAQCAtMzAzNSw3ICszMTkzLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
VHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMDYwLDcgKzMyMTgsMTcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAg
bG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlT
Y3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBi
cmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJy
YXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlW
YWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
ICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNo
LCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3Jh
dGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBs
b2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9w
ZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVj
aWFsQ2FzZShwcm9maWxlKTsKQEAgLTMxMTEsNyArMzI3OSw3IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMxMzYsNyArMzMwNCwx
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAg
ICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0
VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9y
VHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRy
ZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJs
eVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBl
YXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsK
KwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVs
b3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJv
dW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIyYzc3MDQyODlhYmIwODJm
OWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMjZmNjdjN2JjYzA5MmJkMmY1OWIzNGVkNWQ3YzZiOGEw
MGQ5NzM4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsK
ICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBi
YXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVn
cywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZGVsQnlJZHMu
YXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpKTsKIAog
ICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdz
LCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTI1Nyw4ICsyNTcsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJl
Z3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CkBAIC0zOTMsOCAr
MzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQ
cml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRS
ZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFj
Y2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BS
KCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVncywgYnJhbmRS
ZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsK
QEAgLTY2MCw4ICs2NjAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0
QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdz
LCBJbnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzAxLDggKzcwMSw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vz
c1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBw
ZW5kKGdlbik7CkBAIC03NDgsOCArNzQ4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6
R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRS
ZWdzLCBJbnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzkxLDggKzc5MSw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDQsIHJlZ1QzKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9n
ZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChnZW4pOwpAQCAtODM1LDkgKzgzNSw5IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAorICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLCBJbnZhbGlkR1BSUmVnLAogICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5l
Y21hTW9kZSgpLCBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3Qp
OwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTg4Miw4ICs4ODIs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdU
MSk7CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YlJvdXRpbmUuaAppbmRleCA4ODE0NjQwZTZhY2NlYWMxYjliMDY4YTQwYzg5
NDI4MzQ4NmNkZmFiLi40OWE2ZDUwNjdlMjNkMjU0YWI0ZjBjMzU2OTgwNzZkYTlhMDc1MDg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCkBAIC0zNSw2ICsz
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBW
TTsKIAorY2xhc3MgQWNjZXNzQ2FzZTsKKwogLy8gVGhpcyBpcyBhIGJhc2UtY2xhc3MgZm9yIEpJ
VCBzdHViIHJvdXRpbmVzLCBhbmQgYWxzbyB0aGUgY2xhc3MgeW91IHdhbnQKIC8vIHRvIGluc3Rh
bnRpYXRlIGRpcmVjdGx5IGlmIHlvdSBoYXZlIGEgcm91dGluZSB0aGF0IGRvZXMgbm90IG5lZWQg
YW55CiAvLyBoZWxwIGZyb20gdGhlIEdDLiBJZiBpbiBkb3VidCwgdXNlIG9uZSBvZiB0aGUgb3Ro
ZXIgc3R1YiByb3V0aW5lcy4gQnV0CkBAIC01Niw3ICs1OCw3IEBAIGNsYXNzIEpJVFN0dWJSb3V0
aW5lIHsKICAgICB9CiAgICAgCiAgICAgdmlydHVhbCB+SklUU3R1YlJvdXRpbmUoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJvdXRUb0RpZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYm91dFRvRGll
KFZNJikgeyB9CiAgICAgCiAgICAgLy8gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGlzIGNvcHlhYmxl
LCBidXQgYXQgdGhlIGNvc3Qgb2YgcmVmZXJlbmNlCiAgICAgLy8gY291bnRpbmcgY2h1cm4uIFJl
dHVybmluZyBhIHJlZmVyZW5jZSBpcyBhIGdvb2Qgd2F5IG9mIHJlZHVjaW5nCkBAIC05OCw2ICsx
MDAsOCBAQCBjbGFzcyBKSVRTdHViUm91dGluZSB7CiAgICAgLy8gZGVzdHJveWVkLgogICAgIHZp
cnR1YWwgYm9vbCB2aXNpdFdlYWsoVk0mKTsKIAorICAgIHZpcnR1YWwgY29uc3QgRml4ZWRWZWN0
b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
KwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2ODYyNzNkZGE4MWNiYjZkMDFjZDIxZGQwOTg5Y2M2
ZTJiOC4uNDQ3MDU1YmZlOGFiZWZhYTU2ZmU3OGU4MDY4ZDJjYzY2ODkzMjNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRl
ICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENvZGVPcmlnaW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAg
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAog
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNv
ZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFt
ZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxD
YXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKLSAg
ICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSkKKyAgICA6IEdDQXdhcmVKSVRT
dHViUm91dGluZShjb2RlUmVmLCB2bSwgeyB9KQogICAgICwgbV92YXJpYW50cyhjYXNlcy5zaXpl
KCkpCiAgICAgLCBtX2Zhc3RDb3VudHMoV1RGTW92ZShmYXN0Q291bnRzKSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDM1OTNjY2U4ODYwODgwMTgzNDZhODA4ZTVm
ODY0Nzg3MWE0NDFiMjkuLjAxZDkyYzFiOGYyY2NkNWNlNDA4NDI0MTNjZTQyNmVhNDNmZTZhYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzEsOCArNzEsMTAgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNh
bGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCkKK3N0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBj
YWxsKQogeworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJldHVy
biBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFnPigpOwog
I2lmIEVOQUJMRShGVExfSklUKQogICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRU
eXBlOjpGVExKSVQpIHsKICAgICAgICAgRnVuY3Rpb25QdHI8SklUVGh1bmtQdHJUYWc+IHRhcmdl
dCA9IE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldDxKSVRUaHVua1B0clRhZz4oY2FsbCk7
CkBAIC0xMDUsNiArMTA3LDE1IEBAIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQCiAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFnZ2VkPE9w
ZXJhdGlvblB0clRhZz4oKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkNh
bGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBu
ZXdDYWxsZWVGdW5jdGlvbikKK3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7
CisgICAgICAgIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlvbiA9IG5ld0NhbGxlZUZ1bmN0aW9uLnJl
dGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBjYWxsLCBuZXdDYWxsZWVGdW5jdGlv
bik7Cit9CisKIGVudW0gSW5saW5lQ2FjaGVBY3Rpb24gewogICAgIEdpdmVVcE9uQ2FjaGUsCiAg
ICAgUmV0cnlDYWNoZUxhdGVyLApAQCAtMjA5LDcgKzIyMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayoKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKICAg
ICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5h
bWUgfHwga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDsKIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgpIHsKICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZUNlbGwpKSB7CkBA
IC0yMTksNyArMjMwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0Qnko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVB
cnJheUxlbmd0aChzdHViSW5mbywganNDYXN0PEpTQXJyYXkqPihiYXNlQ2VsbCkpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2lu
ZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemlu
Z0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8u
aW5pdEFycmF5TGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOCwx
MSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0g
QWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3Ro
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VD
ZWxsKSkgewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNo
ZVR5cGU6OlVuc2V0ICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1
YkluZm8pKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENh
Y2hlVHlwZTo6VW5zZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0Nh
Y2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9v
bCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0
aChzdHViSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5l
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mby5pbml0U3RyaW5nTGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAg
ICB9CkBAIC0yODIsMTIgKzI5NCwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAg
ICAgICAgICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCiAgICAgICAgICAgICAgICAgJiYgIXN0
cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAgICAgICAgICAgICAg
JiYgIWxvYWRUYXJnZXRGcm9tUHJveHkpIHsKLQogICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJh
dGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlBY2Nlc3Mo
c3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpHZXRCeVNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09
IGJhc2VWYWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hp
bmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1p
emluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5p
bml0R2V0QnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5
Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC00MjUsNyArNDM2LDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxh
Y2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFs
dWUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhj
b2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzksNyArNDUwLDcg
QEAgdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmEKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlR2V0QnkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywg
a2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2V0
QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rp
b24oa2luZCkpOwogfQogCiAKQEAgLTUyOSw3ICs1NDAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwg
YmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXIoKSkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2Rl
KGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU0MCw3ICs1NTEs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAg
ICAgaWYgKHRyeUNhY2hlQXJyYXlHZXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZSwgaW5kZXgsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5
VmFsR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRG
dW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4g
ZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCkBAIC02MzYsNyArNjQ3LDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtp
bmQgPT0gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gUHV0S2lu
ZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwor
ICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5i
YXNlKCkgPT0gYmFzZVZhbHVlICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKSkgewogICAgICAgICAg
ICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkg
ewpAQCAtNjU4LDcgKzY2OSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1
dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJh
dGVTZWxmUHJvcGVydHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2VsZlBh
dGNoLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFz
ZVZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVP
cHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xv
dCwgcHV0S2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5
SWRSZXBsYWNlKGxvY2tlciwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zm
c2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0
cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC04MDEsNyArODEyLDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTgxNSw3ICs4MjYsNyBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlD
YWNoZVB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xkU3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNh
Y2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9u
KHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5
SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVl
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kLCBFQ01BTW9kZSBlY21h
TW9kZSkKQEAgLTg0Niw3ICs4NTcsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAg
ICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgIHJldHVybiBS
ZXRyeUNhY2hlTGF0ZXI7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5l
d0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlm
IChzbG90LmlzRGVsZXRlSGl0KCkpIHsKICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09m
ZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC04NzQsNyArODg1LDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2MKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKICAgICAgICAgICAgIExPR19J
QygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKLSAgICAg
ICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVD
b2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg5MSw5ICs5
MDIsOSBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAgIGlmICh0cnlDYWNoZURlbGV0ZUJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09IEdpdmVVcE9uQ2FjaGUp
IHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFz
ZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlmIChraW5kID09IERl
bEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJp
Yyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVC
eVZhbEdlbmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYyk7CiAgICAgfQogfQogCkBAIC05MzcsNyArOTQ4LDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2Rl
SW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5CeUlkU2Vs
ZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09
IGJhc2UpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJv
cGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgICAgICAg
ICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0
dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTk4NCw3
ICs5OTUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAKICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorICAg
ICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAg
ICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nl
c3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQgPyBzbG90LmNhY2hlZE9mZnNl
dCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nl
c3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3Qo
KSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKQEAgLTk5Myw3ICsxMDA0LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTAwNyw3ICsxMDE4LDcgQEAgdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCoK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBp
ZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHBy
b3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICAgICAgcmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkluQnlJZCk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNr
UHJpdmF0ZUJyYW5kKApAQCAtMTAzMiw3ICsxMDQzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVy
dHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kQWRk
QWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5
KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nl
c3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBz
dHJ1Y3R1cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVy
ZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1v
dmUobmV3Q2FzZSkpOwogCkBAIC0xMDQwLDcgKzEwNTEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNF
dmVudDo6Q2hlY2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTEwNTQsNyArMTA2NSw3IEBAIHZvaWQgcmVwYXRjaENoZWNrUHJp
dmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAg
ICAgaWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAgICAg
cmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKQEAgLTEwOTEsNyArMTEw
Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgK
ICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAgIExPR19JQygoSUNF
dmVudDo6U2V0UHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgb2xkU3RydWN0dXJlLT5jbGFzc0lu
Zm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQo
dm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAg
ICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZh
dGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVy
ZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1v
dmUobmV3Q2FzZSkpOwogCkBAIC0xMDk5LDcgKzExMTAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OlNldFByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0lu
Zm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTExMyw3ICsxMTI0LDcgQEAgdm9pZCByZXBh
dGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLAogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKIAogICAgIGlmICh0cnlDYWNoZVNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCAgYnJhbmRJRCwgc3R1YkluZm8pID09
IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVy
aWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApA
QCAtMTEzMyw3ICsxMTQ0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5z
dGFuY2VPZigKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFz
Q2VsbCgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUo
dm0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAg
ICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKICAgICAg
ICAgaWYgKHByb3RvdHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEpTT2Jq
ZWN0Kj4odm0sIHZhbHVlKSkgewpAQCAtMTE2OCw5ICsxMTc5LDEzIEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVt
cCgpLAotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFy
ZWRJQygpKQorICAgICAgICAgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHJlc3VsdC5jb2Rl
KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaEp1bXAoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAo
KSwKKyAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ICAgICAKQEAgLTExODUsNyArMTIwMCw3IEBAIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoCiB7CiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICh0
cnlDYWNoZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHBy
b3RvdHlwZVZhbHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CisgICAgICAgIHJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpbmtTbG93
UGF0aFRvKFZNJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZVJlZikKQEAgLTEyMDIsNyArMTIxNyw3IEBA
IHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0lu
Zm8pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2
aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlu
a1Nsb3dQYXRoVG8odm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlu
a0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRo
dW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKIH0KIAogc3RhdGljIEpTQ2Vs
bCogd2ViQXNzZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKQEAgLTEzMjAsNyArMTMzNSw3IEBA
IHN0YXRpYyB2b2lkIGxpbmtWaXJ0dWFsRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2Fs
bExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVu
ayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6
Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIo
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiAg
ICAgY2FsbExpbmtJbmZvLnNldENsZWFyZWRCeVZpcnR1YWwoKTsKIH0KIApAQCAtMTY0MSwxNCAr
MTY1NiwyNiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogCiB2b2lkIHJlc2V0R2V0QnkoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0QnlLaW5k
IGtpbmQpCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rp
b24oa2luZCkpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVP
cHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAg
Y2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6VHJ5OgorICAgIGNh
c2UgR2V0QnlLaW5kOjpXaXRoVGhpczoKKyAgICBjYXNlIEdldEJ5S2luZDo6RGlyZWN0OgorICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1
YkluZm8pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6
CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgIGNhc2UgR2V0QnlLaW5kOjpQ
cml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5B
Y2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KIH0KIAogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICB1c2luZyBGdW5jdGlvblR5cGUg
PSBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTsKLSAgICBG
dW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rp
b25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIEZ1bmN0aW9uVHlwZSB1bm9w
dGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJ
Q0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIEZ1bmN0aW9uVHlwZSBvcHRpbWl6ZWRG
dW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9w
dGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRTdHJp
Y3RPcHRpbWl6ZTsKQEAgLTE2NjUsNDUgKzE2OTIsNDggQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAg
b3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1p
emU7CiAgICAgfQogCi0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKLSAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVB
Y2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQog
CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5k
OjpOb3JtYWwpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUp
OworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbHNl
Ci0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRo
U3RhcnRMb2NhdGlvbik7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXNldFBh
dGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQorc3RhdGljIHZvaWQgcmVz
ZXRQYXRjaGFibGVKdW1wKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBh
dGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgZWxzZQorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1
YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCi12b2lkIHJlc2V0SW5z
dGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5zdGFuY2VP
ZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewot
ICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5mbyk7CisgICAgcmVzZXRQYXRjaGFibGVKdW1w
KGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0
YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGlt
aXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0U2V0UHJpdmF0
ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNp
bmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oCmluZGV4IDMxMzc5ZGM0ZTVhOWRjMmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1MWEu
LjNhMTlmZDM2NTQ5ZDFhODQ4MDlmOTRkYWRhMmRmYmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJ
RChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQo
Q29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0
cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChD
b2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGQ5NDk3ZWJkNGYwYmE2ZjYyNTc5ZGNk
NTQyM2E3Yjk4NDdlOTQ0ZTIuLjdlMGU1OTMyNzQ1YjhhYWVkYjk5MGQ5OGRhNjYyNzc4NDM1Y2Uy
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAt
NTM2LDYgKzUzNiw4IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwog
ICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KEJvb2wsIHVzZVRvcExldmVsQXdhaXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRo
ZSBhd2FpdCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYo
Qm9vbCwgdmVyYm9zZUV4ZWN1dGFibGVQb29sQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVs
bHB0cikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUMsIGlzQVJNNjQoKSwgTm9ybWFsLCBudWxs
cHRyKSBcCisgICAgdihCb29sLCB1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDYwZjk4ZjU2M2E3NmVkZWRhNTJhMDcyODgzZTRi
YWZlYmQ3MmRlZTUuLjljNTRjYjQ0ODZlNmU0NmE0YTRmODE0NmM3MDIwMGFlNTAwYjk4Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWTS5oIgogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5o
IgogI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2lu
Y2x1ZGUgIkJpZ0ludE9iamVjdC5oIgpAQCAtNTY2LDYgKzU2Nyw3IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBz
dWNjZXNzKQogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgICAgICBnZXRDVElJbnRlcm5h
bEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7CiAgICAgICAgIGdldENUSUludGVy
bmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBtX3No
YXJlZEpJVFN0dWJzID0gbWFrZVVuaXF1ZTxTaGFyZWRKSVRTdHViU2V0PigpOwogICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoSklUKQogCkBAIC02NDksNiArNjUxLDggQEAgVk06On5WTSgpCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyAg
ICBtX3NoYXJlZEpJVFN0dWJzID0gbnVsbHB0cjsKIH0KIAogdm9pZCBWTTo6cHJpbWl0aXZlR2ln
YWNhZ2VEaXNhYmxlZENhbGxiYWNrKHZvaWQqIGFyZ3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggMmQzY2Q0NjY4ODhiY2UzYWZiNWE4ODkzNjE3Mjc1OGYxOGM5M2ZhNi4u
NGRlOTVmNjM4YjFlMjM4NTlhMWIzNGU5MTdkYzkzYWEyZjlmMzVjOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC0xNzQsNiArMTc0LDcgQEAgY2xhc3MgUmVnaXN0ZXJBdE9mZnNl
dExpc3Q7CiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwogI2VuZGlmCiBjbGFzcyBTaGFkb3dDaGlj
a2VuOworY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBj
bGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CkBAIC04NDEs
MTEgKzg0MiwxMyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4s
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2lmIEVOQUJMRShKSVQpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEpJVFRodW5rcz4gaml0U3R1YnM7CiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRDVElTdHViKFRodW5rR2VuZXJhdG9yKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcmVkSklUU3R1YlNldD4gbV9zaGFyZWRKSVRTdHViczsKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYKKwogICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9z
dEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0
cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
</data>
<flag name="commit-queue"
          id="451263"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429963</attachid>
            <date>2021-05-27 17:29:56 -0700</date>
            <delta_ts>2021-05-27 18:45:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527172955.patch</filename>
            <type>text/plain</type>
            <size>422674</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi4zNjMyOWRjNmZhNDc1OTYx
YWQwNWQ1YTRlZGY3ZjFiY2RjNmViYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNTMgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6b2Zm
c2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNl
dE9mQmFkVHlwZUp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVzZXRKSVREYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OmdldFNjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAg
KEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAo
SlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpT
Qzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29k
ZSk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNj
ZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0
ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQpOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxs
V2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRk
Q2FzZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSk6CisgICAg
ICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNj
ZXNzR2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToK
KyAgICAgICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxl
QWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9j
YXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhJQ0NhbGwpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVz
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjph
cHBlbmRDYWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHJpdmF0ZUJyYW5k
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0
QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxC
eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VP
Zik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAg
ICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQpOgorICAgICAgICAoSlNDOjpGVEw6
OlNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQgY29uc3QpOgorICAgICAgICAoSlND
OjpGVEw6OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBmdGwvRlRM
U2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlvbik6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xv
d1BhdGhDYWxsS2V5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxs
S2V5Lmg6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpTbG93UGF0aENhbGxL
ZXkpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aW5kaXJlY3RPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6d2l0aENhbGxUYXJn
ZXQpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpoYXNoIGNvbnN0KToKKyAg
ICAgICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2Vu
ZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxU
aHVua0dlbmVyYXRvcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKToKKyAgICAgICAgKiBq
aXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVj
dGlvbjo6QXJnQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6cHVzaFJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6cHVzaEV4dHJhUmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpB
cmdDb2xsZWN0aW9uOjpwdXNoTm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpB
cmdDb2xsZWN0aW9uOjphZGRHUFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFy
Z0NvbGxlY3Rpb246OmFkZEdQUkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpBcmdDb2xsZWN0aW9uOjphZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6QXJnQ29sbGVjdGlvbjo6YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6
Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZv
ckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2
YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJF
TlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
ZXR1cEFyZ3VtZW50c0VudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0
dXBBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
Rm9ySW5kaXJlY3RDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJv
dXRpbmUpOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJv
UmVmQ291bnQpOgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUpOgorICAgICAgICAoSlNDOjpjcmVhdGVKSVRT
dHViUm91dGluZSk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oOgorICAg
ICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSk6CisgICAgICAgICogaml0
L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjps
aW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpT
Qzo6SklUQ29kZTo6dXNlU2hhcmVkSUMpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVElubGluZUNhY2hlR2VuZXJh
dG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSk6Cisg
ICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbik6CisgICAg
ICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5
SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0TG9hZEZvckFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRf
YnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRE
b3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0xvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Rmxv
YXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRTdHViUm91dGluZS5oOgor
ICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6YWJvdXRUb0RpZSk6CisgICAgICAgIChKU0M6
OkpJVFN0dWJSb3V0aW5lOjprZXlzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6cmVhZFB1dElDQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hDYWxsKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hHZXRCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQXJyYXlHZXRCeVZhbCk6
CisgICAgICAgIChKU0M6OnJlcGF0Y2hBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbGV0ZUJ5KToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5SUQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5C
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAg
IChKU0M6OnJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoSlND
OjpsaW5rVmlydHVhbEZvcik6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnkpOgorICAgICAgICAo
SlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldERlbEJ5KToKKyAgICAgICAg
KEpTQzo6cmVzZXRQYXRjaGFibGVKdW1wKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbkJ5SUQpOgor
ICAgICAgICAoSlNDOjpyZXNldEluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpyZXNldENoZWNr
UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRTZXRQcml2YXRlQnJhbmQpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAg
ICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDUtMjYg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBMZXZlcmFnZSB0aGUg
bmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAppbmRleCBlNTE3NTdlOWI4ZmM2NDI4Nzgy
N2MxNmQwMmQyMWNjMjE4ZmIxMzI2Li44M2NiMzZkMDZmODMxMmM4OTVmNmE0OWIyNTZiYmVjMzQ2
MjczZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aApAQCAtMjM0LDggKzIzNCw4IEBAIGNsYXNzIExpbmtCdWZmZXIgewogICAgIHRlbXBsYXRlPFB0
clRhZyB0YWc+CiAgICAgQ29kZUxvY2F0aW9uQ2FsbDx0YWc+IGxvY2F0aW9uT2YoQ2FsbCBjYWxs
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6OkxpbmthYmxlKSk7
Ci0gICAgICAgIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOworICAgICAgICAv
LyBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKKyAgICAgICAgLy8gQVNT
RVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CiAgICAgICAgIHJldHVybiBDb2RlTG9j
YXRpb25DYWxsPHRhZz4oZ2V0TGlua2VyQWRkcmVzczx0YWc+KGFwcGx5T2Zmc2V0KGNhbGwubV9s
YWJlbCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCBhMjQ1ZTc3ZTQzZTcwYzBlYWEyNDM5
NjQzYWRhMWZjMDM0Y2M3NDFkLi5lNWIwYjJmZjc4OTBiNGZkYjIyMDFmYTg2MWI3NDNlY2IxMDRj
MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0yMjAsMTkgKzIyMCwxOSBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICAgICAgcmV0dXJu
IGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BSLCB0
YWdHUFIpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRk
cmVzcywgUHRyVGFnIHRhZykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbChBZGRyZXNzIGFk
ZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlv
blB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOwogICAgICAgICBBU1NFUlQoIU9wdGlvbnM6OnVz
ZUpJVENhZ2UoKSB8fCBjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsK
ICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7
CisgICAgICAgIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CiAKLSAgICBBTFdB
WVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcp
CiAgICAgewogICAgICAgICBBU1NFUlQodGFnICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAg
ICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBjYWxsT3BlcmF0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4g
b3BlcmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCmluZGV4IGM1ZmY3ODIyNjJlNzE4NWI4NzUwNDg3MGQ0YjRjOWJjNDkyYTRhYTQuLjU3OWQ4
NThkZDc3MmM2NTdiMmJiNGM1YTc0YWJhMTAzZmVkZmI2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgQWNjZXNz
Q2FzZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmkKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbmRpdGlvblNldC5pc1Zh
bGlkKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxB
Y2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHBy
b3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5I
aXQ6CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwg
aWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCitSZWZQdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUs
CiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAt
MTIyLDM0ICsxMjIsMzQgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlRGVsZXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgK
ICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09
IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
OwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0s
IHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBE
ZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2
YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwg
Q2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwg
eyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVy
ZSwgeyB9LCB7IH0pKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGVTZXRQcml2YXRlQnJhbmQoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0g
bmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlk
ZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgU2V0UHJpdmF0ZUJyYW5k
LCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9
CiAKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKK1JlZlB0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8oCiAgICAgVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSgpKSB7
CkBAIC0xODgsOSArMTg4LDkgQEAgSlNPYmplY3QqIEFjY2Vzc0Nhc2U6OmFsdGVybmF0ZUJhc2Uo
KSBjb25zdAogICAgIHJldHVybiBjb25kaXRpb25TZXQoKS5zbG90QmFzZUNvbmRpdGlvbigpLm9i
amVjdCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xv
bmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBBY2Nlc3NDYXNlKCp0
aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2UoKnRoaXMp
KTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
OTY0LDYgKzk2NCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9w
ZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7
CkBAIC0xMDYxLDYgKzEwNjMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9z
dHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAK
QEAgLTExNDQsNiArMTE0OCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBh
bGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApA
QCAtMTIwNSw2ICsxMjExLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xMzE3LDYgKzEzMjUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNj
cmF0Y2hHUFIpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpAQCAtMTM5NCw2ICsxNDA0LDgxIEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGUoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBnZW5l
cmF0ZUltcGwoc3RhdGUpOwogfQogCit2b2lkIEFjY2Vzc0Nhc2U6OmNvbGxlY3RJbnZhcmlhbnRz
Rm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29k
ZUJsb2NrKQoreworICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CisKKyAgICBzd2l0Y2ggKG1fdHlw
ZSkgeworICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFyZ3VtZW50
c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4
Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2Fk
OgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVyaWM6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIEdldEdldHRlcjoK
KyAgICBjYXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
R2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21W
YWx1ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBjdXJy
U3RydWN0dXJlOworICAgICAgICAgICAgaWYgKCFoYXNBbHRlcm5hdGVCYXNlKCkpCisgICAgICAg
ICAgICAgICAgY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBhbHRlcm5hdGVCYXNlKCktPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgICAgICBjdXJyU3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlG
b3JSZXBsYWNlbWVudHModm0sIG9mZnNldCgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZm9yIChj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogbV9jb25kaXRpb25TZXQp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOworCisg
ICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVXYXRj
aGFiaWxpdHkpKSB7CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxv
Y2ssIGNvbmRpdGlvbik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZvciBub3csIHdlIG9ubHkgYWxsb3cgZXF1aXZhbGVuY2Ugd2hlbiBpdCdzIHdhdGNo
YWJsZS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQo
KSAhPSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVuY2UpOworCisgICAgICAgIGlmICghY29u
ZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWFzb24gd2h5IHRoaXMgY2Fubm90IGhh
cHBlbiBpcyB0aGF0IHdlIHJlcXVpcmUgdGhhdCBQb2x5bW9ycGhpY0FjY2VzcyBjYWxscworICAg
ICAgICAgICAgLy8gQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoKSBvbmx5IGFmdGVyIGl0IGhhcyB2ZXJp
ZmllZCB0aGF0CisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpjb3VsZFN0aWxsU3VjY2VlZCgp
IHJldHVybmVkIHRydWUuCisKKyAgICAgICAgICAgIGRhdGFMb2coIlRoaXMgY29uZGl0aW9uIGlz
IG5vIGxvbmdlciBtZXQ6ICIsIGNvbmRpdGlvbiwgIlxuIik7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugd2lsbCBl
bWl0IGNvZGUgdGhhdCBoYXMgYSB3ZWFrIHJlZmVyZW5jZSB0aGF0IGlzbid0IG90aGVyd2lzZSBs
aXN0ZWQgYW55d2hlcmUuCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9u
Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5h
cHBlbmQoV3JpdGVCYXJyaWVyPEpTQ2VsbD4odm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSk7Cisg
ICAgfQorfQorCiB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKQEAgLTE0MTcsNyArMTUwMiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3BvbHlQcm90b0FjY2Vzc0NoYWluKTsKIAogICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0
Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246
OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewotICAgICAgICAgICAg
c3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29uZGl0aW9uKTsKKyAgICAgICAgICAgIHN0YXRlLmlu
c3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKQEAgLTE1ODIsNyArMTY2NywxMiBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIC8v
IFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRoZXIgb3Ig
bm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNpdGUuCi0g
ICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3Rh
dGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsKKyAgICAgICAgUmVnaXN0
ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAg
aWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgorICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAK
ICAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwgPSBbJl0o
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBib29sIGNhbGxI
YXNSZXR1cm5WYWx1ZSkgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmU7CkBA
IC0xNzEyLDYgKzE4MDIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOwog
ICAgICAgICAgICAgYWNjZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xvd1BhdGgodm0sIGppdCk7
CisKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAgICAgICAgICAgICAgIGpp
dC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGppdC5q
dW1wKCkpOwpAQCAtMTcyMyw4ICsxODE0LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVv
ZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJP
ZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVn
aXN0ZXJQcmVzZXJ2YXRpb24pLAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IGludCBzdGFja1BvaW50ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQo
KSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0
ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNV
c2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAg
ICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIoKTsKICAgICAgICAgICAg
IHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBjYWxsSGFz
UmV0dXJuVmFsdWUpOwogCkBAIC0xODQ1LDcgKzE5MzYsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHNr
aXBCYXJyaWVyLmFwcGVuZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2NyYXRjaEdQUiwgc2NyYXRj
aEdQUikpOwogCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
ICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tG
b3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNU
b1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgICAgICBh
dXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bFdpdGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisKICAgICAgICAg
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93
UGF0aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICBhdXRv
IG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTg3NSw2ICsx
OTczLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihz
dHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52
YWxpZEdQUlJlZzsKQEAgLTE5MzMsNiArMjAzMywxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIFJl
Z2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAgICAgICAgICAgICBleHRy
YVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAgICAgICAgICAgIGV4dHJh
UmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBDUFUoQVJNNjQpCisgICAg
ICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRl
IHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChl
eHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMTM1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZh
bHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOworICAgICAgICBpZiAo
c3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVs
ZXRpb24pOwpAQCAtMjE5MSw2ICsyMjk3LDEzIEBAIFR5cGVkQXJyYXlUeXBlIEFjY2Vzc0Nhc2U6
OnRvVHlwZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIH0KIH0KIAordm9p
ZCBTaGFyZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCit7CisgICAg
aWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJz
LT5yZW1vdmUodGhpcyk7CisgICAgSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQo
KTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lz
dGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewpAQCAtMjIwMyw2ICsyMzE2LDEx
MiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKK2Jvb2wgQWNjZXNzQ2Fz
ZTo6ZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYgbGhzLCBjb25zdCBBY2Nlc3NDYXNl
JiByaHMpCit7CisgICAgLy8gV2UgZG8gbm90IGNhcmUgbV9zdGF0ZS4KKyAgICAvLyBBbmQgd2Ug
c2F5ICJmYWxzZSIgaWYgZWl0aGVyIG9mIHRoZW0gaGF2ZSBtX3BvbHlQcm90b0FjY2Vzc0NoYWlu
LgorICAgIGlmIChsaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiB8fCByaHMubV9wb2x5UHJvdG9B
Y2Nlc3NDaGFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMuYWRkaXRpb25h
bFNldCgpIHx8IHJocy5hZGRpdGlvbmFsU2V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAobGhzLm1fb2Zmc2V0ICE9IHJocy5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQcm94eSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0KCkgIT0gcmhzLm1fc3Ry
dWN0dXJlLmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRp
dGlvblNldC5zaXplKCkgIT0gcmhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBsaXRlciA9IGxocy5tX2NvbmRpdGlvblNldC5iZWdpbigp
OworICAgIGF1dG8gcml0ZXIgPSByaHMubV9jb25kaXRpb25TZXQuYmVnaW4oKTsKKyAgICBmb3Ig
KDsgbGl0ZXIgIT0gbGhzLm1fY29uZGl0aW9uU2V0LmVuZCgpOyArK2xpdGVyLCArK3JpdGVyKSB7
CisgICAgICAgIGlmICghKCpsaXRlciA9PSAqcml0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHN3aXRjaCAobGhzLm1fdHlwZSkgeworICAgIGNhc2UgTG9hZDoK
KyAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVO
b25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgorICAgIGNhc2UgUmVwbGFjZToK
KyAgICBjYXNlIE1pc3M6CisgICAgY2FzZSBHZXRHZXR0ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAg
ICBjYXNlIEluTWlzczoKKyAgICBjYXNlIEFycmF5TGVuZ3RoOgorICAgIGNhc2UgU3RyaW5nTGVu
Z3RoOgorICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQ
cml2YXRlQnJhbmQ6CisgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZERvdWJsZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJ
bmRleGVkQXJyYXlTdG9yYWdlTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTY29wZWRBcmd1bWVudHNM
b2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OExv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4Q2xhbXBlZExvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5
VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MzJMb2FkOgorICAgIGNh
c2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBj
YXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNl
dHRlciByZWxpZXMgb24gQ29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUu
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0
dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1
ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGF1dG8m
IGxoc2QgPSBsaHMuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYg
cmhzZCA9IHJocy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICBpZiAobGhz
ZC5tX2RvbUF0dHJpYnV0ZSB8fCByaHNkLm1fZG9tQXR0cmlidXRlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbGhzZC5tX2N1c3RvbVNsb3RCYXNlID09IHJoc2Qu
bV9jdXN0b21TbG90QmFzZQorICAgICAgICAgICAgJiYgbGhzZC5tX2N1c3RvbUFjY2Vzc29yID09
IHJoc2QubV9jdXN0b21BY2Nlc3NvcjsKKyAgICB9CisKKyAgICBjYXNlIEludHJpbnNpY0dldHRl
cjogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9pbnRyaW5zaWNGdW5jdGlvbiA9PSByaHNk
Lm1faW50cmluc2ljRnVuY3Rpb247CisgICAgfQorCisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VM
b2FkOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCA9
PSByaHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0CisgICAgICAgICAgICAmJiBsaHNkLm1fbW9k
dWxlRW52aXJvbm1lbnQgPT0gcmhzZC5tX21vZHVsZUVudmlyb25tZW50CisgICAgICAgICAgICAm
JiBsaHNkLm1fc2NvcGVPZmZzZXQgPT0gcmhzZC5tX3Njb3BlT2Zmc2V0OworICAgIH0KKworICAg
IGNhc2UgSW5zdGFuY2VPZkhpdDoKKyAgICBjYXNlIEluc3RhbmNlT2ZNaXNzOgorICAgIGNhc2Ug
SW5zdGFuY2VPZkdlbmVyaWM6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnN0YW5j
ZU9mQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnN0YW5jZU9m
QWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9wcm90b3R5cGUgPT0gcmhzZC5t
X3Byb3RvdHlwZTsKKyAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCmluZGV4IGJkZDFiMjM3ZDYxOGEyY2NlODI3MjBmNzJjYTc1MzdkZTNmYTcw
NjguLjljMmZiM2VhNmFkMjhiMTc0NGMwOTc3ODhkYzY0YjM1NWI0ZDBlZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMjgsMTAgKzI4LDEzIEBA
CiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQb2x5
UHJvdG9BY2Nlc3NDaGFpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTc5LDcgKzgyLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiAvLyBXZSB3aWxsIHNvbWV0aW1lcyBidWZmZXIgY29t
bWl0dGVkIEFjY2Vzc0Nhc2VzIGluIHRoZSBQb2x5bW9ycGhpY0FjY2VzcyBvYmplY3QgYmVmb3Jl
IGdlbmVyYXRpbmcKIC8vIGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgcmVnZW5lcmF0ZSBv
bmNlIHdlJ3ZlIGFjY3VtdWxhdGVkIChob3BlZnVsbHkpIG1vcmUgdGhhbiBvbmUgbmV3CiAvLyBB
Y2Nlc3NDYXNlLgotY2xhc3MgQWNjZXNzQ2FzZSB7CitjbGFzcyBBY2Nlc3NDYXNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEFjY2Vzc0Nhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIHB1YmxpYzoKICAgICBl
bnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKQEAgLTE0NywxOSArMTUwLDE5IEBAIGNsYXNzIEFj
Y2Vzc0Nhc2UgewogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2VUeXBl
PihuZXcgQWNjZXNzQ2FzZVR5cGUoYXJndW1lbnRzLi4uKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRP
ZmZzZXQsCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGlu
dmFsaWRPZmZzZXQsCiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24o
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0
ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0m
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKICAgICBB
Y2Nlc3NUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KQEAgLTI1MywxMSArMjU2LDM5IEBAIGNsYXNz
IEFjY2Vzc0Nhc2UgewogI2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0
ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYpIHsgfQogI2VuZGlmCi0gICAgCisKKyAgICB2b2lkIGNv
bGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIENvZGVC
bG9jayopOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gY29tcHV0ZUhhc2gobV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV90eXBlKSwgbV92aWFQcm94eSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIG1fb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbEluU2hhcmluZyhjb25zdCBBY2Nlc3NDYXNlJiwg
Y29uc3QgQWNjZXNzQ2FzZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzQ2FzZShWTSYsIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7Ci0gICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYp
ID0gZGVmYXVsdDsKLSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKSA9IGRl
ZmF1bHQ7CisgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYgb3RoZXIpCisgICAgICAgIDogbV90
eXBlKFdURk1vdmUob3RoZXIubV90eXBlKSkKKyAgICAgICAgLCBtX3N0YXRlKFdURk1vdmUob3Ro
ZXIubV9zdGF0ZSkpCisgICAgICAgICwgbV92aWFQcm94eShXVEZNb3ZlKG90aGVyLm1fdmlhUHJv
eHkpKQorICAgICAgICAsIG1fb2Zmc2V0KFdURk1vdmUob3RoZXIubV9vZmZzZXQpKQorICAgICAg
ICAsIG1fc3RydWN0dXJlKFdURk1vdmUob3RoZXIubV9zdHJ1Y3R1cmUpKQorICAgICAgICAsIG1f
Y29uZGl0aW9uU2V0KFdURk1vdmUob3RoZXIubV9jb25kaXRpb25TZXQpKQorICAgICAgICAsIG1f
cG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0NoYWlu
KSkKKyAgICAgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShvdGhlci5tX2lkZW50aWZpZXIpKQor
ICAgIHsgfQorCisgICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikKKyAgICAg
ICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICAgICAsIG1fc3RhdGUob3RoZXIubV9zdGF0
ZSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KG90aGVyLm1fdmlhUHJveHkpCisgICAgICAgICwgbV9v
ZmZzZXQob3RoZXIubV9vZmZzZXQpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUob3RoZXIubV9zdHJ1
Y3R1cmUpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQob3RoZXIubV9jb25kaXRpb25TZXQpCisg
ICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0No
YWluKQorICAgICAgICAsIG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZpZXIpCisgICAgeyB9
CiAKICAgICBBY2Nlc3NDYXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNzQ2FzZSYpID0gZGVsZXRl
OwogICAgIHZvaWQgcmVzZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1vcmRpYWw7IH0KQEAgLTI3
NSw3ICszMDYsNyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG9u
bHkgZXhpc3RzIGJlY2F1c2Ugb2YgaG93IEFjY2Vzc0Nhc2UgcHV0cyBwb3N0LWdlbmVyYXRpb24g
dGhpbmdzIGludG8gaXRzZWxmLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTY0NTYKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29u
c3Q7CiAKICAgICAvLyBQZXJmb3JtIGFueSBhY3Rpb24gdGhhdCBtdXN0IGJlIHBlcmZvcm1lZCBi
ZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXBvY2ggaW4gd2hpY2ggdGhlIGNhc2UKICAgICAvLyB3YXMg
Y3JlYXRlZC4gUmV0dXJucyBhIHNldCBvZiB3YXRjaHBvaW50IHNldHMgdGhhdCB3aWxsIG5lZWQg
dG8gYmUgd2F0Y2hlZC4KQEAgLTMxNSw2ICszNDYsMTY4IEBAIGNsYXNzIEFjY2Vzc0Nhc2Ugewog
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAorY2xhc3MgU2hhcmVh
YmxlSklUU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgeworcHVibGlj
OgorICAgIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKFZNJiB2bSwgY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+PiYmIGtleXMpCisgICAgICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKKyAg
ICAgICAgLCBtX3ZtKHZtKQorICAgICAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQorICAgIHsK
KyAgICB9CisKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorCisgICAgdm9pZCBvYnNlcnZlWmVy
b1JlZkNvdW50KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBtX2tleXM7Cit9OworCitjbGFzcyBTaGFyZWRKSVRT
dHViU2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsK
K3B1YmxpYzoKKyAgICBTaGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYga2V5
cykKKyAgICB7CisgICAgICAgIEhhc2hlciBoYXNoZXI7CisgICAgICAgIGZvciAoYXV0byYga2V5
IDoga2V5cykKKyAgICAgICAgICAgIFdURjo6YWRkKGhhc2hlciwga2V5LT5oYXNoKCkpOworICAg
ICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgSGFzaCB7Cisg
ICAgICAgIHN0cnVjdCBLZXkgeworICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0OworCisgICAg
ICAgICAgICBLZXkoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BSUmVnIGV4dHJh
R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIEpJVFN0
dWJSb3V0aW5lKiB3cmFwcGVkKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQp
CisgICAgICAgICAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgICAgICAgICAs
IG1fdmFsdWVHUFIodmFsdWVHUFIpCisgICAgICAgICAgICAgICAgLCBtX2V4dHJhR1BSKGV4dHJh
R1BSKQorICAgICAgICAgICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAg
ICAgICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAgICAgICAg
eyB9CisKKyAgICAgICAgICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisg
ICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQoYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4o
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAg
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBl
ZCA9PSBiaXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKTsgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCA9PSBiLm1fd3JhcHBlZAorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fYmFz
ZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIg
PT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBi
Lm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIu
bV9zdHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9
PSBiLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dyYXBwZWQgIT0gYi5tX3dyYXBwZWQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpJVFN0dWJSb3V0aW5lKiBtX3dyYXBwZWQgeyBu
dWxscHRyIH07CisgICAgICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAgICAgICAgR1BS
UmVnIG1fdmFsdWVHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAg
ICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2Vk
UmVnaXN0ZXJzOworICAgICAgICB9OworCisgICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IFNpbXBs
ZUNsYXNzSGFzaFRyYWl0czxLZXk+OworCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IEtleSYgcCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFwLm1fd3JhcHBlZCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHVi
U2V0OjpoYXNoKCpwLm1fd3JhcHBlZC0+a2V5cygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAg
fTsKKworICAgIHN0cnVjdCBTZWFyY2hlciB7CisgICAgICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsK
KyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hl
cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkSklUU3R1YlNl
dDo6aGFzaChzZWFyY2hlci5tX2tleXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkgYSwgY29uc3QgU2VhcmNoZXImIGIpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGEubV9iYXNlR1BSID09IGIubV9iYXNl
R1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIK
KyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAg
ICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0
ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF2ZWMgPSAqYS5tX3dyYXBw
ZWQtPmtleXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYnZlYyA9IGIubV9r
ZXlzOworICAgICAgICAgICAgICAgICAgICBpZiAoYXZlYy5zaXplKCkgPT0gYnZlYy5zaXplKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IGJ2ZWMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2luZGV4
XSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBH
UFJSZWcgbV9iYXNlR1BSOworICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BS
UmVnIG1fZXh0cmFHUFI7CisgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBS
ZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mIG1fa2V5czsKKyAgICB9OworCisgICAgc3RydWN0IFBvaW50ZXJU
cmFuc2xhdG9yIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSklUU3R1YlJvdXRpbmUq
IHN0dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0Ojpo
YXNoKCpzdHViLT5rZXlzKCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgSGFzaDo6S2V5IGtleSwgSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgdm9pZCBhZGQoSGFzaDo6S2V5JiYga2V5KQorICAgIHsKKyAgICAgICAgbV9z
dHVicy5hZGQoa2V5KTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShKSVRTdHViUm91dGluZSog
c3R1YikKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fc3R1YnMuZmluZDxQb2ludGVyVHJh
bnNsYXRvcj4oc3R1Yik7CisgICAgICAgIGlmIChpdGVyICE9IG1fc3R1YnMuZW5kKCkpCisgICAg
ICAgICAgICBtX3N0dWJzLnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBKSVRTdHViUm91dGlu
ZSogZmluZChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIpCisgICAgeworICAgICAgICBhdXRvIGVu
dHJ5ID0gbV9zdHVicy5maW5kPFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9y
PihzZWFyY2hlcik7CisgICAgICAgIGlmIChlbnRyeSAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGVudHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PEhhc2g6OktleSwgSGFzaCwgSGFzaDo6S2V5
VHJhaXRzPiBtX3N0dWJzOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmluZGV4IGZjOThmNGU0MDBi
OGZjNmNjYjg4ZGYwY2FhNGM1YTU1NTM2NzljODQuLjQyZDA3OTRkZDYyNDBjNjM4MGM5YmExN2U5
ZDRmNDMyMDIyMjI3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeVZhbEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJ
bmZvLmgKQEAgLTI2Miw2ICsyNjIsMTQgQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAKICAgICBERUNM
QVJFX1ZJU0lUX0FHR1JFR0FURTsKIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3Bl
cmF0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJn
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRh
cmdldCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0
KTsgfQorCisgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247
CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fbm90SW5kZXhK
dW1wVGFyZ2V0OworICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBt
X2JhZFR5cGVKdW1wVGFyZ2V0OworCiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBub3RJbmRleEp1bXA7CiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PiBiYWRUeXBlSnVtcDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBleGNlcHRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA3ZGYwNWUxMGJjOTBiNjU2ZjM1MDNjODVjMDU0YzVkM2FmYTdj
NmI5Li4xODlhNTg0NzcwZjAyY2IzODdmNzVkOWE0NDM2ZmNiNTA4NGNlNDJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtODYxLDcgKzg2MSw3
IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoYXV0
byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewogICAgICAgICBmb3IgKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBz
dHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1YkluZm8tPmFib3V0VG9EaWUo
Km1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNzcyLDcgKzE3NzIsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKICAg
ICAgICAgLy8gdG8gTExJbnQuCiAKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgc3R1YkluZm8tPmFi
b3V0VG9EaWUoKTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCptX3ZtKTsKICAg
ICAgICAgICAgIHN0dWJJbmZvLT5kZXJlZigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA3NzMyOWYzYTQxZTA0YTFjNzJkYjYy
YzFkNThmNGY1YzM2Mzk3MjUxLi44MWFiOTdmYmQ4MThiMWZiN2MxZmJmZWQ0MDI0OWZjOTM3MTYz
Zjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00
MjAsNiArNDIwLDExIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9
CisKKyAgICBib29sIHVzZVNoYXJlZElDKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBK
SVRDb2RlOjp1c2VTaGFyZWRJQyhqaXRUeXBlKCkpOworICAgIH0KICAgICAKICNpZiBFTkFCTEUo
SklUKQogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRl
eCAyMDJlZmM1NDY2NjE5ODU0ZGFhYTYyMGM2OTdmZjFjZmY3Y2YzODM2Li42YTMwZTYzOGUyMDBj
YTA4MGUxNGJhYWQ4N2FlOGUxNjRmZjY5YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2Uo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgbV9jdXN0b21TbG90QmFzZS5z
ZXRNYXlCZU51bGwodm0sIG93bmVyLCBjdXN0b21TbG90QmFzZSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCitSZWY8QWNj
ZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2aWFQcm94
eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+IGN1c3RvbUdldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAogICAgIE9w
dGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQpAQCAtNjEsMTggKzYxLDE4
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpj
cmVhdGUoCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNl
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9u
YWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwog
ICAgIHJlc3VsdC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7CiAgICAgcmVzdWx0LT5t
X2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+KGN1c3RvbUdldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpj
cmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4sIGJvb2wg
dmlhUHJveHksIAogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21T
ZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKIHsKICAgICBBU1NFUlQodHlwZSA9PSBT
ZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCB0eXBlID09IEN1c3RvbUFjY2Vz
c29yU2V0dGVyKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4g
cmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIG51bGxwdHIs
IGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9IGN1c3RvbVNldHRlciA/IEZ1
bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21TZXR0ZXIpIDogbnVsbHB0cjsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTEsOSArOTEsOSBAQCBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nh
c2UmIG90aAogICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9u
ZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUo
KSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiBy
ZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJl
c3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzksNiArMTM5
LDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7Cisg
ICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgYWxsb2NhdG9yLmxv
Y2soc2NyYXRjaEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNlR1BSID0gSW52YWxpZEdQUlJl
ZzsKQEAgLTIyMyw2ICsyMjUsMTEgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBmb3Ig
KEZQUlJlZyByZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2Fs
bC5zZXQocmVnKTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVkZShSZWdpc3Rl
clNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOworICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQo
QVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogCiAgICAgQWNjZXNzQ2FzZVNuaXBwZXRQYXJh
bXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwg
V1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0LT5nZW5lcmF0b3IoKS0+cnVuKGppdCwg
cGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDg3M2U3YzM1ODg4ZWIzYjEyMWRiZmQ3YWYwNmUy
Y2FiZWI3ZDMzYjIuLjEwMGZiMjdlZTg1NjYxNmZiNDE4NDI1ZWMyYzcyMzQ5NGE0YWVmMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRl
ckFjY2Vzc0Nhc2UuaApAQCAtNTMsMTcgKzUzLDE3IEBAIGNsYXNzIEdldHRlclNldHRlckFjY2Vz
c0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAKICAgICB2b2lkIGVt
aXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgRE9NSklUOjpHZXR0
ZXJTZXR0ZXIqLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAgICAgICAgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBh
ZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0
dGVyLAogICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIE9wdGlvbmFsPERPTUF0dHJp
YnV0ZUFubm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94eSA9IGZhbHNlLAogICAg
ICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0dGVyID0gbnVs
bHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1
bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVBY2Nlc3MuY3BwCmluZGV4IDgzMmNkMGI4ZmFmZDk4ZDBiMjg1OTNjYmJiMDU3YmFlOTZmYjMy
MWEuLjEyZDFiNWEwZWM3ZGU1ZjY3N2FkMzZkYTEyYmFjZTQwNjI1YTBmYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0yMTYsNiAr
MjE2LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNjcmF0Y2hSZWdpc3RlcihT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVRhZ0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udmFsdWVUYWdHUFIpOwog
I2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgR1BS
UmVnIHNjcmF0Y2ggPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAgaWYgKGFs
bG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJl
ZzsKQEAgLTM3OSw4ICszODEsNDUgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZklu
QWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKgogICAgIHJldHVy
biBsaW5rZWRDb2RlSW5saW5lOwogfQogCi12b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiB0YXJnZXQpCiB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgYXV0byBqdW1wID0gaml0Lmp1bXAo
KTsKKworICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5
IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KKyAgICBib29sIG5l
ZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNlOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihq
aXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZl
ci5pc1ZhbGlkKCkpOworICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQpOworCisgICAg
RklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlua2lu
ZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3sK
KyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChzdHViSW5m
by5tX2NvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSA9PSBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkgeworICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZzdHViSW5mbyksIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOworICAgICAgICAgICAgaml0LmNh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAgIGJvb2wgbGlu
a2VkQ29kZUlubGluZSA9IGxpbmtDb2RlSW5saW5lKCJzdHViIGNhbGxzIiwgaml0LCBzdHViSW5m
bywgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtlZENvZGVJbmxpbmUpOworICAgICAgICB9
CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKICAgICBhdXRvIGp1bXAgPSBqaXQuanVt
cCgpOwpAQCAtMzk0LDYgKzQzMywyNiBAQCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYgogICAgIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcg
Y29uc3RhbnQganVtcCIpOwogfQogCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAg
IENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAg
Ly8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJl
IGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hD
b21wYWN0aW9uID0gZmFsc2U7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1Yklu
Zm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNC
cmFuY2hDb21wYWN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQo
KSk7CisgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5l
QWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6
OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgcmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuaAppbmRleCBmNDliMzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIyYjg0NzFk
MTJkLi44ZDY2MDFjOGI5OGQ4MTI1ZWM2YjEwMGEwNzljNTFlMTEyYTM4M2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQsNyArMTA0
LDEwIEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVB
cnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMgYm9v
bCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRp
YyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7
Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQg
cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4pOworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxp
bmVDb2RlKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3RhdGljIHZvaWQg
cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
ICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYs
IFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3RoKFN0cnVj
dHVyZVN0dWJJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIxZjI0NTNiYWM3YWZhZTc3MjQx
Y2IwNGEyNWQyMGZkZDk5M2JjMzQuLjk5NDkwOGQ2OGI2MmJiZTA2ZTA5YWEwYjM3ZTc3YzExMGM2
NjkyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5j
ZU9mQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAog
ICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBKU09iamVjdCogcHJvdG90eXBlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNj
ZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNjZXNzVHlw
ZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOwogfQogCiB2b2lkIEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXIm
IGNvbW1hKSBjb25zdApAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNl
OjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1hKSBjb25zdAog
ICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSA9ICIsIEpTVmFsdWUocHJvdG90eXBlKCkp
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNs
b25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+
IHJlc3VsdChuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1
bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaAppbmRleCA2
OWUyYjMxYWE5NGE1OWQzMGRmYjRjYWYyMjQ0OTlkNjAyNzc4NDdjLi5hZDcxZTY5NDJmNDQ5MmZh
OGFiZGVhYWM3ZWEwZmM0NmI3MDc5ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaApAQCAtMzQsMTUgKzM0LDE2IEBA
IG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJs
aWMgQWNjZXNzQ2FzZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEFjY2Vzc0Nhc2U7Cisg
ICAgZnJpZW5kIGNsYXNzIEFjY2Vzc0Nhc2U7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVh
dGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLAogICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
KTsKICAgICAKICAgICBKU09iamVjdCogcHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90
b3R5cGUuZ2V0KCk7IH0KICAgICAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29t
bWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Qg
ZmluYWw7CiAgICAgCiAgICAgfkluc3RhbmNlT2ZBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCA2MzAxZGMyMzM2OTMzZDY3NmMzYmU5ZTkwYzYwMTg5YTEz
MTczODE3Li4zNGIxYTgwMjc4ODk1ZjcxYWJmZTY4Mjk2OWNkZTQzMGYzMmU3ZDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0zOSwxOCArMzksMTggQEAgSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2gKICAgICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGludHJpbnNpY0Z1
bmN0aW9uKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNG
dW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVu
Y3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZp
ZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6fklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vz
c0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJl
c2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKaW5k
ZXggNjI4NzAwNDE1ODczMWQ1YjhmZWI1MDYzNTNkZTU1OWI2NDQ3NjQ0Ni4uNDdhZjFhMmJmMWRk
NmNiOTEzNjI2MzIxMDE5M2I0N2EzZmYyYWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00
Miw5ICs0Miw5IEBAIGNsYXNzIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJs
aWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJvb2wgY2FuRW1pdEludHJpbnNpY0dldHRlcihK
U0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBlbWl0SW50cmluc2ljR2V0dGVyKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBK
U0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENh
Y2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25l
KCkgY29uc3QgZmluYWw7CiAKICAgICB+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjk1NmRkMGNkNWQwZWFlNjFhMDhlM2Rj
NzY1YmY3NDM0NDFjNWY4ZC4uYzI5YzFkZGZhZjQ4MTU1NjYxNTE3MDg1YTg4ZTE5YTA3M2FiZTdm
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAtNDUsMTggKzQ1LDE4IEBAIE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2U6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIG93bmVyLCBt
b2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1
bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50
LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50LCBTY29wZU9m
ZnNldCBzY29wZU9mZnNldCkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwg
bW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBv
d25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVu
dCwgc2NvcGVPZmZzZXQpKTsKIH0KIAogTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6fk1vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nh
c2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigq
bmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0
U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKaW5kZXgg
OTJhMGI4YTM1YjU0NzE2MjQxMzBkNjUwNjUzZDA1YmY1ZDc5MzM3Ny4uZDQzOTUwYmYwNjMxMzdj
Zjc3M2I4NGM0YWFlNDk0NGIwNGM5YTNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCkBAIC00NCw5
ICs0NCw5IEBAIGNsYXNzIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMg
QWNjZXNzQ2FzZSB7CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOyB9CiAgICAgU2NvcGVP
ZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zmc2V0OyB9CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNN
b2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBlbWl0
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRo
cm91Z2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDVkOTA1NDU5NzRmMWVkMzdmMjhj
YWYzYTJhZWIzNDZhNDkxMGEyODMuLjZkYWNjYmY4NzFjMDg3YWFiYTk4NjM1YzUwMWE3OGI3ZjRm
ZDEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODksNiArOTAs
MTQgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBtX2RhdGEtPm1fdmVjdG9yLmVuZCgpOwogICAg
IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgSGFzaGVyIGhh
c2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBjb25kaXRpb24gOiAqdGhpcykKKyAgICAgICAgICAg
IGFkZChoYXNoZXIsIGNvbmRpdGlvbi5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFzaGVyLmhh
c2goKTsKKyAgICB9CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yT2JqZWN0
KEpTT2JqZWN0KikgY29uc3Q7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yQ29uZGl0
aW9uS2luZChQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAwM2Ey
ZjY3MWY3NDQ2ZTRhY2FkY2Q3NGI5Yzg3ZTg5YTdkMDlhMDE1Li41ZDNmMTM2N2VhNGQ1NGNiZDUx
ZmFiNDJkY2IzMTY5MWJkMTlmZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
ICAgICBvdXQucHJpbnQoIjoiLCBtX2NvZGUpOwogfQogCi12b2lkIEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNv
bmRpdGlvbikKK3ZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRp
dGlvbikKIHsKLSAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVy
ZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KAotICAgICAgICB3YXRjaHBvaW50cywgaml0LT5jb2Rl
QmxvY2soKSwgc3R1YkluZm8sIGNvbmRpdGlvbik7CisgICAgV2F0Y2hwb2ludHNPblN0cnVjdHVy
ZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCh3YXRjaHBvaW50
cywgY29kZUJsb2NrLCBzdHViSW5mbywgY29uZGl0aW9uKTsKIH0KIAogdm9pZCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkKQEAgLTczLDcgKzcyLDEwIEBAIHZvaWQgQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCiB2b2lkIEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZTo6c3VjY2VlZCgpCiB7CiAgICAgcmVzdG9yZVNjcmF0Y2goKTsKLSAgICBzdWNjZXNz
LmFwcGVuZChqaXQtPmp1bXAoKSk7CisgICAgaWYgKGppdC0+Y29kZUJsb2NrKCktPnVzZVNoYXJl
ZElDKCkpCisgICAgICAgIGppdC0+cmV0KCk7CisgICAgZWxzZQorICAgICAgICBzdWNjZXNzLmFw
cGVuZChqaXQtPmp1bXAoKSk7CiB9CiAKIGNvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OmxpdmVSZWdpc3RlcnNGb3JDYWxsKCkKQEAgLTEyNiwxMCArMTI4LDExIEBAIGF1
dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9y
Q2FsbChjb25zdCBSZWdpc3RlclNlCiAgICAgfTsKIH0KIAotYXV0byBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlv
bnMoKSAtPiBTcGlsbFN0YXRlCithdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVM
aXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3Rl
clNldCYgZXh0cmEpIC0+IFNwaWxsU3RhdGUKIHsKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0
ZXJzID0gYWxsb2NhdG9yLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgbGl2ZVJlZ2lzdGVycy5leGNs
dWRlKGNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgbGl2ZVJlZ2lzdGVycy5tZXJnZShleHRy
YSk7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQgZXh0cmFTdGFja1BhZGRpbmcgPSAwOwogICAg
IHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bCgqaml0LCBsaXZlUmVnaXN0ZXJzLCBleHRyYVN0YWNrUGFkZGluZyk7CkBAIC0yNTIsNyArMjU1
LDcgQEAgUG9seW1vcnBoaWNBY2Nlc3M6On5Qb2x5bW9ycGhpY0FjY2VzcygpIHsgfQogCiBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICBjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAotICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2FzZXNUb0FkZCkKKyAgICBWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIApAQCAtMjY4LDkgKzI3
MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2Vz
KAogICAgIC8vICAgYWRkIG1vcmUgdGhpbmdzIGFmdGVyIGZhaWx1cmUuCiAgICAgCiAgICAgLy8g
Rmlyc3QgZW5zdXJlIHRoYXQgdGhlIG9yaWdpbmFsQ2FzZXNUb0FkZCBkb2Vzbid0IGNvbnRhaW4g
ZHVwbGljYXRlcy4KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+PiBjYXNl
c1RvQWRkOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdpbmFsQ2FzZXNUb0FkZC5zaXplKCk7ICsraSkg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbXlDYXNlID0gV1RGTW92ZShv
cmlnaW5hbENhc2VzVG9BZGRbaV0pOworICAgICAgICBhdXRvIG15Q2FzZSA9IFdURk1vdmUob3Jp
Z2luYWxDYXNlc1RvQWRkW2ldKTsKIAogICAgICAgICAvLyBBZGQgaXQgb25seSBpZiBpdCBpcyBu
b3QgcmVwbGFjZWQgYnkgdGhlIHN1YnNlcXVlbnQgY2FzZXMgaW4gdGhlIGxpc3QuCiAgICAgICAg
IGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTM0Niw5ICszNDksOSBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKIH0KIAogQWNjZXNzR2VuZXJhdGlv
blJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSgKLSAgICBjb25zdCBHQ1NhZmVDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3
QWNjZXNzKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFJl
ZjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCiB7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
PiwgMj4gbmV3QWNjZXNzZXM7CiAgICAgbmV3QWNjZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3QWNj
ZXNzKSk7CiAgICAgcmV0dXJuIGFkZENhc2VzKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgc3R1Yklu
Zm8sIFdURk1vdmUobmV3QWNjZXNzZXMpKTsKIH0KQEAgLTQ0MCw3ICs0NDMsNyBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogICAgIHVuc2lnbmVkIHNyY0luZGV4ID0gMDsKICAgICB1bnNpZ25l
ZCBkc3RJbmRleCA9IDA7CiAgICAgd2hpbGUgKHNyY0luZGV4IDwgbV9saXN0LnNpemUoKSkgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1f
bGlzdFtzcmNJbmRleCsrXSk7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9
IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRo
ZSBjYXNlIGhhZCBiZWVuIGdlbmVyYXRlZCwgdGhlbiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9yaWdp
bmFsIGluIG1fbGlzdCBpbiBjYXNlIHdlCiAgICAgICAgIC8vIGZhaWwgdG8gcmVnZW5lcmF0ZS4g
VGhhdCBjYXNlIG1heSBoYXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBj
b2RlIHRoYXQgaXQKQEAgLTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
ICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAgIGlmIChz
dHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRjaEdQUiA9
IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDUsNiBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0YXRlLmpp
dCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KLSAg
ICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAK
ICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MjEsMTIgKzUyMCwz
MCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNz
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczogIiwg
bGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAKKworICAgIGJvb2wgZG9lc0NhbGxzID0gZmFs
c2U7CisgICAgYm9vbCBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGZhbHNlOworICAgIGJvb2wg
Y2FuQmVTaGFyZWQgPSB0cnVlOworICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKKyAg
ICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGtleXMoY2FzZXMuc2l6ZSgpKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7Cisg
ICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOwor
ICAgICAgICBpZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50cnkt
PnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCisgICAgICAgICAgICBkb2VzSlNHZXR0ZXJT
ZXR0ZXJDYWxscyA9IHRydWU7CisgICAgICAgIGtleXNbaW5kZXhdID0gZW50cnk7CisgICAgICAg
ICsraW5kZXg7CisgICAgfQorICAgIHN0YXRlLm1fZG9lc0NhbGxzID0gZG9lc0NhbGxzOworICAg
IHN0YXRlLm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxs
czsKKyAgICAvLyBHZXR0ZXIgLyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0
bWVudCwgd2hpY2ggaXMgdGllZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMg
dGhpcyBjb2RlIHVuc2hhcmVhYmxlLgorICAgIGlmIChkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykK
KyAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKwogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Un
cmUgY29udmluY2VkIHRoYXQgJ2Nhc2VzJyBjb250YWlucyB0aGUgY2FzZXMgdGhhdCB3ZSB3YW50
IHRvIEpJVCBub3cgYW5kIHdlCiAgICAgLy8gd29uJ3QgY2hhbmdlIHRoYXQgc2V0IGFueW1vcmUu
CiAgICAgCiAgICAgYm9vbCBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayA9IHRydWU7Ci0gICAg
Ym9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBmYWxzZTsKICAgICBib29sIG5lZWRzSW50MzJQ
cm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sg
PSBmYWxzZTsKICAgICBib29sIG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayA9IGZhbHNlOwpAQCAt
NTQyLDEwICs1NTksNzEgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgfQogICAg
ICAgICBjb21taXQobG9ja2VyLCB2bSwgc3RhdGUud2F0Y2hwb2ludHMsIGNvZGVCbG9jaywgc3R1
YkluZm8sICpuZXdDYXNlKTsKICAgICAgICAgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgJj0g
bmV3Q2FzZS0+Z3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2soc3R1YkluZm8pOwotICAgICAgICBpZiAo
bmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBuZXdDYXNlLT50eXBlKCkg
PT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQotICAgICAgICAgICAgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxs
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5ld0Nhc2UtPnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAg
ICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgfQorICAgIGlmIChuZWVkc1N5bWJvbFByb3Bl
cnR5Q2hlY2sgfHwgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzSW50MzJQcm9wZXJ0
eUNoZWNrKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCisgICAgUmVmUHRyPEpJVFN0
dWJSb3V0aW5lPiBzdHViOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAg
ICAgICAgaWYgKGNhbkJlU2hhcmVkKSB7CisgICAgICAgICAgICBTaGFyZWRKSVRTdHViU2V0OjpT
ZWFyY2hlciBzZWFyY2hlciB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQUiwKKyAg
ICAgICAgICAgICAgICBzdHViSW5mby52YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICBzdHViSW5m
by5yZWdzLnRoaXNHUFIsCisgICAgICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwK
KyAgICAgICAgICAgICAgICBzdHViSW5mby51c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAg
IGtleXMKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBzdHViID0gdm0ubV9zaGFyZWRKSVRT
dHVicy0+ZmluZChzZWFyY2hlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGZpbmlz
aENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxKSVRTdHViUm91dGluZT4mJiBzdHViKSB7Cisg
ICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZNb3ZlKHN0dWIpOworICAgICAgICBtX3dhdGNocG9p
bnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CisgICAgICAgIGlmICghc3RhdGUud2Vh
a1JlZmVyZW5jZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZp
eGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVu
Y2VzKSk7CisgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQor
ICAgICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCks
ICJcbiIpOworCisgICAgICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOworICAgICAgICBtX2xp
c3Quc2hyaW5rVG9GaXQoKTsKKworICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5k
IHJlc3VsdEtpbmQ7CisgICAgICAgIGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFj
Y2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKKyAgICAgICAgICAg
IHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOworCisgICAgICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0KHJlc3VsdEtpbmQsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAg
IH07CisKKyAgICBpZiAoc3R1YikgeworICAgICAgICBmb3IgKGF1dG8mIGFjY2Vzc0Nhc2UgOiBj
YXNlcykKKyAgICAgICAgICAgIGFjY2Vzc0Nhc2UtPmNvbGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJl
dXNlKHN0YXRlLCBjb2RlQmxvY2spOworICAgICAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRp
b24oV1RGTW92ZShzdHViKSk7CiAgICAgfQogCisgICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxv
Y2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFy
ZWRJQygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5tX2RvZXNKU0dldHRlclNldHRlckNhbGxzKSB7
CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGd1YXJhbnRlZSB0aGF0IHN0YWNrLXBvaW50ZXIg
aXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhpcyBpcyBub3QgYSBwcm9ibGVtIGlmIHdlIGFyZSBub3Qg
aGF2aW5nIEpTIGdldHRlciAvIHNldHRlciBjYWxscyBzaW5jZSBzdGFjay1wb2ludGVyIGlzCisg
ICAgICAgICAgICAvLyBjYWxsZWUtc2F2ZSByZWdpc3RlciBhbmQgaXQgaXMga2VwdCBiZXlvbmQg
Y2FsbHMuIEhvd2V2ZXIsIG91ciBKUyBleGVjdXRhYmxlIGNhbGwgZG9lcyBub3Qgc2F2ZSBzdGFj
ay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0aW5nIHN0YWNrLXBvaW50ZXIgYWZ0ZXIKKyAgICAg
ICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRlciBjYWxscy4gQnV0IHRoaXMgY291bGQgYmUgZGlm
ZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3RhY2stcG9pbnRlciwgYW5kIG1ha2VzIFBBQyB0YWdn
aW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8vIFRvIGVuc3VyZSBQQUMtdGFnZ2luZyB3b3JrLCB3
ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRlciB0byB0aGUgYXBwcm9wcmlhdGUgb25lLgorICAg
ICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB9CisKKyAgICBzdGF0ZS5wcmVzZXJ2ZWRS
ZXVzZWRSZWdpc3RlclN0YXRlID0KKyAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVn
aXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNr
U3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAgCiAgICAgaWYgKGNhc2VzLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIHVubGlrZWx5LCBidXQgd2UgbWFrZSBpdCBsZWdhbCBh
bnl3YXkuCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuanVtcCgpKTsK
QEAgLTY5MCw3ICs3NjgsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNj
ZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzID0gbnVsbHB0cjsKICAgICBE
aXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmc7
Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBo
YXNKU0dldHRlclNldHRlckNhbGwpIHsKKyAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdp
c3RlcnNJZkV4Y2VwdGlvbigpICYmIGRvZXNKU0dldHRlclNldHRlckNhbGxzKSB7CiAgICAgICAg
IC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLgogICAgICAgICAvLyBOb3RlIHRoYXQgdGhp
cyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gZG9pbmcgZ2VuZXJpY1Vud2luZCBmcm9tIGEg
cHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4KICAgICAgICAgLy8gTm90ZSBhbHNvIHRoYXQgdGhpcyBp
cyBub3QgcmVhY2hhYmxlIGZyb20gY3VzdG9tIGdldHRlci9zZXR0ZXIuIEN1c3RvbSBnZXR0ZXIv
c2V0dGVycyB3aWxsIGhhdmUgCkBAIC03MzAsNiArODA4LDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9jCiAgICAgICAgIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyA9IHN0YXRl
LmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZygpOwogICAgIH0KIAorICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgZmFpbHVyZS5saW5rKCZqaXQpOwor
ICAgICAgICAvLyBJbiBBUk02NCwgd2UgZG8gbm90IHB1c2ggYW55dGhpbmcgb24gc3RhY2sgc3Bl
Y2lhbGx5LgorICAgICAgICAvLyBTbyB3ZSBjYW4ganVzdCBqdW1wIHRvIHRoZSBzbG93LXBhdGgg
ZXZlbiB0aG91Z2ggdGhpcyB0aHVuayBpcyBjYWxsZWQgKG5vdCBqdW1wZWQpLgorICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHRhaWwgY2FsbCB0byB0aGUgdGh1bmsgd2hpY2ggY2FsbHMgdGhl
IHNsb3cgcGF0aCBmdW5jdGlvbi4KKyAgICAgICAgLy8gQW5kIHdlIHNob3VsZCBlbGltaW5hdGUg
SUMgc2xvdy1wYXRoIGdlbmVyYXRpb24gaW4gQmFzZWxpbmVKSVQuCisgICAgICAgIGppdC5mYXJK
dW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICB9CisKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2Rl
QmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAg
ICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03MzksOSArODI2
LDEyIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBzdWNjZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAK
LSAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAg
IGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIEFTU0VSVChzdGF0
ZS5zdWNjZXNzLmVtcHR5KCkpOworICAgIGVsc2UgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmso
c3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZh
aWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgfQogICAgIAogICAg
IGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVy
YXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIgZm9yICIsIGxpc3REdW1wKGNhc2VzKSwgIlxu
Iik7CkBAIC03NDksMzUgKzgzOSwyMSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3Jw
aGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZSA9IEZJTkFMSVpF
X0NPREVfRk9SKAogICAgICAgICBjb2RlQmxvY2ssIGxpbmtCdWZmZXIsIEpJVFN0dWJSb3V0aW5l
UHRyVGFnLAogICAgICAgICAiJXMiLCB0b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZvciAiLCAqY29k
ZUJsb2NrLCAiICIsIHN0dWJJbmZvLmNvZGVPcmlnaW4sICIgd2l0aCByZXR1cm4gcG9pbnQgIiwg
c3VjY2Vzc0xhYmVsLCAiOiAiLCBsaXN0RHVtcChjYXNlcykpLmRhdGEoKSk7Ci0KLSAgICBib29s
IGRvZXNDYWxscyA9IGZhbHNlOwotICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKLSAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpCi0gICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+
ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOwotICAgIAotICAgIG1fc3R1YlJvdXRpbmUgPSBj
cmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxz
VG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25z
RXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7Ci0g
ICAgbV93YXRjaHBvaW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwotICAgIGlmICgh
c3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2Vz
ID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1Jl
ZmVyZW5jZXMpKTsKLSAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAg
Ci0gICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7Ci0gICAgbV9saXN0LnNocmlua1RvRml0KCk7
Ci0gICAgCi0gICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5kOwotICAg
IGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgp
IHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3Vs
dEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOwotICAgIAot
ICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIGNvZGUuY29kZSgp
KTsKKyAgICBzdHViID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgV1RGTW92ZShrZXlzKSwg
dm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2Nh
bGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0
ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpCisgICAgICAgICAgICB2bS5tX3No
YXJlZEpJVFN0dWJzLT5hZGQoU2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5KHN0dWJJbmZvLmJh
c2VHUFIsIHN0dWJJbmZvLnZhbHVlR1BSLCBzdHViSW5mby5yZWdzLnRoaXNHUFIsIHN0dWJJbmZv
Lm1fc3R1YkluZm9HUFIsIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsIHN0dWIuZ2V0KCkpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CiB9
CiAKLXZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoKQordm9pZCBQb2x5bW9ycGhp
Y0FjY2Vzczo6YWJvdXRUb0RpZShWTSYgdm0pCiB7CiAgICAgaWYgKG1fc3R1YlJvdXRpbmUpCi0g
ICAgICAgIG1fc3R1YlJvdXRpbmUtPmFib3V0VG9EaWUoKTsKKyAgICAgICAgbV9zdHViUm91dGlu
ZS0+YWJvdXRUb0RpZSh2bSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCAyOTIw
MzI2ZGNjOTE1NDc0YjNmMWVlYjdmNzI1ZTZhYjM0YWVjYjQxLi5mOWY4Y2JmMGQ1NTk4ZTFmMWVm
MjMwMWI0NThmYmFkYjAzMzQ0ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMTQxLDEwICsxNDEsMTAgQEAgY2xhc3Mg
UG9seW1vcnBoaWNBY2Nlc3MgewogICAgIC8vIFdoZW4gdGhpcyBmYWlscyAocmV0dXJucyBHYXZl
VXApLCB0aGlzIHdpbGwgbGVhdmUgdGhlIG9sZCBzdHViIGludGFjdCBidXQgeW91IHNob3VsZCBu
b3QgdHJ5CiAgICAgLy8gdG8gY2FsbCB0aGlzIG1ldGhvZCBhZ2FpbiBmb3IgdGhhdCBQb2x5bW9y
cGhpY0FjY2VzcyBpbnN0YW5jZS4KICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENhc2Vz
KAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiwgMj4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwg
Mj4pOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlKAotICAgICAgICBjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAgY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIFJlZjxBY2Nlc3NDYXNlPik7CiAgICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBy
ZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICAK
QEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8gb3B0
aW1pemF0aW9uIHRvIHRoZW4gYXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBhZ2FpbiBkdXJpbmcg
dGhlIGZpeHBvaW50LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wgcHJvcGFn
YXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OwogCi0gICAgdm9pZCBhYm91dFRvRGllKCk7
CisgICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BDKHZvaWQqIHBjKSBjb25zdApAQCAtMTc5
LDcgKzE3OSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlOwogICAg
IAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gTGlz
dFR5cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlw
ZTsKICAgICAKICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9ja2VyJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0
dWJJbmZvPiYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwKQEAgLTE5Niw2ICsxOTYs
OCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAK
ICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21h
TW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNl
KQorICAgICAgICAsIG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJl
Z2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25l
ZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxj
dWxhdGVkQ2FsbFNpdGVJbmRleChmYWxzZSkKQEAgLTIyNSw4ICsyMjcsMTAgQEAgc3RydWN0IEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxK
U0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5r
SW5mb3M7CisgICAgYm9vbCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzIDogMTsKKyAgICBib29s
IG1fZG9lc0NhbGxzIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KENvZGVC
bG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAKICAgICB2b2lkIHJlc3Rv
cmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgsNyArMjUyLDcgQEAgc3Ry
dWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGNhbGN1
bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKIAogICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3QgUmVnaXN0
ZXJTZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBTcGlsbFN0YXRlIHByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVn
aXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNG
cm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBTcGlsbFN0YXRlJik7CiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3QgU3BpbGxT
dGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAK
aW5kZXggY2MyOTczYzk0ZTExNjJhMzg5ZTJlZjUwZWVhNmEzYjM0ZTc1ZmE5ZC4uNGJmNzgwZWQz
MTc2NmVkZTZiY2M1NjA0NDZhNTA3OWFjYmNjMTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcApAQCAtMzgsMTkg
KzM4LDE5IEBAIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2VzCiAgICAgbV92aWFQcm94eSA9IHZpYVBy
b3h5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25T
ZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3ND
YXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFj
Y2Vzc0NoYWluKQogewogICAgIEFTU0VSVCh0eXBlID09IExvYWQgfHwgdHlwZSA9PSBNaXNzIHx8
IHR5cGUgPT0gR2V0R2V0dGVyIHx8IHR5cGUgPT0gUmVwbGFjZSk7Ci0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVBy
b3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogUHJv
eHlhYmxlQWNjZXNzQ2FzZTo6flByb3h5YWJsZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAor
UmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJveHlhYmxlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBQcm94eWFi
bGVBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFBy
b3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKaW5kZXggZGMzOWUyNmNhMmY0YjJiN2FiYTEyYjVh
NTVmMzI2NjQ0MTBlZmE1Yy4uZTg0Mzg1Y2E3NWM5Zjc1MmU4ZThlMTZjZGRlMGFiY2FjN2JjYzRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFj
Y2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgUHJveHlhYmxlQWNjZXNzQ2Fz
ZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIAogICAgIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxT
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9uYWxTZXQuZ2V0KCk7IH0KIAot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0KCksCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBK
U0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgYm9vbCB2aWFQcm94eSA9IGZhbHNlLCBXYXRj
aHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwg
Q29tbWFQcmludGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB+UHJveHlhYmxlQWNjZXNzQ2FzZSgpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcAppbmRleCBjOGU2YmM2M2EzNmEzOWI4NDU4YjkwMGNiMmE1MmVmNGYxNTExMjBm
Li5kZTAyNWU3NGVkZDgyZmZlODYxYjczNzczMWQ1MGEyNDZjNDk5Yzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAgICAsIHByb3BlcnR5SXNJ
bnQzMihmYWxzZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2UpCiB7CisgICAgcmVncy50
aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1
cmVTdHViSW5mbygpCkBAIC0xMjAsMTEgKzEyMSwxMSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
OjpkZXJlZigpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBT
dHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSgpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjph
Ym91dFRvRGllKFZNJiB2bSkKIHsKICAgICBzd2l0Y2ggKG1fY2FjaGVUeXBlKSB7CiAgICAgY2Fz
ZSBDYWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSgpOworICAgICAg
ICB1LnN0dWItPmFib3V0VG9EaWUodm0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OlVuc2V0OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKQEAgLTEzOSw3
ICsxNDAsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKCkKIH0KIAogQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKLSAg
ICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFNb2RlLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gYWNj
ZXNzQ2FzZSkKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2Rl
IGVjbWFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBSZWZQdHI8QWNjZXNzQ2FzZT4g
YWNjZXNzQ2FzZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTE1NSw3ICsxNTYs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3ND
YXNlKAogICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAgICAgCiAg
ICAgICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBX
VEZNb3ZlKGFjY2Vzc0Nhc2UpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2Fz
ZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBhY2Nlc3NDYXNlLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVzdWx0
OiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTcwLDkgKzE3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9
IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwor
ICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBwcmV2
aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVCbG9j
aywgaWRlbnQsICp0aGlzKTsKKyAgICAgICAgICAgIGF1dG8gcHJldmlvdXNDYXNlID0gQWNjZXNz
Q2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7
CiAgICAgICAgICAgICBpZiAocHJldmlvdXNDYXNlKQogICAgICAgICAgICAgICAgIGFjY2Vzc0Nh
c2VzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzQ2FzZSkpOwogICAgICAgICAgICAgCkBAIC0yNzYs
NyArMjc3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRJbkJ5SUQo
Y29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6
SW5zdGFuY2VPZjoKLSAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKKyAgICAgICAgcmVz
ZXRJbnN0YW5jZU9mKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAq
dGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4ODI1NjhjMjZlYWQ2MmU0MGVhZTdm
MjcwODBmMDkyMWVkZWM3NjQ1Li4yZjZjYmEzMWJmZmJhYzRjMWMwYTJmOTUxODMyNmYyYzMzMDc3
NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaApAQCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsK
ICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNl
JiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25z
dCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2Jq
ZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLSAg
ICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+KTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayopOwogCiAgICAgdm9pZCBkZXJlZigp
OwotICAgIHZvaWQgYWJvdXRUb0RpZSgpOworICAgIHZvaWQgYWJvdXRUb0RpZShWTSYpOwogCiAg
ICAgREVDTEFSRV9WSVNJVF9BR0dSRUdBVEU7CiAKQEAgLTM0NywxNiArMzQ3LDI0IEBAIGNsYXNz
IFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJU
YWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9uOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb247CiAKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fY29kZVB0cjsKKyAgICBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKworICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZDb2RlUHRyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0
dWJJbmZvLCBtX2NvZGVQdHIpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dQ
YXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHVi
SW5mbywgc2xvd1BhdGhTdGFydExvY2F0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0
dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzOwogCi0gICAgR1BSUmVnIGJhc2VHUFI7Ci0gICAgR1BSUmVnIHZhbHVlR1BSOworICAgIEdQ
UlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyB2YWx1ZUdQUiB7IElu
dmFsaWRHUFJSZWcgfTsKICAgICB1bmlvbiB7CiAgICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAg
ICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwogICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CiAg
ICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAgICB9IHJlZ3M7CisgICAgR1BSUmVnIG1fc3R1Yklu
Zm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJS
ZWcgdmFsdWVUYWdHUFI7CiAgICAgLy8gRklYTUU6IFszMi1iaXRzXSBDaGVjayBpZiBTdHJ1Y3R1
cmVTdHViSW5mbzo6YmFzZVRhZ0dQUiBpcyB1c2VkIHNvbWV3aGVyZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA4YWRlYWQ1MGY0NTU2Y2ZmMjVlN2M3
Yzk5NzgzMDRkNDE3NzA5NzQ3Li40NzY1NGE3NmRiNWExMTNmMGZjYjZiZjY4YTNkMjJhY2JjNmEw
MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0x
NTQsNiArMTU0LDExIEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7
CiAgICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZnVu
Y3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CisKKyAgICB2b2lk
IGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBjYWxsKGFkZHJlc3MsIE9wZXJhdGlvblB0clRhZyk7CisgICAgfQogICAgIAogICAgIHZvaWQg
ZXhjZXB0aW9uQ2hlY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
bG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDk4MWU4NmNkN2RkYjAxY2E0OTU0M2I0ZTUzNzYwMDFi
ZTgxNjAxMjYuLjM4ODZjYjJiZGJiODNkYzc3Yjc3MjVlYWY1NzQxMjQ1NWVjMTFiOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAg
LTE4OCw2ICsxODgsOCBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdAogICAgIHN0ZDo6dHVwbGU8
QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKIH07CiAKKworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBK
dW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLApAQCAtMjYzLDYgKzI2NSw2NiBAQCBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgICAgIGZy
b20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRU
eXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRz
U2xvd1BhdGhJQ0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8
SnVtcFR5cGUsIFJlc3VsdFR5cGU+IHsKK3B1YmxpYzoKKyAgICBDYWxsUmVzdWx0QW5kQXJndW1l
bnRzU2xvd1BhdGhJQ0dlbmVyYXRvcigKKyAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9y
PEp1bXBUeXBlLCBSZXN1bHRUeXBlPihmcm9tLCBqaXQsIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQs
IHJlc3VsdCkKKyAgICAgICAgLCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAs
IG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcykKKyAg
ICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAsIG1fYXJndW1lbnRzKHN0ZDo6
Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICwgbV9zdHViSW5mbyhz
dHViSW5mbykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHNpemVfdC4u
LiBBcmd1bWVudHNJbmRleD4KKyAgICB2b2lkIHVucGFja0FuZEdlbmVyYXRlKFNwZWN1bGF0aXZl
SklUKiBqaXQsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+KQorICAgIHsK
KyAgICAgICAgdGhpcy0+c2V0VXAoaml0KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAgaml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mb0dQUik7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPFJlc3VsdFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUp
CisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRo
T3BlcmF0aW9uQWRkcmVzcywgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4u
Lik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlv
blR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1f
cmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAg
ICAgIHRoaXMtPnRlYXJEb3duKGppdCk7CisgICAgfQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVy
bmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIGZpbmFsCisgICAgeworICAgICAgICB1bnBhY2tBbmRH
ZW5lcmF0ZShqaXQsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3Rk
Ojp0dXBsZTxBcmd1bWVudHMuLi4+Pjo6dmFsdWU+KCkpOworICAgIH0KKworICAgIEdQUlJlZyBt
X3N0dWJJbmZvR1BSOworICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0
aW9uQWRkcmVzczsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxl
PEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1
YkluZm87Cit9OworCisKKwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgor
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwo
CisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBz
bG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGls
bFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVp
cmVtZW50LAorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQor
eworICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElD
R2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4u
Lj4+KGZyb20sIGppdCwgc3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFk
ZHJlc3MsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50
cy4uLik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlv
blR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAg
IEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1Bh
dGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRo
SUNDYWxsKGZyb20sIGppdCwgc3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlv
bkFkZHJlc3MsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDczZjkxMTRlYWY4
ODNjZWVmOWNhMDNiODRmMTZlZTY0NGU2ZDI4ZjguLmMzMDY2NjY1MDZhZjU1ODZjNjQxMTFiMThh
NjZiNTI5MjU1ZjVjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0xMDI2LDI0ICsxMDI2LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAog
ICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNl
OiB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKLSAgICAgICAgY2FjaGVk
R2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxs
LCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7
CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNl
KTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIApAQCAtMTA1MSw3ICsxMDYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxs
LCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwNjcs
MjcgKzEwNzksMzkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChO
b2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwotCiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
IH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6
Okp1bXAoKSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3Bp
bGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5q
c1ZhbHVlUmVncygpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CkBAIC0xMDk2LDcgKzEx
MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5v
ZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBl
KTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwogICAgICAgICBicmVhazsKQEAgLTExMTEsMTQgKzExMzUsMTkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2Rl
KQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAg
ICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7Ci0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKQEAgLTExMjgsMjAgKzExNTcsMzUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAg
ICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
KTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
LAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAg
ICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMTcwLDIyICsx
MjE0LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5v
ZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkK
IHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAg
ICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwotCiAgICAgICAgIEpT
VmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5KTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVl
UmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2so
bm9kZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTE5NCwyMCArMTI0MywzNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAg
ICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsK
IAogICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJl
Z3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3Ms
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkg
eworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwpAQCAtMTIzNiw5ICsxMzAwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UsIFBheWxv
YWRXb3JkKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIApAQCAtMTI0OCwxNCArMTMxOCwyNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNl
cHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgp
KTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJl
c3VsdFJlZ3MpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAK
LSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBnZW4uc2xvd1BhdGhK
dW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAotICAgICAgICBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAg
ICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsK
KyAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzU2MSw5ICszNjQy
LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5v
ZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IEdldFByaXZhdGVOYW1lKTsKICAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgp
ID09IFN5bWJvbFVzZSk7Ci0gICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwg
MSkpOwogCisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVl
UmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5v
ZGUsIDEpKTsKKwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CkBAIC0zNTc0LDE0ICszNjY1LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJh
c2UpKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFt
ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3VsdC5yZWdzKCkp
OworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisg
ICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFr
ZVNsb3dQYXRoQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICBhdXRvIG1ha2VTbG93UGF0aElD
Q2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgK
KyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplLAorICAgICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1
YkluZm9HUFIsCisgICAgICAgICAgICAgICAgYmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
cHJvcGVydHkucGF5bG9hZEdQUigpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQ
YXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwKICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksCkBAIC0zNTg5LDggKzM2ODYsOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBi
YXNlLCBKUwogICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoID0gYmFzZUlzS25vd25DZWxsCi0gICAgICAgID8gbWFrZVNsb3dQYXRoQ2FsbChD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCi0gICAgICAgIDogbWFr
ZVNsb3dQYXRoQ2FsbChiYXNlKTsKKyAgICAgICAgPyBtYWtlU2xvd1BhdGhJQ0NhbGwoQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXlsb2FkR1BSKCkpKQorICAgICAgICA6IG1ha2VTbG93
UGF0aElDQ2FsbChiYXNlKTsKIAogICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAg
LTM2MDIsMjggKzM2OTksNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZh
dGVOYW1lQnlJZChOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2Rl
LCAwKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAg
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6
Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKyAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxl
cjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIE9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7
CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQog
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7
CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRU
b1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9H
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzcyMiwyOSAr
MzgzMSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9k
ZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJ
ZChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2Vu
ZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAogICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCiAgICAg
YXV0byBwdXRLaW5kID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBQ
dXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJlY3RQcml2YXRl
RmllbGRTZXQ7Ci0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBw
dXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
c3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+
Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVn
cygpOwotCiAgICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNw
ZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwgYnJhbmRHUFIpOwpAQCAtMzc1OCwxNiArMzg3
OCwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9k
ZSogbm9kZSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
YmFzZVJlZ3MpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5v
UmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVn
cywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0Nh
bGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9w
dGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3Vs
dCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdz
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0
LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNzc4LDkgKzM5MDYsMTUgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAg
ICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAK
QEAgLTM3OTIsMTYgKzM5MjYsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFBy
aXZhdGVCcmFuZChOb2RlKiBub2RlKQogCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFBy
aXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVy
dHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKLSAgICAgICAgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
SUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5k
T3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZh
dGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTE5LDIyICs0MDYxLDI3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRH
UFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3Rv
dHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNj
cmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2Up
CiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUo
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BS
LCBzY3JhdGNoMkdQUiwKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJ
VCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCks
IHJlc3VsdEdQUiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVn
cy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAg
ICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8
IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
c2xvd0Nhc2UpOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBwcm90b3R5cGVSZWdzKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVn
cyk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAt
Mzk0NSw2ICs0MDkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkg
PT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgIApAQCAtMzk1MiwxMyArNDEwMCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAg
ICAgICAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
ICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1
ZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHByb3RvdHlwZS5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIg
PSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9y
Q2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVH
UFIpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgY29tcGls
ZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVS
ZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNj
cmF0Y2gyR1BSKTsKICAgICAgICAgCiAgICAgICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM5NjgsMTIgKzQxMjEsMTggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAKKyAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
dmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzID0gcHJv
dG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0zOTg5LDcgKzQxNDgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgIAogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlw
ZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVS
ZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcs
IHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVn
cywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52
YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAg
IGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMzAxOSw0NiArMTMx
NzgsNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvSW5kZXhTdHJpbmcoTm9kZSog
bm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBu
b2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBz
dHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5n
cHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNo
ZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3Jh
dGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwg
bm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQ
dXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1w
KCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAot
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90
RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVj
bWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAK
LSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVS
ZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRp
cmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9k
ZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ2OTAsMTggKzE0ODY3LDIwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlk
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQs
IEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNw
aWxsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhl
IHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVl
UmVncywgZmFsc2UpOworICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAg
fQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRp
ZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJl
Z3MsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAg
ICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKQEAgLTE0NzExLDkgKzE0ODkwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
SlNWYWx1CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVl
UmVncywKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZp
ZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRk
UHV0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggNTJlMWU4Y2Q1MmEwNDg2ZTYxMGM1YzQ5MGMzYmEwYTkxN2RjODlm
My4uM2M5ZjRkNWNmNzYyMzJlYjgxMzc1NDhiYmM1NTUzN2Q5MzQ1MGY3MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTks
MTYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRh
Y2hlZChOb2RlKik7CiAKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NU
eXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxs
KTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUs
IEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGls
bFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChD
b2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7
Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGls
ZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRH
UFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29t
cGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgp
KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQ
UlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJS
ZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0
VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29u
c3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wTGlzdCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQ
UiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0
ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwg
R1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJl
c3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0
aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBj
b21waWxlRGVsZXRlQnlJZChOb2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5v
ZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0
RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdz
IHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6
SnVtcCgpKTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFs
dWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRH
UFQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNo
MkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsK
ICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0
YW5jZU9mQ3VzdG9tKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5j
ZShOb2RlKik7CkBAIC05NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9u
KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENh
bGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFk
ZHJlc3Mub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8Cisg
ICAgICAgICFGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZv
aWQ+CisgICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zm
c2V0KSk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhD
YWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIg
Q29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4KQEAgLTk4OCw2ICsxMDA4LDEzIEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rp
b24pOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAg
ICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5h
bENhbGwoKTsKQEAgLTEwMTAsNiArMTAzNywxMyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAg
ICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3Vs
dChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IHJlc3VsdCk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJl
c3VsdChjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBHUFJSZWcg
cmVzdWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENh
bGwoZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYjU3YzM3YWEwNWRkNDkwOTFjN2ZhMzY1MGY4YmJm
Zjc1MjM3ZjYzOS4uYzFiNWQwNjFjM2M1YTRhNjUwNmNiN2M2MGVlMjk2N2ZjMjE2YTY2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCkBAIC0xNjgsMTUgKzE2OCwxNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNW
YWx1ZShFZGdlIGVkZ2UsIEdQUlJlZyYgdGFnR1BSLCBHUFJSZWcmIHBheWxvYWRHUFIsCiAgICAg
fQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3Jp
Z2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGls
bFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lz
dGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5SWQob3Jp
Z2luLCBiYXNlLnRhZ0dQUigpLCBiYXNlLnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpLCBy
ZXN1bHQucGF5bG9hZEdQUigpLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlw
ZSk7CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9h
ZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BS
LCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCi0gICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVz
dWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwKKyAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQ
UlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNz
VHlwZSB0eXBlKQogeworICAgIFVOVVNFRF9QQVJBTShzdHViSW5mb0dQUik7CiAgICAgLy8gVGhp
cyBpcyBhIGhhY2t5IGZpeCBmb3Igd2hlbiB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGRlY2lkZXMg
dG8gYWxpYXMgdGhlIGJhc2UgcGF5bG9hZCB3aXRoIHRoZSByZXN1bHQgdGFnLiBUaGlzIG9ubHkg
aGFwcGVucwogICAgIC8vIGluIHRoZSBjYXNlIG9mIEdldEJ5SWRGbHVzaC9HZXRCeUlkRGlyZWN0
Rmx1c2gsIHdoaWNoIGhhcyBhIHJlbGF0aXZlbHkgZXhwZW5zaXZlIHJlZ2lzdGVyIGFsbG9jYXRp
b24gc3RvcnkgYWxyZWFkeSBzbyB3ZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvCiAgICAgLy8gdHJp
cCBvdmVyIG9uZSBtb3ZlIGluc3RydWN0aW9uLgpAQCAtMjAwLDggKzIwMSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiAgICAgCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09T
UkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVn
cyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIHR5cGUpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywg
aWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBh
eWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBJ
bnZhbGlkR1BSUmVnLCB0eXBlKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CiAgICAgCkBAIC0yMjgsMTUgKzIyOSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKAogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoCi0gICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwg
R1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXls
b2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwKKyAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIs
IEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRD
b21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQogeworICAgIFVOVVNFRF9QQVJBTShz
dHViSW5mb0dQUik7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRS
ZWdpc3RlcnMoKTsKICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVj
b3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNv
ZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0
VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwg
YmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUikp
OworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQ
Uk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5
bG9hZEdQUiksIEludmFsaWRHUFJSZWcpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KG1faml0KTsKICAgICAKQEAgLTIzNDEsOCArMjM0Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncy50YWdHUFIoKSkpOwogCiAgICAgICAgICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdz
KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMs
CisgICAgICAgICAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgSW52
YWxpZEdQUlJlZyk7CiAKICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNTdHJpbmcpKQogICAgICAgICAgICAgICAg
IGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKQEAgLTM0MDUsNyArMzQw
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50
aWMsIEludmFsaWRHUFJSZWcsIGJhc2VHUFIsIEludmFsaWRHUFJSZWcsIHRoaXNHUFIsIHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsK
KyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMs
IEludmFsaWRHUFJSZWcsIGJhc2VHUFIsIEludmFsaWRHUFJSZWcsIHRoaXNHUFIsIHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICB9IGVsc2UgewpAQCAt
MzQyNSw3ICszNDI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChi
YXNlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwodGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BS
LCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgbm90Q2VsbExpc3QpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHRoaXNUYWdH
UFIsIHRoaXNQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIEludmFs
aWRHUFJSZWcsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI5MTE4YjYyZTg3ZDk3MGFjNTQ2
MWY2M2JkM2MzODBmYjhiMDEyNjAuLjMzNmIxYTk1ZDI0NmU3MTk0YTc3NDEwMjY1M2MzMjlkMzQz
NGY1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtMTQ3LDEyICsxNDcsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlw
ZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9y
aWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBl
KQogewotICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCks
IGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRC
eUlkKG9yaWdpbiwgYmFzZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBzdHViSW5mb0dQUiwgaWRlbnRp
Zmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBB
Y2Nlc3NUeXBlIHR5cGUpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJl
Y29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChj
b2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMTYwLDI2ICsxNjAsMzYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcKICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lz
dGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAgICAgICAg
IHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJlZ2lzdGVy
cy5zZXQocmVzdWx0R1BSLCBmYWxzZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZh
bHNlKTsKICAgICB9CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRp
ZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQ
UiksIHR5cGUpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BS
LCB0eXBlKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklU
Q29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQ
YXRoVGFyZ2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dl
dEJ5SWRGdW5jdGlvbih0eXBlKSwKLSAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1Yklu
Zm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlk
RnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVx
dWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7Cisg
ICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBz
bG93UGF0aFRhcmdldCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhp
cyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwg
R1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQp
CiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5k
R2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0
cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwpAQCAtMTg3LDIwICsxOTcsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIKICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lz
dGVycy5zZXQodGhpc0dQUiwgZmFsc2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQ
UiwgZmFsc2UpOworICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAg
ICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIAogICAgIEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAg
SlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KHRoaXNHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAg
IEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyh0aGlzR1BSKSwgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAgICAgICBEb250U3BpbGwsIEV4Y2Vw
dGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZp
ZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRT
cGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNH
UFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlv
bkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlm
aWVyLnJhd0JpdHMoKSk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhp
cyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0yNjgxLDE2ICsyNzAxLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOwotICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSkpOwotCisgICAgICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIHByb3BlcnR5KTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAorICAgICAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworCiAgICAgICAgICAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAg
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5l
cmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFt
LT5zaXplKCkpOwogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMt
PnVzZWRSZWdpc3RlcnMoKTsKQEAgLTI3MDAsOCArMjcyNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0
eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRH
UFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNTdHJpbmcpKQogICAgICAgICAg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKQEAgLTI3MTIs
MTEgKzI3MzksMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
CiAgICAgICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAg
ICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAg
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzk4NCw5ICs0
MDE5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAg
IGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkg
eworICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAg
ICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9
IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlz
VmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKQEAgLTM5OTQsMTQgKzQwMzYsMjEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3Vs
dEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcExpc3Qo
KSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAg
c3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1Zh
bHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC00MDEzLDcgKzQwNjIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxs
TGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKSk7
CiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpT
VmFsdWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1Zh
bHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExp
c3QpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODE2N2Zh
M2QwNTJjMTBiZGYxYjZmNjQ5MGNlMzU5MDdkYWQ4YmYzNS4uM2E2MjBmNDcyNGZkMmNhYjI5OGRk
NTMwODE5ZmYyNGE4M2FiOGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtMzk3OCw2ICszOTc4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjps
YXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDog
MDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBA
IC0zOTk5LDEwICs0MDAwLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFt
cy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBn
ZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3Vs
dEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBub3RDZWxsOwogICAgICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQwMTYsMTMg
KzQwMTgsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBp
ZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5r
KCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xv
d1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1
YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9y
dFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDExMCw2ICs0
MTI0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JF
eGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC00MTMwLDEwICs0MTQ1LDExIEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzBdLmdw
cigpOwogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0gcGFyYW1zWzFdLmdwcigpOworICAg
ICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAg
ICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCi0gICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhicmFuZEdQUikpOworICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklU
VHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vz
c1R5cGUsCisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICBp
ZiAoIWJhc2VJc0NlbGwpCkBAIC00MTU5LDEzICs0MTc1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAg
ICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFs
aWRHUFJSZWcsCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBi
cmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGw7CisgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZhbGlk
R1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNl
R1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBA
IC00NTE2LDYgKzQ1NDQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywg
VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAvLyBGSVhNRTogSWYg
dGhpcyBpcyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9s
YXRpbGUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUyODQ4CkBAIC00NTM4LDEwICs0NTY3LDEyIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVyIGNhbGwgSUNzIGdlbmVyYXRlZCBi
eSB0aGUgUHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJ
bmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFs
aWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQdXRC
eUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSks
Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUklu
Zm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAorICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgR1BSSW5mbzo6
cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCiAgICAgICAgICAgICAgICAgICAg
IHB1dEtpbmQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRo
KGppdCk7CkBAIC00NTUzLDEyICs0NTg0LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhC
ZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJSZWcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1z
WzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwg
aWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW5lcmF0b3It
PnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5m
b0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBh
cmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBd
LmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01MjM5LDYgKzUyODIsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAgICAgUmVm
UHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQ
YXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtNTI1OSwxMCArNTMwMywx
MSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBw
YXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFy
YW1zWzJdLmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
SW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZTo6R2V0QnlWYWwsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBK
U1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJv
cGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9w
ZXJ0eUlzU3RyaW5nOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJv
cGVydHlJc0ludDMyID0gcHJvcGVydHlJc0ludDMyOwpAQCAtNTI4MCwxMyArNTMyNSwyNSBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlz
U2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQ
YXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51
bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRv
ci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxP
cHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51
bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNs
b3dQYXRoQ2FsbCk7CkBAIC01ODM2LDcgKzU4OTMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gMTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDIgOiAxOwogCiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAt
NTg1Niw5ICs1OTEzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpOwogICAgICAgICAgICAg
ICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgICAgIGF1
dG8gc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICAgICAgYXV0
byBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDEpIDogSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZS5ncHIoKSAhPSByZXR1cm5HUFIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
LmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGJhc2UuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVy
bkdQUiAhPSBzY3JhdGNoR1BSKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKQEAgLTU4NzQsNyArNTkzMyw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
a2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gcGFyYW1zWzJdLmdwcigpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5i
cmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CkBAIC01
ODg0LDE5ICs1OTQzLDIwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICBpZiBjb25z
dGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2Ny
YXRjaEdQUik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRl
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBK
U1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJ
bmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChq
aXQpOwotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQ
YXRoKApAQCAtNTkwNSwxMiArNTk2NSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0
aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1
YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0
aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQ
YXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjI0Miw4ICsxMjMxNCw4IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNl
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjps
YXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEg
OiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRp
b25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBh
dGNocG9pbnQpOwpAQCAtMTIyNjAsMTAgKzEyMzMyLDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMg
PQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0
aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdw
U2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVy
YXRvciA9IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1z
WzBdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJh
dGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9u
ZSA9IGppdC5sYWJlbCgpOwpAQCAtMTIyNzQsMTIgKzEyMzQ4LDI0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1w
KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5n
cHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmll
ci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3
Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwg
cGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0
U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjQ4Niw3ICsx
MjU3Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3Rlcihwcm90b3R5cGUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9u
b3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
cikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjps
YXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQt
Pm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAz
IDogMjsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVw
OjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIApAQCAtMTI1MDIsNiAr
MTI1ODgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyBw
cm90b3R5cGVHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwogICAgICAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBh
cmFtcy5ncFNjcmF0Y2goMikgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lSnVtcDsKICAgICAgICAgICAgICAg
ICBpZiAoIXZhbHVlSXNDZWxsKSB7CkBAIC0xMjUyMyw4ICsxMjYxMCw4IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6
Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwg
c2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBl
OjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFs
dWVHUFIsIHByb3RvdHlwZUdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgICAg
ICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90b3R5cGVJc09iamVjdCk7CiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjUzNywxMiArMTI2MjQs
MjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXph
dGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVu
Y3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgdmFsdWVHUFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0
aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTM5ODYsNiArMTQwODUsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwg
d2UgbWlnaHQgZ2V0IHNvbWUgcGVyZm9ybWFuY2UgYm9vc3QgaWYgd2UgY2xhaW0gdGhhdCBpdAog
ICAgICAgICAvLyBjbG9iYmVycyB2b2xhdGlsZSByZWdpc3RlcnMgbGF0ZS4gSXQncyBub3QgbmVj
ZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgdGhvdWdoLCBzaW5jZSB0aGUKQEAgLTE0MDE0LDEwICsx
NDExNCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIHRoZSBj
YWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxl
RXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAg
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3Jl
YXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0
MDMwLDEyICsxNDEzMiwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5j
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNs
b3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTQwNjAsOCArMTQx
NzQsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRT
b21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90
Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtMTQwODMsMTAgKzE0MTk3LDEyIEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGlu
ZGV4LgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRp
b25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVu
dGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3By
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwg
SlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDA5OSwxMiArMTQy
MTUsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25G
dW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihp
ZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRp
b25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBw
YXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sy
XS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygp
KSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRp
Zmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1Bh
dGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsLmNwcAppbmRleCAyYWRkNDk0YzUzMmFhZWE4ZWUzZDExY2UxMjI3ODExODkz
NTZhZDRmLi5iNGU0NzU4ZTU4ZmIxZTc5MjZjNmEwNzE4MzczMTU4OTg3Yzc2ZDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IHdvcmRTaXplID0gODsKIAogU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxs
Q29udGV4dCgKLSAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKQorICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBH
UFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlcikK
ICAgICA6IG1faml0KGppdCkKICAgICAsIG1fbnVtQXJncyhudW1BcmdzKQogICAgICwgbV9yZXR1
cm5SZWdpc3RlcihyZXR1cm5SZWdpc3RlcikKQEAgLTYzLDYgKzYzLDggQEAgU2xvd1BhdGhDYWxs
Q29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVn
aXN0ZXJzLm1lcmdlKG1fYXJndW1lbnRSZWdpc3RlcnMpOwogICAgIGlmIChyZXR1cm5SZWdpc3Rl
ciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJz
LnNldChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaWYgKGluZGlyZWN0Q2FsbFRhcmdl
dFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25S
ZWdpc3RlcnMuc2V0KGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdD
b252ZW50aW9uUmVnaXN0ZXJzLmZpbHRlcih1c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZDYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycyA9CkBAIC0xMTQsNyAr
MTE2LDEyIEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6On5TbG93UGF0aENhbGxDb250ZXh0KCkKIAog
U2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdAogewotICAgIHJldHVybiBT
bG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdp
c3RlcnMsIG1fb2Zmc2V0KTsKKyAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZl
U2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCwgMCk7Cit9CisK
K1Nsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKSBjb25zdAoreworICAgIHJldHVybiBTbG93UGF0aENh
bGxLZXkobV90aHVua1NhdmVTZXQsIG51bGxwdHIsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zm
c2V0LCBhZGRyZXNzLm9mZnNldCk7CiB9CiAKIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250
ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRh
cmdldCkKQEAgLTEzMyw2ICsxNDAsMjIgQEAgU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRl
eHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK1Nsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtl
Q2FsbChWTSYgdm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsVGFyZ2V0KQoreworICAgIFNs
b3dQYXRoQ2FsbEtleSBrZXkgPSBrZXlXaXRoVGFyZ2V0KGNhbGxUYXJnZXQpOworICAgIFNsb3dQ
YXRoQ2FsbCByZXN1bHQgPSBTbG93UGF0aENhbGwobV9qaXQuY2FsbChKSVRUaHVua1B0clRhZyks
IGtleSk7CisKKyAgICBtX2ppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgW3Jlc3VsdCwgJnZtXSAo
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB0aHVuayA9CisgICAgICAgICAgICAgICAgdm0uZnRsVGh1bmtz
LT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwgcmVzdWx0LmtleSgpKTsKKworICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxsKCksIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5r
UHRyVGFnPih0aHVuay5jb2RlKCkpKTsKKyAgICAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiBz
dGF0ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIGlmIChjb2RlT3JpZ2luKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKaW5kZXggNzBkMjg4ZTAz
ZjFkOGQ4MWYyNzdmNmI4MjE3YWM5ZjNmYTgwYzEyYS4uZDZmMjg1NDlhMzFiMzM1ZGQ1YjU3NTlh
Y2UyMTBmNDgyYTgzMWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQ
YXRoQ2FsbC5oCkBAIC01NCwxNSArNTQsMTcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsIHsKIC8vIFRo
aXMgd2lsbCBiZSBhbiBSQUlJIHRoaW5neSB0aGF0IHdpbGwgc2V0IHVwIHRoZSBuZWNlc3Nhcnkg
c3RhY2sgc2l6ZXMgYW5kIG9mZnNldHMgYW5kIHN1Y2guCiBjbGFzcyBTbG93UGF0aENhbGxDb250
ZXh0IHsKIHB1YmxpYzoKLSAgICBTbG93UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRS
ZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5S
ZWdpc3Rlcik7CisgICAgU2xvd1BhdGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0
ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgflNsb3dQYXRoQ2Fs
bENvbnRleHQoKTsKIAogICAgIC8vIE5PVEU6IFRoZSBjYWxsIHRoYXQgdGhpcyByZXR1cm5zIGlz
IGFscmVhZHkgZ29pbmcgdG8gYmUgbGlua2VkIGJ5IHRoZSBKSVQgdXNpbmcgYWRkTGlua1Rhc2so
KSwKICAgICAvLyBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB5b3UgdG8gbGluayBpdCB5b3Vyc2Vs
Zi4KICAgICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIENDYWxs
SGVscGVyczo6QWRkcmVzcyk7CiAKIHByaXZhdGU6CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdp
dGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdDsK
KyAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mp
IGNvbnN0OwogICAgIAogICAgIFJlZ2lzdGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAg
UmVnaXN0ZXJTZXQgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVyczsKQEAgLTgyLDcgKzg0LDcg
QEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiB7CiAgICAgU2xvd1BhdGhDYWxsIGNhbGw7
CiAgICAgewotICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVy
cywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIpOworICAgICAg
ICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2Yu
Li4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oYXJndW1lbnRzLi4u
KTsKICAgICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIGZ1bmN0aW9uKTsKICAgICB9
CkBAIC0xMTcsNiArMTE5LDQ4IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgICAg
ICByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LAorICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMp
Cit7CisgICAgU2xvd1BhdGhDYWxsIGNhbGw7CisgICAgeworICAgICAgICBTbG93UGF0aENhbGxD
b250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBl
cykgKyAxLCByZXN1bHRHUFIsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuc2V0
dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oZnVuY3Rp
b24sIGFyZ3VtZW50cy4uLik7CisgICAgICAgIGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgZnVuY3Rpb24ub2Zmc2V0
KSk7CisgICAgfQorICAgIGlmIChleGNlcHRpb25UYXJnZXQpCisgICAgICAgIGV4Y2VwdGlvblRh
cmdldC0+YXBwZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2sodm0pKTsKKyAgICByZXR1cm4gY2Fs
bDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2Fs
bCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRHUFIsCisgICAgQXJndW1lbnRUeXBlcy4u
LiBhcmd1bWVudHMpCit7CisgICAgaWYgKGNhbGxTaXRlSW5kZXgpIHsKKyAgICAgICAgaml0LnN0
b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUlu
ZGV4LmJpdHMoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVn
aXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisgICAg
fQorICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKHZtLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGV4Y2Vw
dGlvblRhcmdldCwgZnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJndW1lbnRzLi4uKTsKK30KKworQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihTdGF0ZSYsIENvZGVPcmlnaW4p
OworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNh
bGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRk
cmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMp
Cit7CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oCisgICAgICAgIHN0YXRlLnZtKCksIHVzZWRS
ZWdpc3RlcnMsIGppdCwgY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oc3RhdGUsIGNvZGVPcmln
aW4pLCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLAorICAgICAgICByZXN1bHQsIGFyZ3VtZW50
cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENh
bGxLZXkuY3BwCmluZGV4IDJkMzA2YzYyMDMzYTgzOTA4ZTZmY2M2YWI5ZTZlODRjZmU4MWVjYWEu
LmM0ZTdlODI2MWZkNDczNmIxZDMzNzJiZWY1NTEzZWZlNWFhMzlhODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB2b2lkIFNsb3dQYXRoQ2Fs
bEtleTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgiPHVz
ZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0
LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFk
ZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywg
Ij4iKTsKKyAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJz
LCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgaW5kaXJlY3RPZmZzZXQgPSAiLCBtX2luZGly
ZWN0T2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJl
Z2lzdGVycywgIj4iKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKaW5kZXggMDg2YWUwMGVl
NTg1NTJjN2NlODNkNzA1MjBlNzYxMzg0MmJkZDMzZC4uMGNlNjFmMjZiYTk1MGI5M2ZjM2E4ZWMx
OWI1Njc0MWFlMTAwMGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGxLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbEtleS5oCkBAIC01MSwxMSArNTEsMTIgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5
IHsKICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiBzZXQsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCwgY29uc3QgUmVn
aXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzLAotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0KQor
ICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0LCBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KQogICAgICAg
ICA6IG1fdXNlZFJlZ2lzdGVycyhzZXQpCiAgICAgICAgICwgbV9jYWxsVGFyZ2V0KGNhbGxUYXJn
ZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKQogICAgICAgICAsIG1fYXJndW1lbnRSZWdp
c3RlcnMoYXJndW1lbnRSZWdpc3RlcnMpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAg
ICAgICAsIG1faW5kaXJlY3RPZmZzZXQoaW5kaXJlY3RPZmZzZXQpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTYzLDEwICs2NCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bFRhcmdldDsgfQogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fYXJndW1lbnRSZWdpc3RlcnM7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBpbnQzMl90IGluZGlyZWN0T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpcmVjdE9mZnNldDsgfQogICAgIAogICAgIFNsb3dQYXRo
Q2FsbEtleSB3aXRoQ2FsbFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxU
YXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3Rl
cnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCkpOworICAgICAg
ICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJn
dW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCksIGluZGlyZWN0T2Zmc2V0KCkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTc2LDEzICs3OCwxMSBA
QCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShFbXB0
eVZhbHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RW1wdHlW
YWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgU2xv
d1BhdGhDYWxsS2V5KERlbGV0ZWRWYWx1ZVRhZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMo
UmVnaXN0ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsK
ICAgICB9CiAgICAgCkBAIC05MywxOCArOTMsMjAgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMgPT0gb3RoZXIubV91c2VkUmVn
aXN0ZXJzCiAgICAgICAgICAgICAmJiBtX2NhbGxUYXJnZXQgPT0gb3RoZXIubV9jYWxsVGFyZ2V0
Ci0gICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKKyAgICAgICAgICAg
ICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0CisgICAgICAgICAgICAmJiBtX2luZGlyZWN0
T2Zmc2V0ID09IG90aGVyLm1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkg
KyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkg
KyBtX29mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJI
YXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29m
ZnNldCArIG1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVy
U2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1f
Y2FsbFRhcmdldDsKICAgICBSZWdpc3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwotICAgIHB0
cmRpZmZfdCBtX29mZnNldDsKKyAgICBwdHJkaWZmX3QgbV9vZmZzZXQgeyAwIH07CisgICAgaW50
MzJfdCBtX2luZGlyZWN0T2Zmc2V0IHsgMCB9OwogfTsKIAogc3RydWN0IFNsb3dQYXRoQ2FsbEtl
eUhhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IGRiZmVk
NDRkNWExMmFhZGRkMjc2YTkzMzEzM2MwYjM2Yzg2NjEzYWQuLmQ5MjAyYTNkNDE5ZTVjYjJhNTll
MzFmYmU4NWE0YWQ1M2JlNDk0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcigKICAgICBzYXZlQWxs
UmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKICAgICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2Ug
aG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5h
ZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5z
dG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1v
cnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZl
TGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMo
KSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwogCiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkBA
IC0yMDAsMTMgKzIwMCwyMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgICAgICBjdXJy
ZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0KICAgICAKLSAgICBqaXQucHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5z
dG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFj
cm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBq
aXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjEpOwor
ICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIxLCBBc3NlbWJseUhlbHBlcnM6OkFk
ZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkp
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIAotICAgIHJlZ2lzdGVy
Q2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3VtZW50UmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVy
U2V0IGRvbnRDbG9iYmVyID0ga2V5LmFyZ3VtZW50UmVnaXN0ZXJzKCk7CisgICAgaWYgKCFrZXku
Y2FsbFRhcmdldCgpKQorICAgICAgICBkb250Q2xvYmJlci5zZXQoR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBXVEZNb3ZlKGRvbnRDbG9iYmVyKSk7
CiAKLSAgICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0
clRhZyk7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgaWYgKGtleS5jYWxs
VGFyZ2V0KCkpCisgICAgICAgIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAg
IGVsc2UKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIGtleS5pbmRpcmVjdE9mZnNldCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAg
IGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5v
blJldHVybkdQUik7CiAgICAgaml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQ
UkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVy
YXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExU
aHVuayk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAg
ICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBr
ZXkuY2FsbFRhcmdldCgpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJGVEwgc2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3Ry
aW5nKGtleSkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCmluZGV4IDM1NGY5NTQ3YjRhYmYzMjg5NmQxY2ViNGVhMjAwZmJiNGE0
ZGVjY2QuLmJmOGEwODA0MGNlYzg3YjY0Zjc3YzM2YWVhZGJmZWQ5ZGU0MDI3NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5j
bHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIEFz
c2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbAogICAgICAgICBhdXRvIGNhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZk5lYXJDYWxsPEpJVENvbXBpbGF0aW9uUHRyVGFnPihjYWxsKTsKICAgICAgICAg
bGlua0J1ZmZlci5hZGRNYWluVGhyZWFkRmluYWxpemF0aW9uVGFzayhbPSwgJnZtXSAoKSB7CiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZp
cnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgKmluZm8pOwotICAgICAgICAgICAgaW5m
by0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5r
LCB2bSkpOworICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0
aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKICAgICAgICAgfSk7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2
OGIxMjEzZjZkMjRjNzBhZmI1MDMzMjBlYWE3MmQ4OWU3ZDg2YmU5Li5lOTA5NmI1NzczZjMyMTcz
MTY5ZTczZmFlMzQxMTE4ODY5ODk3ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKIAogICAgIC8vIGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRy
YWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgaW4gcmVnaXN0ZXIgb24gMzItYml0IGFy
Y2hpdGVjdHVyZXMuCiAgICAgLy8gZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFy
Z3VtZW50IHR5cGVzIHBhc3NlZCBvbiB0aGUgc3RhY2suCi0gICAgdGVtcGxhdGU8dW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
PgogICAgIHN0cnVjdCBBcmdDb2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAg
ICAgICAgIHsKQEAgLTIxOSw4ICsyMTksOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52
YWxpZEdQUlJlZyk7CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1
bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBm
LCB1bnNpZ25lZCBnPgotICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwg
YywgZCwgZSwgZiwgZz4mIG90aGVyKQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNp
Z25lZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1
bnNpZ25lZCBnLCB1bnNpZ25lZCBoPgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rp
b248YSwgYiwgYywgZCwgZSwgZiwgZywgaD4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAg
ICBncHJTb3VyY2VzID0gb3RoZXIuZ3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0
aW9ucyA9IG90aGVyLmdwckRlc3RpbmF0aW9uczsKQEAgLTIzMCw2NSArMjMwLDc0IEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jv
c3NEZXN0aW5hdGlvbnMgPSBvdGhlci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0g
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9u
KQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsg
MSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQ
UlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhp
cyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAg
ICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAg
ICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlv
bjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1G
UFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
cHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwg
bnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGlu
YXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
ICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3Vs
dC5mcHJTb3VyY2VzW251bUZQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1
bHQuZnByRGVzdGluYXRpb25zW251bUZQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmco
RlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3Vy
Y2VzW251bUNyb3NzU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5jcm9z
c0Rlc3RpbmF0aW9uc1tudW1Dcm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0Fy
ZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRy
YVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0Lmdw
clNvdXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5n
cHJEZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cyArIDEsIGV4dHJhUG9rZT4gcHVzaE5vbkFyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0
aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzICsgMSwgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQu
Z3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0
LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQ
UkFyZygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7
CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzICsgMSwgZXh0cmFQb2tlPiBhZGRHUFJFeHRyYUFyZygpCisgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFkZEdQUkV4dHJhQXJnKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlz
KTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAot
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNr
QXJnKEdQUlJlZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAg
ICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
ZGRTdGFja0FyZyhGUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJl
ZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Mg
KyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2Ug
KyAxPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAg
ICAgICB9CiAKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMzMxLDEyICszNDAs
MTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBj
YWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQg
Y3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWdu
ZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2ln
bmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkK
ICAgICB7CiAgICAgICAgIC8vIENsYW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBz
eW1ib2wgZm9yIEZQUlJlZy9HUFJSZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0
aGV5IGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1Zwog
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJn
dW1lbnRSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogCisg
ICAgICAgIFVOVVNFRF9QQVJBTShub25BcmdHUFJzKTsKKwogICAgICAgICBjdXJyZW50R1BSQXJn
dW1lbnQgKz0gZXh0cmFHUFJBcmdzOwogICAgICAgICBjdXJyZW50RlBSQXJndW1lbnQgLT0gbnVt
Q3Jvc3NTb3VyY2VzOwogICAgICAgICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRz
IikKQEAgLTM1MCwxNSArMzYxLDE1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+Ci0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWdu
ZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFy
ZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1l
bnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNp
Z25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQs
IGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSk7CisgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0
KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcs
IHBva2VPZmZzZXQpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWdu
ZWQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1l
bnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNp
Z25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5v
bkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBv
a2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVu
dEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsK
KyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVu
dEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICByZXR1cm4gIShwb2tlT2Zm
c2V0ICYgMSk7CiAgICAgfQogCkBAIC0zNzYsOCArMzg3LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogICAgIC8v
IEF2b2lkIE1TVkMgb3B0aW1pemF0aW9uIHRpbWUgZXhwbG9zaW9uIGFzc29jaWF0ZWQgd2l0aCBf
X2ZvcmNlaW5saW5lIGluIHJlY3Vyc2l2ZSB0ZW1wbGF0ZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5M
SU5FX0VYQ0VQVF9NU1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
UmVnVHlwZSBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgdXNpbmcgSW5mb1R5cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAg
ICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7CkBAIC0zOTIsMzEgKzQwMywzMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4u
Lik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBS
UmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJF
TlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNz
aW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJn
cy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAg
bWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFy
Zy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBu
b25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IENlbGxWYWx1ZSBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJn
dW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFy
Z3MuLi4pOwogICAgIH0KQEAgLTQyNCw4ICs0MzUsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBw
dWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BV
KEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQ
UlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0
byBhIGRvdWJsZSIpOwogCkBAIC00NjksMjUgKzQ4MCwyNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMg
OiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJy
ZW50R1BBcmdDb3VudCA8IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFB
cmcoKS5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIC8vIE90aGVyd2lzZSBwYXNzIEZQ
IGFyZ3VtZW50IG9uIHN0YWNrLgotICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7
Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgaWYg
KHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFy
Z3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFk
ZFBva2UoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5h
YmxlX2lmX3Q8c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFy
Z0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcpOwpAQCAtNDk3LDM0ICs1MDgsMzQg
QEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgdm9pZCBwb2tlQXJndW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJn
MiBhcmcyLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
QXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2ln
bmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7
CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291
bnQoR1BSSW5mbzo6cmVnVDApOwogCiAgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09
IG51bUFyZ1JlZ2lzdGVycykgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwg
ZXh0cmFQb2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9r
ZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywg
ZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQ
b2tlKCksIGFyZ3MuLi4pOwotICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
KSkgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgfSBlbHNl
IGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJB
cmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKLSAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMik7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAyKTsKICAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBv
a2UoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BS
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+
Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5
bG9hZCwgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdz
LmFyZ0NvdW50KHBheWxvYWQuZ3ByKCkpOwpAQCAtNTQ0LDkgKzU1NSw5IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcG9rZUFyZ3Vt
ZW50c0FsaWduZWQ8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNW
YWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVS
ZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVn
cy5hcmdDb3VudChhcmcudGFnR1BSKCkpOwpAQCAtNTY5LDExICs1ODAsMTEgQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAjZW5kaWYgLy8gQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShNSVBTKQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBl
bmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAg
ICAgc3RkOjppc19iYXNlX29mPFRydXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0
ZDo6aXNfY29udmVydGlibGU8QXJnLCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhp
cyBzaW5jZSBERkdTcGVjdWxhdGl2ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2Yg
VHJ1c3RlZEltbVB0cgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcs
IEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cg
dGhpcyBvbmx5IHN1cHBvcnRzIG5vbi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRz
IHNpbmNlIHdlIG5ldmVyIGNhbGwgb3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMu
CiAgICAgICAgIC8vIElmIHdlIGV2ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0
aW5nIHBvaW50IGFyZ3VtZW50cyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2lj
IGZvciBib3RoIHR5cGVzLCB3aGljaCBzb3VuZHMKQEAgLTU5MSw0NiArNjAyLDQ2IEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7
CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRH
UFJBcmcoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBB
TFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJS
RU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdy
YWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJS
RU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZElt
bTMyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAg
QUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VS
UkVOVF9BUkdVTUVOVF9UWVBFLCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVn
cmFsPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VS
UkVOVF9BUkdVTUVOVF9UWVBFKSA9PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAg
c2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJ
bW02NChhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAg
IEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVy
PENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2lu
dGVyPEFyZz46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3Rf
dDxzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2
YWx1ZSkKICAgICAgICAgICAgIHx8IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6
dmFsdWUpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcpLCBhcmdzLi4u
KTsKICAgICB9CiAKICAgICAvLyBTcGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJl
IGJlY2F1c2UgaXQncyByZWFsbHkgYW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVyd2lzZS4uLgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBB
cmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90
PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUq
Pjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3Ry
dWN0dXJlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5n
ZXQoKSksIGFyZ3MuLi4pOwogICAgIH0KQEAgLTYzOSw4ICs2NTAsOCBAQCBjbGFzcyBDQ2FsbEhl
bHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICN1bmRlZiBSRVNVTFRfVFlQRQogCiAg
ICAgLy8gQmFzZSBjYXNlOyBzZXQgdXAgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2U+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+Ojphcml0eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBs
YXN0IHNhbml0eSBjaGVjayIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02NTUsMzEgKzY2Niw0
NCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAg
ICAgc2V0dXBTdHViQXJnczxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8
bnVtRlBSU291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNs
YW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNv
dXJjZXMpKTsKICAgICB9CiAKLXB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZ3MuLi4g
YXJncykKKyAgICB7CisgICAgICAgIHVzaW5nIEZpcnN0QXJndW1lbnRUeXBlID0gdHlwZW5hbWUg
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPjsK
KyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8Rmlyc3RBcmd1bWVudFR5cGUsIENh
bGxGcmFtZSo+Ojp2YWx1ZSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBU
aGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3Mg
dGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykg
KyAxLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIH0gZWxzZSB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5j
ZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgp
ID09IHNpemVvZi4uLihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAg
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywg
YXJncy4uLik7CisgICAgICAgIH0KKyAgICB9CiAKLSNkZWZpbmUgRklSU1RfQVJHVU1FTlRfVFlQ
RSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1l
bnRUeXBlPDA+CitwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX3NhbWU8RklSU1RfQVJHVU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1
cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzKEFyZ3MuLi4gYXJncykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
Ly8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBt
ZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykg
KyAxLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248
MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3Mu
Li4pOworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdD
b2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8RklSU1RfQVJH
VU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFy
Z3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxs
KEdQUlJlZyBmdW5jdGlvbkdQUiwgQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2Ug
anN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGlj
X2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNp
emVvZi4uLihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdD
b2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAgICBzZXR1
cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDA+KCkucHVzaE5vbkFyZyhmdW5jdGlvbkdQUiwgR1BSSW5mbzo6bm9uQXJn
R1BSMCksIGFyZ3MuLi4pOwogICAgIH0KIAotI3VuZGVmIEZJUlNUX0FSR1VNRU5UX1RZUEUKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChBZGRyZXNz
IGFkZHJlc3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50
cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwg
MD4oKS5wdXNoTm9uQXJnKGFkZHJlc3MuYmFzZSwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3Mu
Li4pOworICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVn
IGRlc3RCKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRleCBmN2FhMzI5ZmUyNWQxOWM3MzcxODQ3MGFlZmZiM2I0
YWFlYTA1ZGI2Li4yYmYxMWZkNjk1OTYxYTExNzNmMzJiNGNlOTIxNjJiMDA3MjE4MzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNj
ZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRh
dGEuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC0zOSw4ICs0MCwxMCBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIEdDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAg
IGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUs
IFZNJiB2bSkKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBr
ZXlzKQogICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKKyAgICAsIG1fdm0odm0pCisgICAgLCBt
X2tleXMoV1RGTW92ZShrZXlzKSkKIHsKICAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRpbmVzLT5h
ZGQodGhpcyk7CiB9CkBAIC00OSw2ICs1Miw5IEBAIEdDQXdhcmVKSVRTdHViUm91dGluZTo6fkdD
QXdhcmVKSVRTdHViUm91dGluZSgpIHsgfQogCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6
b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykK
KyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisKICAgICBpZiAo
bV9pc0pldHRpc29uZWQpIHsKICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Igd2hl
biB0aGUgc3lzdGVtIHNodXRzIGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRoZSBK
SVQgc3R1YiByb3V0aW5lIHNldCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8g
ZGVsZXRpbmcKQEAgLTc1LDkgKzgxLDkgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmRl
bGV0ZUZyb21HQygpCiB9CiAKIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdH
Q0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLAor
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNv
ZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIGNvbnN0
IEpTQ2VsbCogb3duZXIsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENh
bGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KGNvZGUsIHZtKQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3Zl
KGtleXMpKQogICAgICwgbV9jZWxscyhjZWxscy5zaXplKCkpCiAgICAgLCBtX2NhbGxMaW5rSW5m
b3MoV1RGTW92ZShjYWxsTGlua0luZm9zKSkKIHsKQEAgLTEwNiw5ICsxMTIsOSBAQCB2b2lkIE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChT
bG90VmlzaXRvciYgdmlzaQogfQogCiBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9u
SGFuZGxlcjo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoCi0gICAg
Y29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwg
Vk0mIHZtLCAgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxs
cywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAorICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsICBjb25zdCBKU0NlbGwqIG93bmVyLCBj
b25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5r
SW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlz
cG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCi0gICAg
OiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdU
Rk1vdmUoY2FsbExpbmtJbmZvcykpCisgICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJ
bmZvcykpCiAgICAgLCBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9ja0Zv
ckV4Y2VwdGlvbkhhbmRsZXJzKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgbV9jb2RlT3Jp
Z2luUG9vbCgmbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlci0+Y29kZU9yaWdpbnMoKSkK
QEAgLTEzMSw3ICsxMzcsNyBAQCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcjo6fkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYQogI2VuZGlmCiB9CiAK
LXZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9E
aWUoKQordm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6YWJv
dXRUb0RpZShWTSYpCiB7CiAgICAgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlciA9IG51
bGxwdHI7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xNTQsNiArMTYwLDcgQEAgdm9pZCBHQ0F3
YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3Vu
dCgpCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKKyAg
ICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywKICAgICBWTSYgdm0sCiAg
ICAgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBib29sIG1ha2VzQ2FsbHMsCkBAIC0xNjUsMTgg
KzE3MiwxOCBAQCBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAg
IGlmICghbWFrZXNDYWxscykgewogICAgICAgICAvLyBBbGxvY2F0aW5nIENhbGxMaW5rSW5mb3Mg
bWVhbnMgd2Ugc2hvdWxkIGhhdmUgY2FsbHMuCiAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm9z
LmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpJVFN0dWJSb3V0aW5l
KGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVhYmxlSklUU3R1YlJv
dXRpbmUodm0sIGNvZGUsIFdURk1vdmUoa2V5cykpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGNv
ZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycy0+aml0
VHlwZSgpKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUo
Y2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25I
YW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgV1RGTW92ZShr
ZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JF
eGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKICAgICB9
CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29kZSwgdm0pOwor
ICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29kZSwgdm0sIFdU
Rk1vdmUoa2V5cykpOwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlu
a0luZm9zKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywgV1RGTW92ZShj
YWxsTGlua0luZm9zKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4IDQ4YmVmYmM0
ODdmY2EyNTcwYzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQuLmIwNDZjOGU3NzlhZjA1MzkwNzkyMzZi
NjUwYjYwMGJmNjYzZjFmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgREZHIHsK
IGNsYXNzIENvZGVPcmlnaW5Qb29sOwogfQogCitjbGFzcyBBY2Nlc3NDYXNlOwogY2xhc3MgQ2Fs
bExpbmtJbmZvOwogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAKQEAgLTU0LDEyICs1NSwxMiBA
QCBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIC8vIGxpc3Qgd2hpY2ggZG9lcyBub3QgZ2V0IHJl
Y2xhaW1lZCBhbGwgYXQgb25jZSkuCiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJs
aWMgSklUU3R1YlJvdXRpbmUgewogcHVibGljOgotICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mKTsK
KyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+
PiYmKTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0
aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklU
U3R1YlJvdXRpbmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mJiBrZXlzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvZGUsIHZtKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSkpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CkBAIC02OCw2ICs2OSw4IEBAIGNsYXNzIEdD
QXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAgICAgICAgIG1h
cmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbCh2aXNpdG9yKTsKICAgICB9CiAgICAgCisgICAgY29u
c3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICZtX2tleXM7IH0KKwogICAgIHZvaWQgZGVsZXRlRnJvbUdDKCk7CiAgICAgCiBwcm90
ZWN0ZWQ6CkBAIC04MSw2ICs4NCw4IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1
YmxpYyBKSVRTdHViUm91dGluZSB7CiAKICAgICBib29sIG1fbWF5QmVFeGVjdXRpbmcgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQgeyBmYWxzZSB9OworICAgIFZNJiBtX3ZtOwor
ICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOwogfTsKIAogLy8gVXNl
IHRoaXMgaWYgeW91IHdhbnQgdG8gbWFyayBvbmUgYWRkaXRpb25hbCBvYmplY3QgZHVyaW5nIEdD
IGlmIHlvdXIgc3R1YgpAQCAtODgsNyArOTMsNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRp
bmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHVi
Um91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogcHVibGljOgogICAgIE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBG
aXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNv
bnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJraW5n
R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0x
MDksMTAgKzExNCwxMCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9u
SGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogcHVibGljOgogICAgIHR5
cGVkZWYgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIEJhc2U7CiAKLSAgICBHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0
b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxl
Q2FsbFNpdGVJbmRleCk7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYs
IFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxv
Y2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGlu
ZVdpdGhFeGNlcHRpb25IYW5kbGVyKCkgZmluYWw7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKSBm
aW5hbDsKKyAgICB2b2lkIGFib3V0VG9EaWUoVk0mKSBmaW5hbDsKICAgICB2b2lkIG9ic2VydmVa
ZXJvUmVmQ291bnQoKSBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTEzMiw2ICsxMzcsNyBAQCBjbGFz
cyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1Ymxp
YyBNYXJraW5nR0NBd2FyZUpJVAogLy8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHVi
Um91dGluZSgKIC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mIGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBi
b29sIG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQzLDcgKzE0OSw3IEBAIGNsYXNzIEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1h
cmtpbmdHQ0F3YXJlSklUCiAvLyB3YXkuCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklU
U3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAor
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBG
aXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgVk0mLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFn
PENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
Rm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhh
bmRsaW5nQ2FsbFNpdGVJbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5k
ZXggOGY0NWIzNzdjMTY5NmE1MTZhODQzMDBiODkyMWY2YWRkNmEzZDRkZC4uMDY3YWJmZjFkNmFk
MjAwNzU0NTE4MDA3N2IwYzRhNTVjNzc3MjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgKQEAgLTQ2MCw2ICs0NjAsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwog
I2VuZGlmCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lz
dGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVh
eDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIg
PSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OnIxMDsg
Ly8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC02NTIsNiArNjUzLDcgQEAgY2xhc3MgR1BS
SW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI2ID0gQVJNNjRS
ZWdpc3RlcnM6Ong2OyAvLyByZWdUNgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3Vt
ZW50R1BSNyA9IEFSTTY0UmVnaXN0ZXJzOjp4NzsgLy8gcmVnVDcKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25BcmdHUFIwID0gQVJNNjRSZWdpc3RlcnM6Ong4OyAvLyByZWdUOAorICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7
IC8vIHJlZ1Q5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBB
Uk02NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IEFSTTY0UmVnaXN0
ZXJzOjp4MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1NTU2MzAzN2FlYjU4ZmVj
OWIzZjAzZjdjZmVlMWZjMGRlM2VjZTIzLi43ZmEwOGViZjZjODhhMzM1ZmIwYTk1OTU2Y2I1NGE4
YjY4ODEzYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC05MjQsNiArOTI0LDEw
IEBAIHZvaWQgSklUOjpsaW5rKCkKICAgICAgICAgICAgICAgICBkb25lVGFyZ2V0LAogICAgICAg
ICAgICAgICAgIG5leHRIb3RQYXRoVGFyZ2V0LAogICAgICAgICAgICAgICAgIHNsb3dQYXRoVGFy
Z2V0KTsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbElu
Zm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8u
YnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDc1YzljYjk2YjEzNjUzMmYwODYxZjJmMGE4
MDU4ZWZjNmIwNTZiMjQuLjQwOWY0OWUyNjg4NmE4NDUxMzc3NDhkYzA2YWViMWI4NGRiNmFlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk0LDYgKzI5NCwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbkNhbGw7CiAgICAgICAgIH0KIAorICAg
ICAgICB2b2lkIGFwcGVuZENhbGwoQWRkcmVzcyBmdW5jdGlvbikKKyAgICAgICAgeworICAgICAg
ICAgICAgY2FsbChmdW5jdGlvbiwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgfQorCiAjaWYg
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNs
b3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0
aW9uKQogICAgICAgICB7CkBAIC0zOTUsMzkgKzQwMCwzOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kIHplcm8gZXh0ZW5kZWQuIEJhc2Ug
aXMgY2VsbCBjaGVja2VkLgogICAgICAgICAvLyBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxl
ZC4gUmV0dXJucyB0aGUgc2xvdyBjYXNlcy4gRmFsbC10aHJvdWdoCiAgICAgICAgIC8vIGNhc2Ug
Y29udGFpbnMgcmVzdWx0IGluIHJlZ1QwLCBhbmQgaXQgaXMgbm90IHlldCBwcm9maWxlZC4KLSAg
ICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpIHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChp
bnN0cnVjdGlvbiwgYmFkVHlwZSwgSW50MzJTaGFwZSk7IH0KLSAgICAgICAgSnVtcExpc3QgZW1p
dERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsK
LSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250
aWd1b3VzU2hhcGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlz
dCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykgeyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0
aW9uLCBiYWRUeXBlLCBieVZhbEluZm8sIEludDMyU2hhcGUpOyB9CisgICAgICAgIEp1bXBMaXN0
IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pOworICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91
c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hh
cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVj
dGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKKyAg
ICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBK
SVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KTsKIAogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4g
cmVnVDIgY29udGFpbnMgaW5kZWNpbmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0
b3JlIGlzIG5vdCB5ZXQgbG9hZGVkLiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAg
ICAgLy8gemVyby1leHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBh
bHJlYWR5IHByb2ZpbGVkLgogICAgICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBM
aXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBl
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlz
dCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBl
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3Vz
UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1
bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBD
b250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8s
IEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQ
dXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVt
aXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8pOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAg
SnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bywgVHlwZWRBcnJheVR5cGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOwpAQCAtODcwLDEzICs4NzUsMTcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4pOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRk
cmVzcyk7CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJu
VHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICNlbmRpZgogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25F
eGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQpOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShN
ZXRhZGF0YSYsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KKyAgICAg
ICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQ
cm9maWxlKE1ldGFkYXRhJiwgQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAg
ICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpDYWxsPgpAQCAtODg2LDYgKzg5NSwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAg
IH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0
YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgewor
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4o
dGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRh
cmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogICAgICAgICBzdHJ1
Y3QgaXM2NEJpdFR5cGUgewpAQCAtOTA2LDYgKzkyMywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRp
b24pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRT
bG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4g
YXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENh
bGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIC8vIHg2NCBX
aW5kb3dzIGNhbm5vdCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBs
YXJnZXIgdGhhbiA2NCBiaXRzLgorICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0VHlw
ZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46OnZh
bHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5
cGUoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAg
IH0KICNlbHNlIC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFy
Z3MuLi4gYXJncykKQEAgLTkxMyw2ICs5NDAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJn
ZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtOTIzLDYgKzk1NywxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVf
aWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAg
ICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNz
IHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7
CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBl
Pih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0K
KwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBB
cmdzPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3Vs
dChPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4u
LiBhcmdzKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRl
eCAxYjQ5ZDQ4OWRhYTJiNzg2YWI3OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMwYzdmNzY3
MTM3OTQ3MGU0ZGQ5ZDRkYTgzNjVkYTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKQEAgLTM5OCw4ICszOTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9v
cGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1Qx
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtNDMyLDggKzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Qwog
ICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
PihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0Lmxpbmso
dGhpcyk7CkBAIC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHBy
ZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5p
bXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiks
IEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
Qnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywK
KyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJS
ZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5
SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdl
bik7CkBAIC00OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlv
bkRvbmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRj
aDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
LSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpA
QCAtNTI4LDE2ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAg
ICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAg
ICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwog
CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+
ZG9uZS5pbXBsKCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFBy
b2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBu
b3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAg
ICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
ZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJl
ZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGRvbmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNo
ZWNrcG9pbnQoanVtcCgpKTsKQEAgLTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0MKIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1
bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3Bw
CmluZGV4IGVjYzRlNWYzZmY2ZDA3Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFm
ZGNhYzc4MmFjOWM4NzRlNTUwYWZmYjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAg
ICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLAogICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpKSksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihpZGVudC0+aW1wbCgpKSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JH
UFIsIHBheWxvYWRJdGVyYXRvckdQUiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZh
bGlkR1BSUmVnLAogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAg
ICAgICAgcHJlc2VydmVkUmVncy5hZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAg
IEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0
YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25l
UmVncywKKyAgICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBt
X2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAg
ICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRl
eChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3Bl
cnR5TmFtZXMtPnZhbHVlLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVy
UmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdz
LAorICAgICAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCmluZGV4IDZmYTcyNDRlZjBhMDhjOWYwNDdhMzIyMDRmNzM3ZDI5Mjg3MTkwNmYuLjg3Nzcw
YmY4NDhhM2FmYTlkZGJmMGIxODIyMzdmMTNjYTBlMmJiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7
CiBjbGFzcyBWTTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwK
LSAgICBIb3N0Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVK
SVQsCi0gICAgREZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0
Q2FsbFRodW5rID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJh
c2VsaW5lSklUID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIx
MDEsCiB9Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7Citz
dGF0aWNfYXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9m
SklUVHlwZSk7CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SklUQ29kZT4gewogcHVibGljOgpAQCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRDb2RlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGpp
dFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6
OkJhc2VsaW5lSklUOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElDKEpJVFR5
cGUgaml0VHlwZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGppdFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwogICAgIHZp
cnR1YWwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhf
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNkZTY0NjIy
Y2UuLjU5YTNjMzFhMGQ1NDQyOWRiNTFhYzYxNWZmOTcxZjA4NDVhMjBhNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CkBAIC00Myw5ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHVi
SW5mbygpCiB9CiAKIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CisgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9jb2RlQmxv
Y2sgPyBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdpbikgOiBn
YXJiYWdlU3R1YkluZm8oKTsKICAgICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNp
dGU7CkBAIC02MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6Zmlu
YWxpemUoCiAKICAgICBtX3N0dWJJbmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5zbG93UGF0
aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9z
bG93UGF0aENhbGwpOworICAgIGlmIChtX3Nsb3dQYXRoQ2FsbC5tX2xhYmVsLmlzU2V0KCkpCisg
ICAgICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CiAgICAgbV9zdHViSW5mby0+
c2xvd1BhdGhTdGFydExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4obV9zbG93UGF0aEJlZ2luKTsKIH0KIAogSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJ
ZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCi0gICAg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHZhbHVlKQotICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAgICBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJh
dG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUs
IHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fdmFsdWUodmFsdWUp
CiB7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1f
c3R1YkluZm8tPnZhbHVlR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8t
PnJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdH
UFIgPSB2YWx1ZS50YWdHUFIoKTsKQEAgLTgzLDEzICs4NiwxNSBAQCBKSVRCeUlkR2VuZXJhdG9y
OjpKSVRCeUlkR2VuZXJhdG9yKAogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExp
bmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQo
bV9zdGFydC5pc1NldCgpKTsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUo
Ci0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHVi
Um91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpm
aW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9q
aXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xv
d1BhdGhTdGFydExvY2F0aW9uOwogfQogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaXplKQogewor
ICAgIC8vIFdlIGdlbmVyYXRlIHRoZSBzYW1lIGNvZGUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFNo
YXJlZElDIGlzIGVuYWJsZWQgYmVjYXVzZSB3ZSBzdGlsbCBuZWVkIHRvIHVzZSBJbmxpbmVBY2Nl
c3MKKyAgICAvLyBmb3IgdGhlIHBlcmZvcm1hbmNlIHJlYXNvbi4KICAgICBtX3N0YXJ0ID0gaml0
LmxhYmVsKCk7CiAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIo
KS5jb2RlU2l6ZSgpOwogICAgIG1fc2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKQEAgLTEwMSw5
ICsxMDYsOSBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNy
b0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaQogfQogCiBKSVRHZXRCeUlkR2VuZXJh
dG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5
cGUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHVi
SW5mb0dQUikKICAgICAsIG1faXNMZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lLnVpZCgpID09IGNv
ZGVCbG9jay0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHZhbHVlLnRhZ0dQUigpKTsKQEAgLTExNSw5
ICsxMjAsOSBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKQotICAgIDogSklU
QnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBK
SVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUs
IHN0dWJJbmZvR1BSKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWdzLnBheWxvYWRHUFIo
KSAhPSB0aGlzUmVncy50YWdHUFIoKSk7CiAKQEAgLTEzMywxMCArMTM4LDEwIEBAIHZvaWQgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
JiBqaXQpCiB9CiAKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0g
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJs
ZUlkZW50aWZpZXIsCi0gICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzY3JhdGNoLCAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoLCAKICAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAg
ICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgOiBK
SVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BS
KQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1
dEtpbmQpCiB7CkBAIC0xNzEsMTQgKzE3NiwxNSBAQCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1KSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNj
cmF0Y2gpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeVZhbEdlbmVy
YXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUg
aml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9H
UFIsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0
ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwog
ICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAg
ICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5m
by0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJ
bmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNT
RVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5i
YXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTE5MSwyNiArMTk3LDM1IEBAIEpJVERlbEJ5
VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwot
ICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIp
OworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0g
aml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9
CiAKLXZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXIm
IGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0
b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
IHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6
OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwg
c2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1Yklu
Zm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
bV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5
SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQor
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hl
YWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlE
LCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IHRydWU7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2Fk
R1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0
dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
QVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZv
LT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTIyMywyMiArMjM4LDMwIEBAIEpJVERl
bEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVPcmlnaW4gY29kZU9yCiB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7
Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQ
Uik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRT
dHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAg
PSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsK
IH0KIAotdm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
IHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6
OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwg
c2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1Yklu
Zm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
bV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5hbGl6ZShm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKIEpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlk
R2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2Nr
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJh
c2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9H
UFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwg
c3R1YkluZm9HUFIpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0
IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5h
bWUpOwpAQCAtMjUxLDE1ICsyNzQsMTUgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUSW5zdGFuY2VPZkdlbmVy
YXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCi0gICAg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2
YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlw
ZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAg
ICAgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIGJvb2wgcHJvdG90eXBlSXNLbm93
bk9iamVjdCkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVz
ZWRSZWdpc3RlcnMpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGpp
dFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Ys
IHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IHZhbHVlOwogICAg
IG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJv
dG90eXBlR1BSID0gcHJvdG90eXBlOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBz
dHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VU
YWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52
YWxpZEdQUlJlZzsKQEAgLTI3OSwyMSArMzAyLDI4IEBAIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6
OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewotICAgIG1fanVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1
YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAg
ICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
OjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7
Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0
aCwgc2xvd1BhdGgsCi0gICAgICAgIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fanVtcCkpOwotICAgIAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwg
c2xvd1BhdGgubG9jYXRpb25PZjxOb1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAg
bV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9u
OworICAgIH0gZWxzZSB7CisgICAgICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6
ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fanVtcCkpOworICAgICAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNs
b3dQYXRoLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIH0KIH0K
IAotSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdz
IHJlc3VsdCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdl
dEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdp
biwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICwgbV9yZXN1bHQocmVzdWx0KQogewpAQCAtMzAyLDYgKzMzMiw3IEBAIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5
bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5w
YXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQ
UigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQ
UigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAt
MzEyLDIwICszNDMsMjggQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJh
dG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklUR2V0QnlW
YWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAg
ICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7Cisg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVy
czo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAg
ICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRo
KQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBh
dGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkp
OwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQ
YXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBCYXNlOjpmaW5hbGl6
ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0
ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAg
ICAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFz
dFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihtX3N0YXJ0KSk7CisgICAgfQogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6
OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0
ZXJzKQogewogICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0
ZUJyYW5kIHx8IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kKTsKICAg
ICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKQEAgLTMzMyw2ICsz
NzIsNyBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIg
PSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLmJyYW5kR1BSID0gYnJh
bmQucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gSW52YWxpZEdQUlJl
ZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIo
KTsKICAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7CkBAIC0z
NDMsMTYgKzM4MywyNCBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogdm9pZCBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGpp
dCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBq
aXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5
cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0
dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKEND
YWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwor
ICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBM
aW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
OjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7
Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAg
ICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5
cGUpKSB7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsK
KyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFy
dExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkp
OworICAgICAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2IyNTUxOTU1
NDhiMGYyZWI2NTEuLmRlMmQ3MGI1OTdiNzNkMDE3MDk3YzE1MDhiZTk1MzM3MDJjMmVkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1
cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51bSBjbGFz
cyBKSVRUeXBlIDogdWludDhfdDsKIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igewog
cHJvdGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAgSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsK
KyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycyk7CiAgICAgCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2Nr
KiBtX2NvZGVCbG9jazsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogbV9zdHViSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBA
IC03Nyw4ICs3OCw4IEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEJ5
SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9j
ayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVibGljOgogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CkBAIC0xMDYsOCArMTA3LDgg
QEAgY2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsK
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
KAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUpOworICAgICAg
ICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwg
QWNjZXNzVHlwZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJik7CiAKQEAgLTEyMCw4ICsxMjEsOCBAQCBjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0gICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVl
UmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOworICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNS
ZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJik7CiB9OwpAQCAtMTMzLDggKzEzNCw4IEBAIGNsYXNzIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgeyB9CiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJl
ZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5
cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAorICAgICAgICBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgRUNN
QU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOwogICAgIApAQCAtMTUxLDggKzE1Miw4IEBAIGNsYXNzIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVREZWxCeVZh
bEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVC
bG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNv
bnN0CiAgICAgewpAQCAtMTc2LDggKzE3Nyw4IEBAIGNsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklU
VHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7
CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsK
QEAgLTIwMCw4ICsyMDEsOCBAQCBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklU
QnlJZEdlbmVyYXRvciB7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJ
bkJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAg
ICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BS
KTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKQEAg
LTIxMSw4ICsyMTIsOCBAQCBjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIDogcHVibGljIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKCkgeyB9
CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIEdQUlJlZyByZXN1bHQsCi0gICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlw
ZSwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCisgICAgICAgIENvZGVCbG9jayos
IEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAorICAgICAgICBHUFJSZWcgdmFsdWUsIEdQUlJl
ZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcg
c2NyYXRjaDIsCiAgICAgICAgIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlKTsK
ICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKQEAgLTIy
OSw4ICsyMzAsOCBAQCBjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFs
dWVSZWdzIHJlc3VsdCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yNTcsOCArMjU4LDggQEAg
Y2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yIHsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoKSB7IH0K
IAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IGJyYW5kKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisg
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1Yklu
Zm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IGU3OWNkMzZl
ZjU3ZDdiZGNlY2UxNzY4ZDA1ODhhZmVlZDg4ODUwMTUuLjI4YTY0MzM3ZTJmMDhmNWYyMGFkYTcz
N2JiNzZiY2I0NzM2MjI4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CkBAIC0zMywxNyArMzMsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsK
ICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVREb3VibGU6
Ci0gICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5
cGUpOworICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgcmV0
dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAg
ICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlw
ZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0dXJu
IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAg
ICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5
cGUsIGJ5VmFsSW5mbyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MTI4LDYgKzEyOCwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdAogICAgIHJldHVybiBjYWxs
OwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKEFkZHJlc3MgZnVuY3Rpb24pCit7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAg
YXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgZXhjZXB0aW9uQ2hlY2soKTsKK30KKwogI2lmIE9T
KFdJTkRPV1MpICYmIENQVShYODZfNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlw
ZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogewpAQCAtMTU3
LDYgKzE2NCwxNiBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwog
fQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzIGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQor
eworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BS
KTsKKyNlbHNlCisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1
ZUdQUik7CisjZW5kaWYKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CiBBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBk
c3QpCiB7CkBAIC0xNzEsNiArMTg4LDE5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAg
cmV0dXJuIGNhbGw7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1
bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1
YWxSZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5j
dGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1l
dGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YSwgSlNWYWx1ZVJlZ3MocmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUikpOworICAg
IGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlm
Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcp
CiB7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bkNlbGwocmVnKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGJkNTVhM2QwNTE2ZDQ2YjY3YWU1OTdi
NmMzYTRmNTg3YjVmZGQ3MzAuLmY0ZTE4ZTI2ZDI4NTQ4ODYxY2FlMzJiNmZhZGE0M2UyYTE0YjUy
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTY0LDEx
ICsxNjQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMSwgcHJvdG8pOwogCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAg
ICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgcmVnVDUsCiAgICAgICAgIHJlZ1QzLCByZWdU
NCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgbV9p
bnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKQEAgLTE4Niw3ICsxODcsMTQgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFMKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4gPSBtX2luc3RhbmNl
T2ZzW21faW5zdGFuY2VPZkluZGV4KytdOwogICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFu
Y2VPZk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVnVDEpOworCisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5m
bygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5
cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdH
UFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRW
UmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86
Om5vbkFyZ0dQUjAsIHJlZ1QyLCByZWdUMSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDIsIHJlZ1QxKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOwogfQogCkBAIC0xNzE5LDcgKzE3MjcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQ
dAogICAgIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBU
eXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2Fk
Rm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlKTsKKyAg
ICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1
Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgbW92ZShUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgSnVtcCBk
b25lID0ganVtcCgpOwogCkBAIC0xNzM0LDggKzE3NDIsMTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRy
ZXNzUHQKICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0
clRhZywKICAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVz
LCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVy
bkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5B
ZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4o
cmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhh
c0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVt
cFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgIH0g
ZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJh
ZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdl
bmVyaWMpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2lu
ZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTE3NjksMTEgKzE3ODIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5k
ZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIAogICAgIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJn
dW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0g
ZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlLCBi
eVZhbEluZm8pOwogICAgIAogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAg
ICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC0xNzk5LDcgKzE4MTMsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7
Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVy
dHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlW
YWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZh
dWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnlWYWxJbmZvKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUob3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgQnlWYWxJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIEdQUkluZm86Om5vbkFyZ0dQUjAp
OworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOwogCiAgICAgbV9ieVZhbENv
bXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBz
bG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA4ZGIzNTllYmQ4Y2QwNTY2OTczYjg2M2M0ODY3NDFh
N2ZhZTIyNDVlLi5jZjEyZGIyZGI4MzI3ZmZkMTI4MzQxNzFmNzc0OGM5YjFhOTUyOTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNjIs
MTEgKzE2MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIsIC8vIHZhbHVlCiAgICAg
ICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICByZWdU
MywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAyMWFmMzY1MzA5ZDI3OTMzNzFkZTZlYjQwMGI0NDY4
YWE4MzcwYjI1Li4wMjkyYjliOGM0ZWNlMjdhODE2NzUwMGEzNWQ0MTI1NjU0OWQ2MzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwMDIsNyAr
MTAwMiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxPcHRp
bWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIGlmIChyZXN1bHQgPT0gT3B0
aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8g
b3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVS
Tl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVC
bG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJO
X0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJz
Y3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CkBAIC0xMDk0LDcgKzEwOTcs
MTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0
aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXph
dGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGlt
aXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2Rl
QmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKICAgICB9
CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9i
amVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CkBA
IC0xMjc4LDcgKzEyODQsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1
dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAob3B0
aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAg
IC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tT
bG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1
cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
R2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAg
ICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
R2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0y
NTY3LDcgKzI1NzYsMTEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlMKICAgICAgICAgaWYgKCsr
YnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAgICAgICB8fCBvYmplY3QtPnN0
cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBldmVy
IHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIo
T1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjQ0NjdlOWEyNWUxNDc3ZTFlYzA2MzVkNDA5NzU0ZDhl
NzUzOTJlZi4uMWM5MjJiODM2ODBlNWFjMDdiZTE1ZGViYmRmMDVjODkyMzU5YzQ2MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTY5
LDEyICs2OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3VsdFJlZ3MpOworICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0
QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZXN1bHRSZWdzLCBy
ZWdUMik7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0eSkpCiAgICAg
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKICAgICAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgICAgIG1f
Z2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTkzLDE0ICs5
NiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogCiAgICAgICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKLSAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlW
YWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgICAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4
KytdOworCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIGRzdCwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cHJvZmlsZSwgcmVnVDAsIHJlZ1QxKTsKICNlbHNlCiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplOwogICAgICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTExOCw3ICsxMjIsOSBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvZmlsZSks
IHByb2ZpbGVHUFIpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5
VmFsT3B0aW1pemUpOworICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmICghSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CiAgICAgICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTM4LDcgKzE0NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsK
IAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFI0OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTE1Nyw5ICsxNjQsMTAgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFp
bCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBv
ZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAg
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKQEAgLTE4MiwxMCArMTkwLDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAg
ICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRSZWdzLCByZWdUMik7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChn
ZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMjAxLDggKzIxMiw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlCiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUR2V0QnlW
YWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgKytt
X2dldEJ5VmFsSW5kZXg7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlW
YWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTIxMSw2ICsyMjEsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgZHN0LCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTIyNiw3ICsyMzcsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJ
bmZvR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVH
UFIpOwpAQCAtMjQ1LDcgKzI1OCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5ICsyNzcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3h4eF9wcml2YXRlX25h
bWVfcHJlcGFyZUNhbGwiKTsKQEAgLTI4NSwxMCArMzAwLDEzIEBAIHZvaWQgSklUOjplbWl0X29w
X3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VHUFIsIGJhc2UpOwogCiAgICAg
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKGJyYW5kR1BSKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1
ZVJlZ3MoYnJhbmRHUFIpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwog
ICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiAKICAgICAvLyBXZSBzaG91
bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUt
YmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCkBAIC0zMDIsOCArMzIwLDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnkKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
W21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJ
bmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKICAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
QEAgLTMxMiw2ICszMjksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJh
c2VHUFIsIGJyYW5kR1BSKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBn
ZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5k
T3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CiAKQEAgLTMyOCw5ICszNDYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNs
dHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBG
dW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46
OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmCisKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCkBAIC0zNDYsMTAgKzM2NywxMyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBi
YXNlKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nh
c2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCkBAIC0z
NTcsOCArMzgxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKIHsKICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4g
PSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAg
ICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTM2Nyw2ICszOTAsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgYnJhbmRHUFIpOwogI2Vsc2UKICAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0zODMsNyAr
NDA3LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFu
ZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAg
IENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC00MTUsOCArNDQxLDE0IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2Up
OwogICAgIFBhdGNoYWJsZUp1bXAgbm90SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0lu
dGVnZXJDb25zdGFudCkgewotICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZO
b3RJbnQocmVnVDEpOwotICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gaXNJbnQzMiA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgICAgICAgICAgZmFy
SnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBK
SVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1w
SWZOb3RJbnQocmVnVDEpOworICAgICAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAg
ICAgICB9CiAgICAgICAgIC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgICAg
IHplcm9FeHRlbmQzMlRvV29yZChyZWdUMSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwyMyArNDY0
LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9k
ZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAg
ICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7Cisg
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBi
eVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZh
bEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOwor
ICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFn
ZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAg
YWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBA
IC00NTcsNyArNDkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LUpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUp
CitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRl
eGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRl
Y29kZS5tX3ZhbHVlOwpAQCAtNDY1LDcgKzQ5OCwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZAogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewor
ICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUg
PSBicmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7Cisg
ICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0
VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1No
YXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihO
b3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAgICAKICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJl
Z1QyKTsKICAgICBKdW1wIG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdU
MSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBA
IC01MTUsNyArNTU3LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91
c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0g
Ynl0ZWNvZGUubV92YWx1ZTsKQEAgLTUyMyw3ICs1NjUsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSkKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlz
Q29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0
b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFs
SW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAg
ICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFi
b3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVu
Z3RoT2Zmc2V0KCkpKSk7CiAKQEAgLTU2OCw4ICs2MTksOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdU
MSk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFt
ZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMSksIHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5l
dyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAg
IC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZl
Y3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpAQCAtNTgwLDcgKzYzMSwxMyBAQCBKSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAg
Z2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlO
YW1lLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNl
cy5hcHBlbmQoanVtcCgpKTsKIApAQCAtNjE5LDYgKzY3Niw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgcmVn
VDIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpKTsKICNlbHNlCiAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9
IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1
dEJ5VmFsT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTYzOCw4ICs2OTYsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8UwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21h
TW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1
dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBhdXRvKiBvcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAj
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTY1Nyw3ICs3MTYsOCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwg
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC02
NzUsOSArNzM1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RH
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIGVjbWFNb2Rl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6
IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQg
b3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBj
YWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CkBAIC02OTYs
OCArNzU3LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0g
cGF0Y2hhYmxlSnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICBQYXRj
aGFibGVKdW1wIGZhc3RQYXRoSm1wOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZh
bEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
IGVsc2UgeworICAgICAgICBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIH0KICAgICAKICAgICBMYWJlbCBkb25lID0g
bGFiZWwoKTsKICAgICAKQEAgLTcyNCw2ICs3OTAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZQogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtp
bmQudmFsdWUoKSkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGJ5VmFs
SW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsK
ICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsK
ICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUlu
ZGV4KTsKIApAQCAtNzQzLDcgKzgxMCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAg
bW92ZShUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSwgcHV0S2luZEdQUik7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOworICAg
IENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcgKzgzMCw4IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVf
cHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0
KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTc3OSw5ICs4NDks
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
cHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgcHV0S2luZEdQUik7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJh
dGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBp
dC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQs
IEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsK
QEAgLTg0NiwxMSArOTE3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwg
YmFzZSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdU
Mik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5k
KGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAt
ODgxLDYgKzk1NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21h
TW9kZS52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKIApAQCAtODk4LDE1ICs5NzMsMTYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rl
bF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21h
TW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2Rl
bF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
KTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0
aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTkxOCw3ICs5OTQsOCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2
bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC05MzUsOSArMTAxMiwx
MCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRo
aXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAot
ICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJl
dCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVs
c2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC05NTYsMTAgKzEwMzQs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJl
Z1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsK
ICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdU
Mik7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDMsIHJl
Z1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeVZhbHMuYXBw
ZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpA
QCAtOTkxLDYgKzEwNzIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAs
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7CiAjZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTEwMDgs
MTUgKzEwOTAsMTYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVy
blZhbHVlR1BSID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKQEAgLTEwMjgsNyArMTExMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAg
IGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEwNDUsOSArMTEyOSwxMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBj
YWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiBy
ZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBq
aXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAg
IGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKQEAgLTEwNjgsOCArMTE1Myw4IEBAIHZvaWQg
SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDAp
OwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNz
VHlwZTo6VHJ5R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3Ms
IHJlZ1QxLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dl
dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTA5NCw2ICsxMTc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG8KICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyeUdldEJ5
SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5y
YXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CiAKQEAgLTExMTAsNyArMTE5Niw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwg
Y2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXpl
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTMzLDggKzEyMjEsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDAp
LCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTExNjAsNiArMTI0OCw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUsIHJlc3Vs
dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNl
CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMTc2
LDcgKzEyNjUsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEyMDcsOCArMTI5OCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAK
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEs
IEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBw
ZW5kKGdlbik7CkBAIC0xMjMzLDggKzEzMjQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlz
LmFwcGVuZChnZW4pOwpAQCAtMTI2MCw2ICsxMzUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2wKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0
ZWNvZGVJbmRleCk7CiAKQEAgLTEyNzUsNyArMTM2Nyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRz
KCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEy
OTQsNyArMTM4OCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKQEAgLTEzMTEsOSArMTQwNiwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJh
dGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBp
dC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAg
LTEzMzcsNiArMTQzMyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIHJlZ1QxLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAg
ICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZFdpdGhU
aGlzT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09
IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTEzNTQsNyArMTQ1MSw5IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5y
YXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNh
bGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSht
ZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTM3Myw3ICsxNDcyLDggQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpc19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBq
aXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjM7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTM5Miw5ICsx
NDkyLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbCIpOwpA
QCAtMTQxOCwxMSArMTUxOSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAorICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRl
Y29kZSksCiAgICAgICAgIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERp
cmVjdCk7Ci0gICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsK
QEAgLTE0NDgsNiArMTU0OCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVn
VDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4u
c2xvd1BhdGhGdW5jdGlvbigpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xNDY1LDcgKzE1NjYsOSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGdlbi5z
bG93UGF0aEZ1bmN0aW9uKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtMTQ4MSw3ICsxNTg0
LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
cHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwpAQCAtMTUwMCw5ICsxNjA0LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0
IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8g
Y2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGwi
KTsKQEAgLTE1MjEsOCArMTYyNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1faW5CeUlkcy5h
cHBlbmQoZ2VuKTsKQEAgLTE1NDYsNiArMTY1MSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
bl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwg
cmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwog
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNv
ZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTU2NCw3
ICsxNjcwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZh
bHVlR1BSKTsKQEAgLTI3NTQsOCArMjg2Miw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjpl
bWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAg
ICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1v
ZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBw
cm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1QxLCBlY21hTW9kZShi
eXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI3NjUsNyArMjg3MywxMyBAQCBKSVRQ
dXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2Rl
LCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHByZXNl
cnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0
aGUgdGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7Cisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2Vu
LnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlO
YW1lLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI4MTcsMjkgKzI5
MzEsMjkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8KIAogICAgIHN3aXRjaCAoYXJyYXlNb2Rl
KSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSklURG91YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91
c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgbmVlZHNMaW5r
Rm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJh
eVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChi
eXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlua0Zv
cldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSB0eXBlZEFycmF5VHlwZUZvckpJVEFycmF5TW9kZShh
cnJheU1vZGUpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCi0gICAgICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsK
KyAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUsIG51bGxwdHIsIHR5cGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBPcHRpbWl6ZSBCaWdJbnQ2NEFycmF5IC8gQmlnVWludDY0QXJyYXkgaW4gSUMK
ICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5
IG5ldmVyIGNvbWVzIGhlcmUuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTgzCiAgICAgICAgICAgICBBU1NFUlQoaXNGbG9hdCh0eXBl
KSk7Ci0gICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZs
b2F0VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODY2LDggKzI5ODAsMTQgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQnlWYWxJbmZvKiBieVZhbEluZm8KICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1
ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICAgICAiQmFzZWxpbmUgcHV0X2J5
X3ZhbF9kaXJlY3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9j
b2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIH0K
LSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJv
dXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDog
b3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBl
SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZh
bEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5t
X3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
YyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNv
ZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVM
b2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJl
dHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJh
dGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25s
eSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5j
cHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMg
aW4gYWR2YW5jZS4KQEAgLTI5MDYsOCArMzAyNiwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QQogICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0
eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFtZS51
aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1
cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9IGdl
bi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
YnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5l
cmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNv
ZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2Rl
KCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9j
YXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1
cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7CisgICAgfQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTI5NDQsMTUgKzMwNjksMjAgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3MKICAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92YWwlcyB3aXRoIGNhY2hlZCBwcm9w
ZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIChwdXRLaW5kID09
IFB1dEtpbmQ6OkRpcmVjdCkgPyAiX2RpcmVjdCIgOiAiIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51
dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJl
c3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJ
bmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJ
bmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29k
ZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBwdXRLaW5kID09IFB1
dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlv
blB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgp
KSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxs
PFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNz
UHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0
S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMg
OiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBUaGlzIGZ1bmN0aW9u
IGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVuaXQgKEpJVE9wZXJh
dGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0ZWQgc3BlY2lhbGl6
YXRpb25zIGluIGFkdmFuY2UuCiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRC
eVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsPihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRy
LCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWxEaXJlY3Q+KEJ5VmFsSW5m
byosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCi1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZh
bEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdU
MDsKQEAgLTI5NjgsNyArMzA5OCwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVt
cExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgICAgICAgICAgZmFy
SnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJ
VFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlz
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNo
MzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRl
eGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0
Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkRG91Ymxl
KEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIGZwUmVnVDApOwpAQCAt
Mjk3Nyw3ICszMTE2LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICByZXR1cm4gc2xvd0Nh
c2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVk
U2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIElu
ZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVn
aXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTk1LDcgKzMxMzQsMTYgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3Rl
ZFNoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29y
cmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3Rl
ZFNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZv
LT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAg
ICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJ
bW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNo
YXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9y
RXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJs
aWNMZW5ndGgoKSkpKTsKICAgICBsb2FkVmFsdWUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5
LCBUaW1lc0VpZ2h0KSwgcmVzdWx0KTsKQEAgLTMwMDQsNyArMzE1Miw3IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7
CkBAIC0zMDIzLDcgKzMxNzEsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1w
TGlzdCBzbG93Q2FzZXM7CiAKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoLUFycmF5U3RvcmFnZVNo
YXBlKSwgaW5kZXhpbmcsIHNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAt
IEFycmF5U3RvcmFnZVNoYXBlKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAg
ICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEJlbG93T3JFcXVhbCwgc2NyYXRjaCwg
VHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBl
KSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2Jh
ZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXND
b3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQ
dXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CiAK
ICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
c2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHBy
b3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0
KCkpKSk7CkBAIC0zMDM1LDcgKzMxOTIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5
U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRB
cnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFy
cmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMwNjAsNyArMzIxNywxNyBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKICAgICBsb2FkOChB
ZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gp
OwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNo
LCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlm
IChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMy
KEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUo
dHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAg
ICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0
ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRy
dXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwogICAgIGxvYWQzMihB
ZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNj
cmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBs
YXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNl
KHByb2ZpbGUpOwpAQCAtMzExMSw3ICszMjc4LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBU
eXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJy
YXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9m
aWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzEzNiw3ICszMzAzLDE3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAg
IGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5
U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJs
eVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0g
YnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRj
aCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxz
ZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2Ny
YXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAg
bG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJv
cGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3Bl
Y2lhbENhc2UocHJvZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBjMjJjNzcwNDI4OWFiYjA4MmY5ZGRmMjBk
OGMyZmY2NjVkZmQ1NmUyLi4yNmY2N2M3YmNjMDkyYmQyZjU5YjM0ZWQ1ZDdjNmI4YTAwZDk3Mzg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChi
YXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogICAgIEpJ
VERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAgIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBJbnZh
bGlkR1BSUmVnLCByZWdUNCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9kZWxCeUlkcy5hcHBlbmQo
Z2VuKTsKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHByb3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIHByb3Bl
cnR5UmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRH
UFJSZWcsIHJlZ1Q0KTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMjU3LDggKzI1Nyw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVzdWx0UmVncyk7Cisg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QyKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGlmIChp
c09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8o
KS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwpAQCAtMzA1LDggKzMwNSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdl
dEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncyk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKQEAgLTM5Myw4ICszOTMsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNl
LCBiYXNlUmVncy50YWdHUFIoKSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVC
cmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBi
YXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MsIElu
dmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMu
YXBwZW5kKGdlbik7CkBAIC00MzMsOCArNDMzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CiAK
ICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOwor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNjYw
LDggKzY2MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsK
KyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFs
aWRHUFJSZWcsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03MDEsOCArNzAxLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3Vs
dFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6
R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2Vu
KTsKQEAgLTc0OCw4ICs3NDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIElu
dmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03OTEsOCArNzkxLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApOwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1
bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
NCwgcmVnVDMpLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRz
V2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC04MzUsOSArODM1LDkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IEludmFsaWRHUFJSZWcsCiAgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2Rl
KCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAg
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtODgyLDggKzg4Miw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAog
ICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHViUm91dGluZS5oCmluZGV4IDg4MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2
Y2RmYWIuLjQ5YTZkNTA2N2UyM2QyNTRhYjRmMGMzNTY5ODA3NmRhOWEwNzUwODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIGNsYXNzIFZNOwogCitj
bGFzcyBBY2Nlc3NDYXNlOworCiAvLyBUaGlzIGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIg
cm91dGluZXMsIGFuZCBhbHNvIHRoZSBjbGFzcyB5b3Ugd2FudAogLy8gdG8gaW5zdGFudGlhdGUg
ZGlyZWN0bHkgaWYgeW91IGhhdmUgYSByb3V0aW5lIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkKIC8v
IGhlbHAgZnJvbSB0aGUgR0MuIElmIGluIGRvdWJ0LCB1c2Ugb25lIG9mIHRoZSBvdGhlciBzdHVi
IHJvdXRpbmVzLiBCdXQKQEAgLTU2LDcgKzU4LDcgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewog
ICAgIH0KICAgICAKICAgICB2aXJ0dWFsIH5KSVRTdHViUm91dGluZSgpOwotICAgIHZpcnR1YWwg
dm9pZCBhYm91dFRvRGllKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFib3V0VG9EaWUoVk0mKSB7
IH0KICAgICAKICAgICAvLyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaXMgY29weWFibGUsIGJ1dCBh
dCB0aGUgY29zdCBvZiByZWZlcmVuY2UKICAgICAvLyBjb3VudGluZyBjaHVybi4gUmV0dXJuaW5n
IGEgcmVmZXJlbmNlIGlzIGEgZ29vZCB3YXkgb2YgcmVkdWNpbmcKQEAgLTk4LDYgKzEwMCw4IEBA
IGNsYXNzIEpJVFN0dWJSb3V0aW5lIHsKICAgICAvLyBkZXN0cm95ZWQuCiAgICAgdmlydHVhbCBi
b29sIHZpc2l0V2VhayhWTSYpOwogCisgICAgdmlydHVhbCBjb25zdCBGaXhlZFZlY3RvcjxSZWZQ
dHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmNwcAppbmRleCAxZjc2MDY4NjI3M2RkYTgxY2JiNmQwMWNkMjFkZDA5ODljYzZlMmI4Li40
NDcwNTViZmU4YWJlZmFhNTZmZTc4ZTgwNjhkMmNjNjY4OTMyM2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vz
c0Nhc2UuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJGdWxsQ29kZU9yaWdpbi5oIgpAQCAtNjcsNyArNjgsNyBAQCBQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZVJlZiwg
Vk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lLAogICAg
IENhbGxMaW5rSW5mbyYgaW5mbywgY29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBj
YXNlcywKICAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzKQotICAgIDogR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGVSZWYsIHZtLCB7IH0pCiAgICAgLCBtX3ZhcmlhbnRzKGNhc2VzLnNpemUoKSkKICAg
ICAsIG1fZmFzdENvdW50cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMzU5M2NjZTg4NjA4ODAxODM0NmE4MDhlNWY4NjQ3ODcx
YTQ0MWIyOS4uMDFkOTJjMWI4ZjJjY2Q1Y2U0MDg0MjQxM2NlNDI2ZWE0M2ZlNmFiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC03MSw4ICs3MSwxMCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1
dElDQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0lu
dGVybmFsUHRyVGFnPiBjYWxsKQorc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
cmVhZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCiB7
CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgcmV0dXJuIHN0dWJJ
bmZvLm1fc2xvd09wZXJhdGlvbi5yZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCk7CiAjaWYgRU5B
QkxFKEZUTF9KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZU
TEpJVCkgewogICAgICAgICBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4gdGFyZ2V0ID0gTWFj
cm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PEpJVFRodW5rUHRyVGFnPihjYWxsKTsKQEAgLTEw
NSw2ICsxMDcsMTUgQEAgdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaENhbGwoY2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9u
UHRyVGFnPigpKTsKIH0KIAorc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uQ2FsbDxKU0lu
dGVybmFsUHRyVGFnPiBjYWxsLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxl
ZUZ1bmN0aW9uKQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8
T3BlcmF0aW9uUHRyVGFnPigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKK30K
KwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7CiAgICAgR2l2ZVVwT25DYWNoZSwKICAgICBSZXRy
eUNhY2hlTGF0ZXIsCkBAIC0yMDksNyArMjIwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgog
ICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBj
b25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZSB8fCBr
aW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3
Q2FzZTsKIAogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlQ2VsbCkpIHsKQEAgLTIxOSw3
ICsyMzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVu
Z3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxsKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0QXJy
YXlMZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNh
Y2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIyNywxMCArMjM4LDExIEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3ND
YXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGgsIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZUNlbGwpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6
VW5zZXQgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBl
OjpVbnNldAorICAgICAgICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxl
U3RyaW5nTGVuZ3RoKHN0dWJJbmZvKSkgewogICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVy
YXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU3RyaW5nTGVuZ3RoKHN0dWJJ
bmZvKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRC
eUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLmluaXRTdHJpbmdMZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTI4MiwxMiArMjk0LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAg
ICAmJiAhc2xvdC53YXRjaHBvaW50U2V0KCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJl
LT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkKICAgICAgICAgICAgICAgICAmJiAhbG9h
ZFRhcmdldEZyb21Qcm94eSkgewotCiAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2Rl
SW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUFjY2VzcyhzdHViSW5m
bywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
Z2VuZXJhdGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkdldEJ5U2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZh
bHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3Bl
cnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2lu
ZCkpOworICAgICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRC
eUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgp
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxh
dGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0MzYsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhK
dW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsK
LSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAg
ICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9j
aywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1
bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NTAsNyBAQCB2b2lk
IHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNWYWx1ZSBiYQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBraW5kKSA9
PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihraW5k
KSk7CiB9CiAKIApAQCAtNTI5LDcgKzU0MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiAg
ICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNlVmFs
dWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJs
b2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTQwLDcgKzU1MSw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kCiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBpZiAo
dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlLCBpbmRl
eCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25HZXRCeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlWYWxHZW5l
cmljKTsKIH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9u
KGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2luZCBwdXRLaW5kKSAtPiBkZWNsdHlw
ZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkKQEAgLTYzNiw3ICs2NDcsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICBpZiAoaXNQcm94eSAmJiAocHV0S2luZCA9PSBQ
dXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJl
Y3RQcml2YXRlRmllbGREZWZpbmUpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAg
IFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmJhc2UoKSA9
PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CiAgICAgICAgICAgICBpZiAo
c2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpFeGlzdGluZ1Byb3BlcnR5KSB7CkBAIC02
NTgsNyArNjY5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQ
cm9wZXJ0eVJlcGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRTZWxmUGF0Y2gsIG9s
ZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXpp
bmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRL
aW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxh
Y2UobG9ja2VyLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hl
TGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTIsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
cmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
ODE1LDcgKzgyNiw3IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0
QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0g
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwg
cHV0S2luZCkpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0
aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQpA
QCAtODQ2LDcgKzg1Nyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0
ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChv
bGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2Fj
aGVMYXRlcjsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsK
KyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3Qu
aXNEZWxldGVIaXQoKSkgewogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0g
aW52YWxpZE9mZnNldDsKQEAgLTg3NCw3ICs4ODUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
YwogICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29k
ZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODkxLDkgKzkwMiw5IEBA
IHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAg
ICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUu
Y2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5k
OjpOb3JtYWwpCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVy
aWMpOworICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2Vu
ZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsK
ICAgICB9CiB9CiAKQEAgLTkzNyw3ICs5NDgsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUp
IHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gs
IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkp
OwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZv
clJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRJbkJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNs
b3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTg0LDcgKzk5NSw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKIAogICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCisgICAgICAgIFJl
ZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAgICAg
dm0sIGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6
OkluTWlzcywgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBp
bnZhbGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVB
Y2Nlc3NDaGFpbikpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2Uo
bG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBwcm9w
ZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOwpAQCAtOTkzLDcgKzEwMDQsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwg
c2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0xMDA3LDcgKzEwMTgsNyBAQCB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KgogICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlD
YWNoZUluQnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlO
YW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWQpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5C
eUlkKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRl
QnJhbmQoCkBAIC0xMDMyLDcgKzEwNDMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRy
dWU7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRBZGRBY2Nlc3ND
YXNlLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVy
ZSk7CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
Q2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKIAog
ICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdD
YXNlKSk7CiAKQEAgLTEwNDAsNyArMTA1MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpD
aGVja1ByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJl
c3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
KHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5B
Y2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTA1NCw3ICsxMDY1LDcgQEAgdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJh
bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sKICAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAo
dHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9i
amVjdCwgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKApAQCAtMTA5MSw3ICsxMTAyLDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAg
ICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpT
ZXRQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBp
ZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29k
ZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIFJl
ZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5k
KHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKIAog
ICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdD
YXNlKSk7CiAKQEAgLTEwOTksNyArMTExMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0
UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBp
ZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEzLDcgKzExMjQsNyBAQCB2b2lkIHJlcGF0Y2hTZXRQ
cml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
CiAgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVw
T25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVy
aWMpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9
CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMTMz
LDcgKzExNDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9m
KAogICAgICAgICAKICAgICAgICAgSlNDZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7
CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQ
dHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgcHJvdG90eXBlVmFsdWUpOwogICAgICAgICBpZiAo
cHJvdG90eXBlKSB7CiAgICAgICAgICAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgdmFsdWUpKSB7CkBAIC0xMTY4LDkgKzExNzksMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoSnVtcCgKLSAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCi0g
ICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkp
CisgICAgICAgICAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gcmVzdWx0LmNvZGUoKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAorICAg
ICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
cmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApA
QCAtMTE4NSw3ICsxMjAwLDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKIHsKICAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKHRyeUNhY2hl
SW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBl
VmFsdWUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKIH0KIAogc3RhdGljIHZvaWQgbGlua1Nsb3dQYXRoVG8o
Vk0mLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiBjb2RlUmVmKQpAQCAtMTIwMiw3ICsxMjE3LDcgQEAgc3RhdGlj
IHZvaWQgbGlua1Nsb3dGb3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxU
aHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICBsaW5rU2xvd1Bh
dGhUbyh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5z
ZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZt
KSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6
Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkpOwogfQogCiBzdGF0aWMgSlNDZWxsKiB3ZWJB
c3NlbWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQpAQCAtMTMyMCw3ICsxMzM1LDcgQEAgc3RhdGlj
IHZvaWQgbGlua1ZpcnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0kKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91
dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0lu
Zm8pOwogICAgIHJldmVydENhbGwodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAg
ICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUo
dmlydHVhbFRodW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJl
SklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKICAgICBjYWxs
TGlua0luZm8uc2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0ICsxNjU2LDI2
IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkK
IHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5k
KSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXpp
bmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEdl
dEJ5S2luZDo6Tm9ybWFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpUcnk6CisgICAgY2FzZSBHZXRC
eUtpbmQ6OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlLaW5kOjpEaXJlY3Q6CisgICAgICAgIElu
bGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICBj
YXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVO
YW1lQnlJZDoKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogfQogCiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHVzaW5nIEZ1bmN0aW9uVHlwZSA9IGRlY2x0
eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwotICAgIEZ1bmN0aW9u
VHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+
KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVk
RnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRh
cmdldChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiku
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGltaXplZEZ1bmN0aW9u
OwogICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Qg
fHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUp
CiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGlt
aXplOwpAQCAtMTY2NSw0NSArMTY5Miw0OCBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6
ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAg
ICB9CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOworICAgIElubGluZUFjY2Vzczo6
cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQg
cmVzZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBEZWxCeUtpbmQga2luZCkKIHsKICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1h
bCkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAg
ICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVsc2UKLSAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExv
Y2F0aW9uKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwor
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxl
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCitzdGF0aWMgdm9pZCByZXNldFBhdGNo
YWJsZUp1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxl
SnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICBlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRo
U3RhcnRMb2NhdGlvbik7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXZvaWQgcmVzZXRJbnN0YW5jZU9m
KFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVz
ZXRQYXRjaGFibGVKdW1wKHN0dWJJbmZvKTsKKyAgICByZXNldFBhdGNoYWJsZUp1bXAoY29kZUJs
b2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwor
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUp
OworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCwgSlNPYmplY3QqIGNhbGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKaW5kZXggMzEzNzlkYzRlNWE5ZGMyZGM2ZWE0OTMxNzc5NDcyNmEwMDIwMzUxYS4uM2ExOWZk
MzY1NDlkMWE4NDgwOWY5NGRhZGEyZGZiZTU3MDAwZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJl
U3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJik7CiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9j
ayosIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggZDk0OTdlYmQ0ZjBiYTZmNjI1NzlkY2Q1NDIzYTdi
OTg0N2U5NDRlMi4uN2UwZTU5MzI3NDViOGFhZWRiOTkwZDk4ZGE2NjI3Nzg0MzVjZTIzMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzYsNiAr
NTM2LDggQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihC
b29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYoQm9vbCwgdXNlVG9wTGV2ZWxBd2FpdCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0
IGtleXdvcmQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS4iKSBcCiAgICAgdihCb29sLCB2
ZXJib3NlRXhlY3V0YWJsZVBvb2xBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBc
CisgICAgdihCb29sLCB1c2VTaGFyZWRJQywgaXNBUk02NCgpLCBOb3JtYWwsIG51bGxwdHIpIFwK
KyAgICB2KEJvb2wsIHVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggNjBmOThmNTYzYTc2ZWRlZGE1MmEwNzI4ODNlNGJhZmViZDcy
ZGVlNS4uNWYxNDVlZjM3ZjFkNDc1MzI0NTJmODQ2OTU3NDQ5ODMwZWVjMTMyNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5j
bHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAi
QmlnSW50T2JqZWN0LmgiCkBAIC01NjYsNiArNTY3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3Mp
CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rp
b25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5j
dGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIG1fc2hhcmVkSklU
U3R1YnMgPSBtYWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJTZXQ+KCk7CiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKQEAgLTY0OSw2ICs2NTEsMTAgQEAgVk06On5WTSgpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyNpZiBFTkFC
TEUoSklUKQorICAgIG1fc2hhcmVkSklUU3R1YnMgPSBudWxscHRyOworI2VuZGlmCiB9CiAKIHZv
aWQgVk06OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2b2lkKiBhcmd1bWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDJkM2NkNDY2ODg4YmNlM2FmYjVhODg5
MzYxNzI3NThmMThjOTNmYTYuLjRkZTk1ZjYzOGIxZTIzODU5YTFiMzRlOTE3ZGM5M2FhMmY5ZjM1
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc0LDYgKzE3NCw3IEBAIGNs
YXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRp
ZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7CiBjbGFzcyBT
Y3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92
aWRlckNhY2hlOwpAQCAtODQxLDExICs4NDIsMTMgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNp
ZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJzOwog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJU3R1YihUaHVu
a0dlbmVyYXRvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJTZXQ+IG1fc2hh
cmVkSklUU3R1YnM7CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShGVExfSklU
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCisK
ICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIE5hdGl2
ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBO
YXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429973</attachid>
            <date>2021-05-27 18:45:20 -0700</date>
            <delta_ts>2021-05-27 18:59:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527184520.patch</filename>
            <type>text/plain</type>
            <size>423138</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi4zNjMyOWRjNmZhNDc1OTYx
YWQwNWQ1YTRlZGY3ZjFiY2RjNmViYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNTMgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6b2Zm
c2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNl
dE9mQmFkVHlwZUp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVzZXRKSVREYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OmdldFNjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAg
KEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAo
SlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpT
Qzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29k
ZSk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNj
ZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0
ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQpOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxs
V2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRk
Q2FzZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSk6CisgICAg
ICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNj
ZXNzR2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToK
KyAgICAgICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxl
QWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9j
YXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhJQ0NhbGwpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVz
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjph
cHBlbmRDYWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHJpdmF0ZUJyYW5k
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0
QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxC
eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VP
Zik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAg
ICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQpOgorICAgICAgICAoSlNDOjpGVEw6
OlNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQgY29uc3QpOgorICAgICAgICAoSlND
OjpGVEw6OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBmdGwvRlRM
U2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlvbik6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xv
d1BhdGhDYWxsS2V5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxs
S2V5Lmg6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpTbG93UGF0aENhbGxL
ZXkpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aW5kaXJlY3RPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6d2l0aENhbGxUYXJn
ZXQpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpoYXNoIGNvbnN0KToKKyAg
ICAgICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2Vu
ZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxU
aHVua0dlbmVyYXRvcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKToKKyAgICAgICAgKiBq
aXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVj
dGlvbjo6QXJnQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6cHVzaFJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6cHVzaEV4dHJhUmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpB
cmdDb2xsZWN0aW9uOjpwdXNoTm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpB
cmdDb2xsZWN0aW9uOjphZGRHUFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFy
Z0NvbGxlY3Rpb246OmFkZEdQUkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpBcmdDb2xsZWN0aW9uOjphZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6QXJnQ29sbGVjdGlvbjo6YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6
Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZv
ckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2
YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJF
TlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
ZXR1cEFyZ3VtZW50c0VudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0
dXBBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
Rm9ySW5kaXJlY3RDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJv
dXRpbmUpOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJv
UmVmQ291bnQpOgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUpOgorICAgICAgICAoSlNDOjpjcmVhdGVKSVRT
dHViUm91dGluZSk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oOgorICAg
ICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSk6CisgICAgICAgICogaml0
L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjps
aW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpT
Qzo6SklUQ29kZTo6dXNlU2hhcmVkSUMpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVElubGluZUNhY2hlR2VuZXJh
dG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSk6Cisg
ICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbik6CisgICAg
ICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5
SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0TG9hZEZvckFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6
OkpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRf
YnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRE
b3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0xvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Rmxv
YXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRTdHViUm91dGluZS5oOgor
ICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6YWJvdXRUb0RpZSk6CisgICAgICAgIChKU0M6
OkpJVFN0dWJSb3V0aW5lOjprZXlzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6cmVhZFB1dElDQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hDYWxsKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hHZXRCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQXJyYXlHZXRCeVZhbCk6
CisgICAgICAgIChKU0M6OnJlcGF0Y2hBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbGV0ZUJ5KToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5SUQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5C
eUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAg
IChKU0M6OnJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlcGF0
Y2hJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoSlND
OjpsaW5rVmlydHVhbEZvcik6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnkpOgorICAgICAgICAo
SlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldERlbEJ5KToKKyAgICAgICAg
KEpTQzo6cmVzZXRQYXRjaGFibGVKdW1wKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbkJ5SUQpOgor
ICAgICAgICAoSlNDOjpyZXNldEluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpyZXNldENoZWNr
UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRTZXRQcml2YXRlQnJhbmQpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAg
ICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEtMDUtMjYg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBMZXZlcmFnZSB0aGUg
bmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAppbmRleCBlNTE3NTdlOWI4ZmM2NDI4Nzgy
N2MxNmQwMmQyMWNjMjE4ZmIxMzI2Li44M2NiMzZkMDZmODMxMmM4OTVmNmE0OWIyNTZiYmVjMzQ2
MjczZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aApAQCAtMjM0LDggKzIzNCw4IEBAIGNsYXNzIExpbmtCdWZmZXIgewogICAgIHRlbXBsYXRlPFB0
clRhZyB0YWc+CiAgICAgQ29kZUxvY2F0aW9uQ2FsbDx0YWc+IGxvY2F0aW9uT2YoQ2FsbCBjYWxs
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6OkxpbmthYmxlKSk7
Ci0gICAgICAgIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOworICAgICAgICAv
LyBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKKyAgICAgICAgLy8gQVNT
RVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CiAgICAgICAgIHJldHVybiBDb2RlTG9j
YXRpb25DYWxsPHRhZz4oZ2V0TGlua2VyQWRkcmVzczx0YWc+KGFwcGx5T2Zmc2V0KGNhbGwubV9s
YWJlbCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCBhMjQ1ZTc3ZTQzZTcwYzBlYWEyNDM5
NjQzYWRhMWZjMDM0Y2M3NDFkLi5lNWIwYjJmZjc4OTBiNGZkYjIyMDFmYTg2MWI3NDNlY2IxMDRj
MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0yMjAsMTkgKzIyMCwxOSBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICAgICAgcmV0dXJu
IGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BSLCB0
YWdHUFIpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRk
cmVzcywgUHRyVGFnIHRhZykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbChBZGRyZXNzIGFk
ZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlv
blB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOwogICAgICAgICBBU1NFUlQoIU9wdGlvbnM6OnVz
ZUpJVENhZ2UoKSB8fCBjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsK
ICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7
CisgICAgICAgIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CiAKLSAgICBBTFdB
WVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcp
CiAgICAgewogICAgICAgICBBU1NFUlQodGFnICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAg
ICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBjYWxsT3BlcmF0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4g
b3BlcmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCmluZGV4IGM1ZmY3ODIyNjJlNzE4NWI4NzUwNDg3MGQ0YjRjOWJjNDkyYTRhYTQuLjU3OWQ4
NThkZDc3MmM2NTdiMmJiNGM1YTc0YWJhMTAzZmVkZmI2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgQWNjZXNz
Q2FzZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmkKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbmRpdGlvblNldC5pc1Zh
bGlkKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxB
Y2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHBy
b3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5I
aXQ6CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwg
aWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCitSZWZQdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUs
CiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAt
MTIyLDM0ICsxMjIsMzQgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlRGVsZXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgK
ICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09
IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkp
OwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0s
IHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBE
ZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2
YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwg
Q2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwg
eyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVy
ZSwgeyB9LCB7IH0pKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGVTZXRQcml2YXRlQnJhbmQoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0g
bmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlk
ZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgU2V0UHJpdmF0ZUJyYW5k
LCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9
CiAKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKK1JlZlB0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8oCiAgICAgVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSgpKSB7
CkBAIC0xODgsOSArMTg4LDkgQEAgSlNPYmplY3QqIEFjY2Vzc0Nhc2U6OmFsdGVybmF0ZUJhc2Uo
KSBjb25zdAogICAgIHJldHVybiBjb25kaXRpb25TZXQoKS5zbG90QmFzZUNvbmRpdGlvbigpLm9i
amVjdCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xv
bmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBBY2Nlc3NDYXNlKCp0
aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2UoKnRoaXMp
KTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
OTY0LDYgKzk2NCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9w
ZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7
CkBAIC0xMDYxLDYgKzEwNjMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9z
dHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAK
QEAgLTExNDQsNiArMTE0OCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBh
bGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApA
QCAtMTIwNSw2ICsxMjExLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xMzE3LDYgKzEzMjUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNj
cmF0Y2hHUFIpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpAQCAtMTM5NCw2ICsxNDA0LDgxIEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGUoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBnZW5l
cmF0ZUltcGwoc3RhdGUpOwogfQogCit2b2lkIEFjY2Vzc0Nhc2U6OmNvbGxlY3RJbnZhcmlhbnRz
Rm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIENvZGVCbG9jayogY29k
ZUJsb2NrKQoreworICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CisKKyAgICBzd2l0Y2ggKG1fdHlw
ZSkgeworICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFyZ3VtZW50
c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4
Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2Fk
OgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVyaWM6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIEdldEdldHRlcjoK
KyAgICBjYXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
R2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21W
YWx1ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBjdXJy
U3RydWN0dXJlOworICAgICAgICAgICAgaWYgKCFoYXNBbHRlcm5hdGVCYXNlKCkpCisgICAgICAg
ICAgICAgICAgY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZSgpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBhbHRlcm5hdGVCYXNlKCktPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgICAgICBjdXJyU3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlG
b3JSZXBsYWNlbWVudHModm0sIG9mZnNldCgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZm9yIChj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uIDogbV9jb25kaXRpb25TZXQp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOworCisg
ICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVXYXRj
aGFiaWxpdHkpKSB7CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxv
Y2ssIGNvbmRpdGlvbik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEZvciBub3csIHdlIG9ubHkgYWxsb3cgZXF1aXZhbGVuY2Ugd2hlbiBpdCdzIHdhdGNo
YWJsZS4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQo
KSAhPSBQcm9wZXJ0eUNvbmRpdGlvbjo6RXF1aXZhbGVuY2UpOworCisgICAgICAgIGlmICghY29u
ZGl0aW9uLnN0cnVjdHVyZUVuc3VyZXNWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWFzb24gd2h5IHRoaXMgY2Fubm90IGhh
cHBlbiBpcyB0aGF0IHdlIHJlcXVpcmUgdGhhdCBQb2x5bW9ycGhpY0FjY2VzcyBjYWxscworICAg
ICAgICAgICAgLy8gQWNjZXNzQ2FzZTo6Z2VuZXJhdGUoKSBvbmx5IGFmdGVyIGl0IGhhcyB2ZXJp
ZmllZCB0aGF0CisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpjb3VsZFN0aWxsU3VjY2VlZCgp
IHJldHVybmVkIHRydWUuCisKKyAgICAgICAgICAgIGRhdGFMb2coIlRoaXMgY29uZGl0aW9uIGlz
IG5vIGxvbmdlciBtZXQ6ICIsIGNvbmRpdGlvbiwgIlxuIik7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ugd2lsbCBl
bWl0IGNvZGUgdGhhdCBoYXMgYSB3ZWFrIHJlZmVyZW5jZSB0aGF0IGlzbid0IG90aGVyd2lzZSBs
aXN0ZWQgYW55d2hlcmUuCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9u
Lm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5h
cHBlbmQoV3JpdGVCYXJyaWVyPEpTQ2VsbD4odm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSk7Cisg
ICAgfQorfQorCiB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKQEAgLTE0MTcsNyArMTUwMiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3BvbHlQcm90b0FjY2Vzc0NoYWluKTsKIAogICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0
Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246
OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewotICAgICAgICAgICAg
c3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29uZGl0aW9uKTsKKyAgICAgICAgICAgIHN0YXRlLmlu
c3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKQEAgLTE1ODIsNyArMTY2NywxMiBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIC8v
IFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRoZXIgb3Ig
bm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNpdGUuCi0g
ICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3Rh
dGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsKKyAgICAgICAgUmVnaXN0
ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAg
aWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgorICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAK
ICAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwgPSBbJl0o
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBib29sIGNhbGxI
YXNSZXR1cm5WYWx1ZSkgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmU7CkBA
IC0xNzEyLDYgKzE4MDIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOwog
ICAgICAgICAgICAgYWNjZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xvd1BhdGgodm0sIGppdCk7
CisKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAgICAgICAgICAgICAgIGpp
dC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGppdC5q
dW1wKCkpOwpAQCAtMTcyMyw4ICsxODE0LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUlt
cGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVv
ZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJP
ZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVn
aXN0ZXJQcmVzZXJ2YXRpb24pLAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IGludCBzdGFja1BvaW50ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQo
KSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0
ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNV
c2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAg
ICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIoKTsKICAgICAgICAgICAg
IHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBjYWxsSGFz
UmV0dXJuVmFsdWUpOwogCkBAIC0xODQ1LDcgKzE5MzYsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHNr
aXBCYXJyaWVyLmFwcGVuZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2NyYXRjaEdQUiwgc2NyYXRj
aEdQUikpOwogCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
ICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tG
b3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNU
b1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgICAgICBh
dXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bFdpdGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisKICAgICAgICAg
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93
UGF0aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICBhdXRv
IG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTg3NSw2ICsx
OTczLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihz
dHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52
YWxpZEdQUlJlZzsKQEAgLTE5MzMsNiArMjAzMywxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIFJl
Z2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAgICAgICAgICAgICBleHRy
YVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAgICAgICAgICAgIGV4dHJh
UmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBDUFUoQVJNNjQpCisgICAg
ICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRl
IHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChl
eHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMTM1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZh
bHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOworICAgICAgICBpZiAo
c3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVs
ZXRpb24pOwpAQCAtMjE5MSw2ICsyMjk3LDEzIEBAIFR5cGVkQXJyYXlUeXBlIEFjY2Vzc0Nhc2U6
OnRvVHlwZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogICAgIH0KIH0KIAordm9p
ZCBTaGFyZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCit7CisgICAg
aWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJz
LT5yZW1vdmUodGhpcyk7CisgICAgSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQo
KTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lz
dGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewpAQCAtMjIwMyw2ICsyMzE2LDEx
MiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKK2Jvb2wgQWNjZXNzQ2Fz
ZTo6ZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYgbGhzLCBjb25zdCBBY2Nlc3NDYXNl
JiByaHMpCit7CisgICAgLy8gV2UgZG8gbm90IGNhcmUgbV9zdGF0ZS4KKyAgICAvLyBBbmQgd2Ug
c2F5ICJmYWxzZSIgaWYgZWl0aGVyIG9mIHRoZW0gaGF2ZSBtX3BvbHlQcm90b0FjY2Vzc0NoYWlu
LgorICAgIGlmIChsaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiB8fCByaHMubV9wb2x5UHJvdG9B
Y2Nlc3NDaGFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMuYWRkaXRpb25h
bFNldCgpIHx8IHJocy5hZGRpdGlvbmFsU2V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAobGhzLm1fb2Zmc2V0ICE9IHJocy5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQcm94eSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0KCkgIT0gcmhzLm1fc3Ry
dWN0dXJlLmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRp
dGlvblNldC5zaXplKCkgIT0gcmhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBsaXRlciA9IGxocy5tX2NvbmRpdGlvblNldC5iZWdpbigp
OworICAgIGF1dG8gcml0ZXIgPSByaHMubV9jb25kaXRpb25TZXQuYmVnaW4oKTsKKyAgICBmb3Ig
KDsgbGl0ZXIgIT0gbGhzLm1fY29uZGl0aW9uU2V0LmVuZCgpOyArK2xpdGVyLCArK3JpdGVyKSB7
CisgICAgICAgIGlmICghKCpsaXRlciA9PSAqcml0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHN3aXRjaCAobGhzLm1fdHlwZSkgeworICAgIGNhc2UgTG9hZDoK
KyAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVO
b25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVNaXNzOgorICAgIGNhc2UgUmVwbGFjZToK
KyAgICBjYXNlIE1pc3M6CisgICAgY2FzZSBHZXRHZXR0ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAg
ICBjYXNlIEluTWlzczoKKyAgICBjYXNlIEFycmF5TGVuZ3RoOgorICAgIGNhc2UgU3RyaW5nTGVu
Z3RoOgorICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJn
dW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQ
cml2YXRlQnJhbmQ6CisgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZERvdWJsZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJ
bmRleGVkQXJyYXlTdG9yYWdlTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTY29wZWRBcmd1bWVudHNM
b2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OExv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4Q2xhbXBlZExvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5
VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MzJMb2FkOgorICAgIGNh
c2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBj
YXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNl
dHRlciByZWxpZXMgb24gQ29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUu
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0
dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1
ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGF1dG8m
IGxoc2QgPSBsaHMuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYg
cmhzZCA9IHJocy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICBpZiAobGhz
ZC5tX2RvbUF0dHJpYnV0ZSB8fCByaHNkLm1fZG9tQXR0cmlidXRlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbGhzZC5tX2N1c3RvbVNsb3RCYXNlID09IHJoc2Qu
bV9jdXN0b21TbG90QmFzZQorICAgICAgICAgICAgJiYgbGhzZC5tX2N1c3RvbUFjY2Vzc29yID09
IHJoc2QubV9jdXN0b21BY2Nlc3NvcjsKKyAgICB9CisKKyAgICBjYXNlIEludHJpbnNpY0dldHRl
cjogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9pbnRyaW5zaWNGdW5jdGlvbiA9PSByaHNk
Lm1faW50cmluc2ljRnVuY3Rpb247CisgICAgfQorCisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VM
b2FkOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCA9
PSByaHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0CisgICAgICAgICAgICAmJiBsaHNkLm1fbW9k
dWxlRW52aXJvbm1lbnQgPT0gcmhzZC5tX21vZHVsZUVudmlyb25tZW50CisgICAgICAgICAgICAm
JiBsaHNkLm1fc2NvcGVPZmZzZXQgPT0gcmhzZC5tX3Njb3BlT2Zmc2V0OworICAgIH0KKworICAg
IGNhc2UgSW5zdGFuY2VPZkhpdDoKKyAgICBjYXNlIEluc3RhbmNlT2ZNaXNzOgorICAgIGNhc2Ug
SW5zdGFuY2VPZkdlbmVyaWM6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnN0YW5j
ZU9mQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnN0YW5jZU9m
QWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9wcm90b3R5cGUgPT0gcmhzZC5t
X3Byb3RvdHlwZTsKKyAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCmluZGV4IGJkZDFiMjM3ZDYxOGEyY2NlODI3MjBmNzJjYTc1MzdkZTNmYTcw
NjguLjljMmZiM2VhNmFkMjhiMTc0NGMwOTc3ODhkYzY0YjM1NWI0ZDBlZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMjgsMTAgKzI4LDEzIEBA
CiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQb2x5
UHJvdG9BY2Nlc3NDaGFpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTc5LDcgKzgyLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiAvLyBXZSB3aWxsIHNvbWV0aW1lcyBidWZmZXIgY29t
bWl0dGVkIEFjY2Vzc0Nhc2VzIGluIHRoZSBQb2x5bW9ycGhpY0FjY2VzcyBvYmplY3QgYmVmb3Jl
IGdlbmVyYXRpbmcKIC8vIGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgcmVnZW5lcmF0ZSBv
bmNlIHdlJ3ZlIGFjY3VtdWxhdGVkIChob3BlZnVsbHkpIG1vcmUgdGhhbiBvbmUgbmV3CiAvLyBB
Y2Nlc3NDYXNlLgotY2xhc3MgQWNjZXNzQ2FzZSB7CitjbGFzcyBBY2Nlc3NDYXNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEFjY2Vzc0Nhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIHB1YmxpYzoKICAgICBl
bnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKQEAgLTE0NywxOSArMTUwLDE5IEBAIGNsYXNzIEFj
Y2Vzc0Nhc2UgewogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2VUeXBl
PihuZXcgQWNjZXNzQ2FzZVR5cGUoYXJndW1lbnRzLi4uKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRP
ZmZzZXQsCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGlu
dmFsaWRPZmZzZXQsCiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24o
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0
ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0m
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKICAgICBB
Y2Nlc3NUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KQEAgLTI1MywxMSArMjU2LDM5IEBAIGNsYXNz
IEFjY2Vzc0Nhc2UgewogI2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0
ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYpIHsgfQogI2VuZGlmCi0gICAgCisKKyAgICB2b2lkIGNv
bGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIENvZGVC
bG9jayopOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gY29tcHV0ZUhhc2gobV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV90eXBlKSwgbV92aWFQcm94eSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIG1fb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbEluU2hhcmluZyhjb25zdCBBY2Nlc3NDYXNlJiwg
Y29uc3QgQWNjZXNzQ2FzZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzQ2FzZShWTSYsIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7Ci0gICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYp
ID0gZGVmYXVsdDsKLSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKSA9IGRl
ZmF1bHQ7CisgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYgb3RoZXIpCisgICAgICAgIDogbV90
eXBlKFdURk1vdmUob3RoZXIubV90eXBlKSkKKyAgICAgICAgLCBtX3N0YXRlKFdURk1vdmUob3Ro
ZXIubV9zdGF0ZSkpCisgICAgICAgICwgbV92aWFQcm94eShXVEZNb3ZlKG90aGVyLm1fdmlhUHJv
eHkpKQorICAgICAgICAsIG1fb2Zmc2V0KFdURk1vdmUob3RoZXIubV9vZmZzZXQpKQorICAgICAg
ICAsIG1fc3RydWN0dXJlKFdURk1vdmUob3RoZXIubV9zdHJ1Y3R1cmUpKQorICAgICAgICAsIG1f
Y29uZGl0aW9uU2V0KFdURk1vdmUob3RoZXIubV9jb25kaXRpb25TZXQpKQorICAgICAgICAsIG1f
cG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0NoYWlu
KSkKKyAgICAgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShvdGhlci5tX2lkZW50aWZpZXIpKQor
ICAgIHsgfQorCisgICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikKKyAgICAg
ICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICAgICAsIG1fc3RhdGUob3RoZXIubV9zdGF0
ZSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KG90aGVyLm1fdmlhUHJveHkpCisgICAgICAgICwgbV9v
ZmZzZXQob3RoZXIubV9vZmZzZXQpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUob3RoZXIubV9zdHJ1
Y3R1cmUpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQob3RoZXIubV9jb25kaXRpb25TZXQpCisg
ICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0No
YWluKQorICAgICAgICAsIG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZpZXIpCisgICAgeyB9
CiAKICAgICBBY2Nlc3NDYXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNzQ2FzZSYpID0gZGVsZXRl
OwogICAgIHZvaWQgcmVzZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1vcmRpYWw7IH0KQEAgLTI3
NSw3ICszMDYsNyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG9u
bHkgZXhpc3RzIGJlY2F1c2Ugb2YgaG93IEFjY2Vzc0Nhc2UgcHV0cyBwb3N0LWdlbmVyYXRpb24g
dGhpbmdzIGludG8gaXRzZWxmLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTY0NTYKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29u
c3Q7CiAKICAgICAvLyBQZXJmb3JtIGFueSBhY3Rpb24gdGhhdCBtdXN0IGJlIHBlcmZvcm1lZCBi
ZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXBvY2ggaW4gd2hpY2ggdGhlIGNhc2UKICAgICAvLyB3YXMg
Y3JlYXRlZC4gUmV0dXJucyBhIHNldCBvZiB3YXRjaHBvaW50IHNldHMgdGhhdCB3aWxsIG5lZWQg
dG8gYmUgd2F0Y2hlZC4KQEAgLTMxNSw2ICszNDYsMTY4IEBAIGNsYXNzIEFjY2Vzc0Nhc2Ugewog
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAorY2xhc3MgU2hhcmVh
YmxlSklUU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgeworcHVibGlj
OgorICAgIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKFZNJiB2bSwgY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+PiYmIGtleXMpCisgICAgICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKKyAg
ICAgICAgLCBtX3ZtKHZtKQorICAgICAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQorICAgIHsK
KyAgICB9CisKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorCisgICAgdm9pZCBvYnNlcnZlWmVy
b1JlZkNvdW50KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBtX2tleXM7Cit9OworCitjbGFzcyBTaGFyZWRKSVRT
dHViU2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsK
K3B1YmxpYzoKKyAgICBTaGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYga2V5
cykKKyAgICB7CisgICAgICAgIEhhc2hlciBoYXNoZXI7CisgICAgICAgIGZvciAoYXV0byYga2V5
IDoga2V5cykKKyAgICAgICAgICAgIFdURjo6YWRkKGhhc2hlciwga2V5LT5oYXNoKCkpOworICAg
ICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgSGFzaCB7Cisg
ICAgICAgIHN0cnVjdCBLZXkgeworICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0OworCisgICAg
ICAgICAgICBLZXkoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BSUmVnIGV4dHJh
R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIEpJVFN0
dWJSb3V0aW5lKiB3cmFwcGVkKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQp
CisgICAgICAgICAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgICAgICAgICAs
IG1fdmFsdWVHUFIodmFsdWVHUFIpCisgICAgICAgICAgICAgICAgLCBtX2V4dHJhR1BSKGV4dHJh
R1BSKQorICAgICAgICAgICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAg
ICAgICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAgICAgICAg
eyB9CisKKyAgICAgICAgICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisg
ICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQoYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4o
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAg
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBl
ZCA9PSBiaXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKTsgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCA9PSBiLm1fd3JhcHBlZAorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fYmFz
ZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIg
PT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBi
Lm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIu
bV9zdHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9
PSBiLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dyYXBwZWQgIT0gYi5tX3dyYXBwZWQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpJVFN0dWJSb3V0aW5lKiBtX3dyYXBwZWQgeyBu
dWxscHRyIH07CisgICAgICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAgICAgICAgR1BS
UmVnIG1fdmFsdWVHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAg
ICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2Vk
UmVnaXN0ZXJzOworICAgICAgICB9OworCisgICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IFNpbXBs
ZUNsYXNzSGFzaFRyYWl0czxLZXk+OworCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IEtleSYgcCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFwLm1fd3JhcHBlZCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHVi
U2V0OjpoYXNoKCpwLm1fd3JhcHBlZC0+a2V5cygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAg
fTsKKworICAgIHN0cnVjdCBTZWFyY2hlciB7CisgICAgICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsK
KyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hl
cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkSklUU3R1YlNl
dDo6aGFzaChzZWFyY2hlci5tX2tleXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkgYSwgY29uc3QgU2VhcmNoZXImIGIpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGEubV9iYXNlR1BSID09IGIubV9iYXNl
R1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIK
KyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAg
ICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0
ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF2ZWMgPSAqYS5tX3dyYXBw
ZWQtPmtleXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYnZlYyA9IGIubV9r
ZXlzOworICAgICAgICAgICAgICAgICAgICBpZiAoYXZlYy5zaXplKCkgPT0gYnZlYy5zaXplKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IGJ2ZWMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2luZGV4
XSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBH
UFJSZWcgbV9iYXNlR1BSOworICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BS
UmVnIG1fZXh0cmFHUFI7CisgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBS
ZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mIG1fa2V5czsKKyAgICB9OworCisgICAgc3RydWN0IFBvaW50ZXJU
cmFuc2xhdG9yIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSklUU3R1YlJvdXRpbmUq
IHN0dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0Ojpo
YXNoKCpzdHViLT5rZXlzKCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgSGFzaDo6S2V5IGtleSwgSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgdm9pZCBhZGQoSGFzaDo6S2V5JiYga2V5KQorICAgIHsKKyAgICAgICAgbV9z
dHVicy5hZGQoa2V5KTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShKSVRTdHViUm91dGluZSog
c3R1YikKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fc3R1YnMuZmluZDxQb2ludGVyVHJh
bnNsYXRvcj4oc3R1Yik7CisgICAgICAgIGlmIChpdGVyICE9IG1fc3R1YnMuZW5kKCkpCisgICAg
ICAgICAgICBtX3N0dWJzLnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBKSVRTdHViUm91dGlu
ZSogZmluZChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIpCisgICAgeworICAgICAgICBhdXRvIGVu
dHJ5ID0gbV9zdHVicy5maW5kPFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9y
PihzZWFyY2hlcik7CisgICAgICAgIGlmIChlbnRyeSAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGVudHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PEhhc2g6OktleSwgSGFzaCwgSGFzaDo6S2V5
VHJhaXRzPiBtX3N0dWJzOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmluZGV4IGZjOThmNGU0MDBi
OGZjNmNjYjg4ZGYwY2FhNGM1YTU1NTM2NzljODQuLjQyZDA3OTRkZDYyNDBjNjM4MGM5YmExN2U5
ZDRmNDMyMDIyMjI3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeVZhbEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJ
bmZvLmgKQEAgLTI2Miw2ICsyNjIsMTQgQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAKICAgICBERUNM
QVJFX1ZJU0lUX0FHR1JFR0FURTsKIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3Bl
cmF0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJn
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRh
cmdldCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0
KTsgfQorCisgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247
CisgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fbm90SW5kZXhK
dW1wVGFyZ2V0OworICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBt
X2JhZFR5cGVKdW1wVGFyZ2V0OworCiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBub3RJbmRleEp1bXA7CiAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PiBiYWRUeXBlSnVtcDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBleGNlcHRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA3ZGYwNWUxMGJjOTBiNjU2ZjM1MDNjODVjMDU0YzVkM2FmYTdj
NmI5Li4xODlhNTg0NzcwZjAyY2IzODdmNzVkOWE0NDM2ZmNiNTA4NGNlNDJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtODYxLDcgKzg2MSw3
IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoYXV0
byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewogICAgICAgICBmb3IgKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBz
dHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1YkluZm8tPmFib3V0VG9EaWUo
Km1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNzcyLDcgKzE3NzIsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKICAg
ICAgICAgLy8gdG8gTExJbnQuCiAKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgc3R1YkluZm8tPmFi
b3V0VG9EaWUoKTsKKyAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCptX3ZtKTsKICAg
ICAgICAgICAgIHN0dWJJbmZvLT5kZXJlZigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA3NzMyOWYzYTQxZTA0YTFjNzJkYjYy
YzFkNThmNGY1YzM2Mzk3MjUxLi44MWFiOTdmYmQ4MThiMWZiN2MxZmJmZWQ0MDI0OWZjOTM3MTYz
Zjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00
MjAsNiArNDIwLDExIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9
CisKKyAgICBib29sIHVzZVNoYXJlZElDKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBK
SVRDb2RlOjp1c2VTaGFyZWRJQyhqaXRUeXBlKCkpOworICAgIH0KICAgICAKICNpZiBFTkFCTEUo
SklUKQogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRl
eCAyMDJlZmM1NDY2NjE5ODU0ZGFhYTYyMGM2OTdmZjFjZmY3Y2YzODM2Li42YTMwZTYzOGUyMDBj
YTA4MGUxNGJhYWQ4N2FlOGUxNjRmZjY5YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2Uo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgbV9jdXN0b21TbG90QmFzZS5z
ZXRNYXlCZU51bGwodm0sIG93bmVyLCBjdXN0b21TbG90QmFzZSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCitSZWY8QWNj
ZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2aWFQcm94
eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+IGN1c3RvbUdldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAogICAgIE9w
dGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQpAQCAtNjEsMTggKzYxLDE4
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpj
cmVhdGUoCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNl
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9u
YWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwog
ICAgIHJlc3VsdC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7CiAgICAgcmVzdWx0LT5t
X2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+KGN1c3RvbUdldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpj
cmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4sIGJvb2wg
dmlhUHJveHksIAogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21T
ZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKIHsKICAgICBBU1NFUlQodHlwZSA9PSBT
ZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCB0eXBlID09IEN1c3RvbUFjY2Vz
c29yU2V0dGVyKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4g
cmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIG51bGxwdHIs
IGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9IGN1c3RvbVNldHRlciA/IEZ1
bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21TZXR0ZXIpIDogbnVsbHB0cjsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTEsOSArOTEsOSBAQCBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nh
c2UmIG90aAogICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9u
ZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUo
KSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiBy
ZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJl
c3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzksNiArMTM5
LDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7Cisg
ICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgYWxsb2NhdG9yLmxv
Y2soc2NyYXRjaEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNlR1BSID0gSW52YWxpZEdQUlJl
ZzsKQEAgLTIyMyw2ICsyMjUsMTEgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBmb3Ig
KEZQUlJlZyByZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2Fs
bC5zZXQocmVnKTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVkZShSZWdpc3Rl
clNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOworICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQo
QVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogCiAgICAgQWNjZXNzQ2FzZVNuaXBwZXRQYXJh
bXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwg
V1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0LT5nZW5lcmF0b3IoKS0+cnVuKGppdCwg
cGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDg3M2U3YzM1ODg4ZWIzYjEyMWRiZmQ3YWYwNmUy
Y2FiZWI3ZDMzYjIuLjEwMGZiMjdlZTg1NjYxNmZiNDE4NDI1ZWMyYzcyMzQ5NGE0YWVmMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRl
ckFjY2Vzc0Nhc2UuaApAQCAtNTMsMTcgKzUzLDE3IEBAIGNsYXNzIEdldHRlclNldHRlckFjY2Vz
c0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAKICAgICB2b2lkIGVt
aXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgRE9NSklUOjpHZXR0
ZXJTZXR0ZXIqLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAgICAgICAgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBh
ZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0
dGVyLAogICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIE9wdGlvbmFsPERPTUF0dHJp
YnV0ZUFubm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94eSA9IGZhbHNlLAogICAg
ICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0dGVyID0gbnVs
bHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1
bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVBY2Nlc3MuY3BwCmluZGV4IDgzMmNkMGI4ZmFmZDk4ZDBiMjg1OTNjYmJiMDU3YmFlOTZmYjMy
MWEuLjEyZDFiNWEwZWM3ZGU1ZjY3N2FkMzZkYTEyYmFjZTQwNjI1YTBmYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0yMTYsNiAr
MjE2LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNjcmF0Y2hSZWdpc3RlcihT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVRhZ0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udmFsdWVUYWdHUFIpOwog
I2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgR1BS
UmVnIHNjcmF0Y2ggPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAgaWYgKGFs
bG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJl
ZzsKQEAgLTM3OSw4ICszODEsNDUgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZklu
QWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKgogICAgIHJldHVy
biBsaW5rZWRDb2RlSW5saW5lOwogfQogCi12b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiB0YXJnZXQpCiB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgYXV0byBqdW1wID0gaml0Lmp1bXAo
KTsKKworICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5
IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KKyAgICBib29sIG5l
ZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNlOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihq
aXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZl
ci5pc1ZhbGlkKCkpOworICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQpOworCisgICAg
RklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlua2lu
ZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3sK
KyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChzdHViSW5m
by5tX2NvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSA9PSBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkgeworICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZzdHViSW5mbyksIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOworICAgICAgICAgICAgaml0LmNh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAgIGJvb2wgbGlu
a2VkQ29kZUlubGluZSA9IGxpbmtDb2RlSW5saW5lKCJzdHViIGNhbGxzIiwgaml0LCBzdHViSW5m
bywgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtlZENvZGVJbmxpbmUpOworICAgICAgICB9
CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKICAgICBhdXRvIGp1bXAgPSBqaXQuanVt
cCgpOwpAQCAtMzk0LDYgKzQzMywyNiBAQCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYgogICAgIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcg
Y29uc3RhbnQganVtcCIpOwogfQogCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAg
IENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAg
Ly8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJl
IGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hD
b21wYWN0aW9uID0gZmFsc2U7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1Yklu
Zm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNC
cmFuY2hDb21wYWN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQo
KSk7CisgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5l
QWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6
OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgcmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuaAppbmRleCBmNDliMzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIyYjg0NzFk
MTJkLi44ZDY2MDFjOGI5OGQ4MTI1ZWM2YjEwMGEwNzljNTFlMTEyYTM4M2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQsNyArMTA0
LDEwIEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVB
cnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMgYm9v
bCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRp
YyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7
Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQg
cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4pOworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxp
bmVDb2RlKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3RhdGljIHZvaWQg
cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
ICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYs
IFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3RoKFN0cnVj
dHVyZVN0dWJJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIxZjI0NTNiYWM3YWZhZTc3MjQx
Y2IwNGEyNWQyMGZkZDk5M2JjMzQuLjk5NDkwOGQ2OGI2MmJiZTA2ZTA5YWEwYjM3ZTc3YzExMGM2
NjkyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5j
ZU9mQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAog
ICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBKU09iamVjdCogcHJvdG90eXBlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNj
ZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNjZXNzVHlw
ZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOwogfQogCiB2b2lkIEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXIm
IGNvbW1hKSBjb25zdApAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNl
OjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1hKSBjb25zdAog
ICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSA9ICIsIEpTVmFsdWUocHJvdG90eXBlKCkp
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNs
b25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+
IHJlc3VsdChuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1
bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaAppbmRleCA2
OWUyYjMxYWE5NGE1OWQzMGRmYjRjYWYyMjQ0OTlkNjAyNzc4NDdjLi5hZDcxZTY5NDJmNDQ5MmZh
OGFiZGVhYWM3ZWEwZmM0NmI3MDc5ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaApAQCAtMzQsMTUgKzM0LDE2IEBA
IG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJs
aWMgQWNjZXNzQ2FzZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEFjY2Vzc0Nhc2U7Cisg
ICAgZnJpZW5kIGNsYXNzIEFjY2Vzc0Nhc2U7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVh
dGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLAogICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
KTsKICAgICAKICAgICBKU09iamVjdCogcHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90
b3R5cGUuZ2V0KCk7IH0KICAgICAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29t
bWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Qg
ZmluYWw7CiAgICAgCiAgICAgfkluc3RhbmNlT2ZBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCA2MzAxZGMyMzM2OTMzZDY3NmMzYmU5ZTkwYzYwMTg5YTEz
MTczODE3Li4zNGIxYTgwMjc4ODk1ZjcxYWJmZTY4Mjk2OWNkZTQzMGYzMmU3ZDYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0zOSwxOCArMzksMTggQEAgSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2gKICAgICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGludHJpbnNpY0Z1
bmN0aW9uKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNG
dW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVu
Y3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZp
ZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBX
VEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6fklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vz
c0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJl
c2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKaW5k
ZXggNjI4NzAwNDE1ODczMWQ1YjhmZWI1MDYzNTNkZTU1OWI2NDQ3NjQ0Ni4uNDdhZjFhMmJmMWRk
NmNiOTEzNjI2MzIxMDE5M2I0N2EzZmYyYWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00
Miw5ICs0Miw5IEBAIGNsYXNzIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJs
aWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJvb2wgY2FuRW1pdEludHJpbnNpY0dldHRlcihK
U0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBlbWl0SW50cmluc2ljR2V0dGVyKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBK
U0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENh
Y2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25l
KCkgY29uc3QgZmluYWw7CiAKICAgICB+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjk1NmRkMGNkNWQwZWFlNjFhMDhlM2Rj
NzY1YmY3NDM0NDFjNWY4ZC4uYzI5YzFkZGZhZjQ4MTU1NjYxNTE3MDg1YTg4ZTE5YTA3M2FiZTdm
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAtNDUsMTggKzQ1LDE4IEBAIE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2U6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIG93bmVyLCBt
b2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1
bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50
LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50LCBTY29wZU9m
ZnNldCBzY29wZU9mZnNldCkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwg
bW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBv
d25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVu
dCwgc2NvcGVPZmZzZXQpKTsKIH0KIAogTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6fk1vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nh
c2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigq
bmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0
U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKaW5kZXgg
OTJhMGI4YTM1YjU0NzE2MjQxMzBkNjUwNjUzZDA1YmY1ZDc5MzM3Ny4uZDQzOTUwYmYwNjMxMzdj
Zjc3M2I4NGM0YWFlNDk0NGIwNGM5YTNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCkBAIC00NCw5
ICs0NCw5IEBAIGNsYXNzIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMg
QWNjZXNzQ2FzZSB7CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOyB9CiAgICAgU2NvcGVP
ZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zmc2V0OyB9CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNN
b2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBlbWl0
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRo
cm91Z2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDVkOTA1NDU5NzRmMWVkMzdmMjhj
YWYzYTJhZWIzNDZhNDkxMGEyODMuLjZkYWNjYmY4NzFjMDg3YWFiYTk4NjM1YzUwMWE3OGI3ZjRm
ZDEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODksNiArOTAs
MTQgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBtX2RhdGEtPm1fdmVjdG9yLmVuZCgpOwogICAg
IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgSGFzaGVyIGhh
c2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBjb25kaXRpb24gOiAqdGhpcykKKyAgICAgICAgICAg
IGFkZChoYXNoZXIsIGNvbmRpdGlvbi5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFzaGVyLmhh
c2goKTsKKyAgICB9CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yT2JqZWN0
KEpTT2JqZWN0KikgY29uc3Q7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yQ29uZGl0
aW9uS2luZChQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAwM2Ey
ZjY3MWY3NDQ2ZTRhY2FkY2Q3NGI5Yzg3ZTg5YTdkMDlhMDE1Li41ZDNmMTM2N2VhNGQ1NGNiZDUx
ZmFiNDJkY2IzMTY5MWJkMTlmZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
ICAgICBvdXQucHJpbnQoIjoiLCBtX2NvZGUpOwogfQogCi12b2lkIEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNv
bmRpdGlvbikKK3ZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRp
dGlvbikKIHsKLSAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVy
ZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KAotICAgICAgICB3YXRjaHBvaW50cywgaml0LT5jb2Rl
QmxvY2soKSwgc3R1YkluZm8sIGNvbmRpdGlvbik7CisgICAgV2F0Y2hwb2ludHNPblN0cnVjdHVy
ZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCh3YXRjaHBvaW50
cywgY29kZUJsb2NrLCBzdHViSW5mbywgY29uZGl0aW9uKTsKIH0KIAogdm9pZCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkKQEAgLTczLDcgKzcyLDEwIEBAIHZvaWQgQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCiB2b2lkIEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZTo6c3VjY2VlZCgpCiB7CiAgICAgcmVzdG9yZVNjcmF0Y2goKTsKLSAgICBzdWNjZXNz
LmFwcGVuZChqaXQtPmp1bXAoKSk7CisgICAgaWYgKGppdC0+Y29kZUJsb2NrKCktPnVzZVNoYXJl
ZElDKCkpCisgICAgICAgIGppdC0+cmV0KCk7CisgICAgZWxzZQorICAgICAgICBzdWNjZXNzLmFw
cGVuZChqaXQtPmp1bXAoKSk7CiB9CiAKIGNvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OmxpdmVSZWdpc3RlcnNGb3JDYWxsKCkKQEAgLTEyNiwxMCArMTI4LDExIEBAIGF1
dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9y
Q2FsbChjb25zdCBSZWdpc3RlclNlCiAgICAgfTsKIH0KIAotYXV0byBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlv
bnMoKSAtPiBTcGlsbFN0YXRlCithdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVM
aXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3Rl
clNldCYgZXh0cmEpIC0+IFNwaWxsU3RhdGUKIHsKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0
ZXJzID0gYWxsb2NhdG9yLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgbGl2ZVJlZ2lzdGVycy5leGNs
dWRlKGNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgbGl2ZVJlZ2lzdGVycy5tZXJnZShleHRy
YSk7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQgZXh0cmFTdGFja1BhZGRpbmcgPSAwOwogICAg
IHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bCgqaml0LCBsaXZlUmVnaXN0ZXJzLCBleHRyYVN0YWNrUGFkZGluZyk7CkBAIC0yNTIsNyArMjU1
LDcgQEAgUG9seW1vcnBoaWNBY2Nlc3M6On5Qb2x5bW9ycGhpY0FjY2VzcygpIHsgfQogCiBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICBjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAotICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2FzZXNUb0FkZCkKKyAgICBWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIApAQCAtMjY4LDkgKzI3
MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2Vz
KAogICAgIC8vICAgYWRkIG1vcmUgdGhpbmdzIGFmdGVyIGZhaWx1cmUuCiAgICAgCiAgICAgLy8g
Rmlyc3QgZW5zdXJlIHRoYXQgdGhlIG9yaWdpbmFsQ2FzZXNUb0FkZCBkb2Vzbid0IGNvbnRhaW4g
ZHVwbGljYXRlcy4KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+PiBjYXNl
c1RvQWRkOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdpbmFsQ2FzZXNUb0FkZC5zaXplKCk7ICsraSkg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbXlDYXNlID0gV1RGTW92ZShv
cmlnaW5hbENhc2VzVG9BZGRbaV0pOworICAgICAgICBhdXRvIG15Q2FzZSA9IFdURk1vdmUob3Jp
Z2luYWxDYXNlc1RvQWRkW2ldKTsKIAogICAgICAgICAvLyBBZGQgaXQgb25seSBpZiBpdCBpcyBu
b3QgcmVwbGFjZWQgYnkgdGhlIHN1YnNlcXVlbnQgY2FzZXMgaW4gdGhlIGxpc3QuCiAgICAgICAg
IGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTM0Niw5ICszNDksOSBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKIH0KIAogQWNjZXNzR2VuZXJhdGlv
blJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSgKLSAgICBjb25zdCBHQ1NhZmVDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3
QWNjZXNzKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFJl
ZjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCiB7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
PiwgMj4gbmV3QWNjZXNzZXM7CiAgICAgbmV3QWNjZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3QWNj
ZXNzKSk7CiAgICAgcmV0dXJuIGFkZENhc2VzKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgc3R1Yklu
Zm8sIFdURk1vdmUobmV3QWNjZXNzZXMpKTsKIH0KQEAgLTQ0MCw3ICs0NDMsNyBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogICAgIHVuc2lnbmVkIHNyY0luZGV4ID0gMDsKICAgICB1bnNpZ25l
ZCBkc3RJbmRleCA9IDA7CiAgICAgd2hpbGUgKHNyY0luZGV4IDwgbV9saXN0LnNpemUoKSkgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1f
bGlzdFtzcmNJbmRleCsrXSk7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9
IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRo
ZSBjYXNlIGhhZCBiZWVuIGdlbmVyYXRlZCwgdGhlbiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9yaWdp
bmFsIGluIG1fbGlzdCBpbiBjYXNlIHdlCiAgICAgICAgIC8vIGZhaWwgdG8gcmVnZW5lcmF0ZS4g
VGhhdCBjYXNlIG1heSBoYXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBj
b2RlIHRoYXQgaXQKQEAgLTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
ICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAgIGlmIChz
dHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRjaEdQUiA9
IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDUsNiBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0YXRlLmpp
dCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KLSAg
ICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAK
ICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MjEsMTIgKzUyMCwz
MCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNz
SW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczogIiwg
bGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAKKworICAgIGJvb2wgZG9lc0NhbGxzID0gZmFs
c2U7CisgICAgYm9vbCBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGZhbHNlOworICAgIGJvb2wg
Y2FuQmVTaGFyZWQgPSB0cnVlOworICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKKyAg
ICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGtleXMoY2FzZXMuc2l6ZSgpKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7Cisg
ICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOwor
ICAgICAgICBpZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50cnkt
PnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCisgICAgICAgICAgICBkb2VzSlNHZXR0ZXJT
ZXR0ZXJDYWxscyA9IHRydWU7CisgICAgICAgIGtleXNbaW5kZXhdID0gZW50cnk7CisgICAgICAg
ICsraW5kZXg7CisgICAgfQorICAgIHN0YXRlLm1fZG9lc0NhbGxzID0gZG9lc0NhbGxzOworICAg
IHN0YXRlLm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxs
czsKKyAgICAvLyBHZXR0ZXIgLyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0
bWVudCwgd2hpY2ggaXMgdGllZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMg
dGhpcyBjb2RlIHVuc2hhcmVhYmxlLgorICAgIGlmIChkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykK
KyAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKwogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Un
cmUgY29udmluY2VkIHRoYXQgJ2Nhc2VzJyBjb250YWlucyB0aGUgY2FzZXMgdGhhdCB3ZSB3YW50
IHRvIEpJVCBub3cgYW5kIHdlCiAgICAgLy8gd29uJ3QgY2hhbmdlIHRoYXQgc2V0IGFueW1vcmUu
CiAgICAgCiAgICAgYm9vbCBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayA9IHRydWU7Ci0gICAg
Ym9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBmYWxzZTsKICAgICBib29sIG5lZWRzSW50MzJQ
cm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sg
PSBmYWxzZTsKICAgICBib29sIG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayA9IGZhbHNlOwpAQCAt
NTQyLDEwICs1NTksNzEgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgfQogICAg
ICAgICBjb21taXQobG9ja2VyLCB2bSwgc3RhdGUud2F0Y2hwb2ludHMsIGNvZGVCbG9jaywgc3R1
YkluZm8sICpuZXdDYXNlKTsKICAgICAgICAgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgJj0g
bmV3Q2FzZS0+Z3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2soc3R1YkluZm8pOwotICAgICAgICBpZiAo
bmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBuZXdDYXNlLT50eXBlKCkg
PT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQotICAgICAgICAgICAgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxs
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5ld0Nhc2UtPnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAg
ICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgfQorICAgIGlmIChuZWVkc1N5bWJvbFByb3Bl
cnR5Q2hlY2sgfHwgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzSW50MzJQcm9wZXJ0
eUNoZWNrKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCisgICAgUmVmUHRyPEpJVFN0
dWJSb3V0aW5lPiBzdHViOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAg
ICAgICAgaWYgKGNhbkJlU2hhcmVkKSB7CisgICAgICAgICAgICBTaGFyZWRKSVRTdHViU2V0OjpT
ZWFyY2hlciBzZWFyY2hlciB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQUiwKKyAg
ICAgICAgICAgICAgICBzdHViSW5mby52YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICBzdHViSW5m
by5yZWdzLnRoaXNHUFIsCisgICAgICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwK
KyAgICAgICAgICAgICAgICBzdHViSW5mby51c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAg
IGtleXMKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBzdHViID0gdm0ubV9zaGFyZWRKSVRT
dHVicy0+ZmluZChzZWFyY2hlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGZpbmlz
aENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxKSVRTdHViUm91dGluZT4mJiBzdHViKSB7Cisg
ICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZNb3ZlKHN0dWIpOworICAgICAgICBtX3dhdGNocG9p
bnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CisgICAgICAgIGlmICghc3RhdGUud2Vh
a1JlZmVyZW5jZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZp
eGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVu
Y2VzKSk7CisgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQor
ICAgICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCks
ICJcbiIpOworCisgICAgICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOworICAgICAgICBtX2xp
c3Quc2hyaW5rVG9GaXQoKTsKKworICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5k
IHJlc3VsdEtpbmQ7CisgICAgICAgIGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFj
Y2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKKyAgICAgICAgICAg
IHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOworCisgICAgICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0KHJlc3VsdEtpbmQsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAg
IH07CisKKyAgICBpZiAoc3R1YikgeworICAgICAgICBmb3IgKGF1dG8mIGFjY2Vzc0Nhc2UgOiBj
YXNlcykKKyAgICAgICAgICAgIGFjY2Vzc0Nhc2UtPmNvbGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJl
dXNlKHN0YXRlLCBjb2RlQmxvY2spOworICAgICAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRp
b24oV1RGTW92ZShzdHViKSk7CiAgICAgfQogCisgICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxv
Y2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFy
ZWRJQygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5tX2RvZXNKU0dldHRlclNldHRlckNhbGxzKSB7
CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGd1YXJhbnRlZSB0aGF0IHN0YWNrLXBvaW50ZXIg
aXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhpcyBpcyBub3QgYSBwcm9ibGVtIGlmIHdlIGFyZSBub3Qg
aGF2aW5nIEpTIGdldHRlciAvIHNldHRlciBjYWxscyBzaW5jZSBzdGFjay1wb2ludGVyIGlzCisg
ICAgICAgICAgICAvLyBjYWxsZWUtc2F2ZSByZWdpc3RlciBhbmQgaXQgaXMga2VwdCBiZXlvbmQg
Y2FsbHMuIEhvd2V2ZXIsIG91ciBKUyBleGVjdXRhYmxlIGNhbGwgZG9lcyBub3Qgc2F2ZSBzdGFj
ay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0aW5nIHN0YWNrLXBvaW50ZXIgYWZ0ZXIKKyAgICAg
ICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRlciBjYWxscy4gQnV0IHRoaXMgY291bGQgYmUgZGlm
ZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3RhY2stcG9pbnRlciwgYW5kIG1ha2VzIFBBQyB0YWdn
aW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8vIFRvIGVuc3VyZSBQQUMtdGFnZ2luZyB3b3JrLCB3
ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRlciB0byB0aGUgYXBwcm9wcmlhdGUgb25lLgorICAg
ICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB9CisKKyAgICBzdGF0ZS5wcmVzZXJ2ZWRS
ZXVzZWRSZWdpc3RlclN0YXRlID0KKyAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVn
aXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNr
U3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAgCiAgICAgaWYgKGNhc2VzLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIHVubGlrZWx5LCBidXQgd2UgbWFrZSBpdCBsZWdhbCBh
bnl3YXkuCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuanVtcCgpKTsK
QEAgLTY5MCw3ICs3NjgsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNj
ZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzID0gbnVsbHB0cjsKICAgICBE
aXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmc7
Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBo
YXNKU0dldHRlclNldHRlckNhbGwpIHsKKyAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdp
c3RlcnNJZkV4Y2VwdGlvbigpICYmIGRvZXNKU0dldHRlclNldHRlckNhbGxzKSB7CiAgICAgICAg
IC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLgogICAgICAgICAvLyBOb3RlIHRoYXQgdGhp
cyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gZG9pbmcgZ2VuZXJpY1Vud2luZCBmcm9tIGEg
cHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4KICAgICAgICAgLy8gTm90ZSBhbHNvIHRoYXQgdGhpcyBp
cyBub3QgcmVhY2hhYmxlIGZyb20gY3VzdG9tIGdldHRlci9zZXR0ZXIuIEN1c3RvbSBnZXR0ZXIv
c2V0dGVycyB3aWxsIGhhdmUgCkBAIC03MzAsNiArODA4LDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9jCiAgICAgICAgIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyA9IHN0YXRl
LmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZygpOwogICAgIH0KIAorICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgZmFpbHVyZS5saW5rKCZqaXQpOwor
ICAgICAgICAvLyBJbiBBUk02NCwgd2UgZG8gbm90IHB1c2ggYW55dGhpbmcgb24gc3RhY2sgc3Bl
Y2lhbGx5LgorICAgICAgICAvLyBTbyB3ZSBjYW4ganVzdCBqdW1wIHRvIHRoZSBzbG93LXBhdGgg
ZXZlbiB0aG91Z2ggdGhpcyB0aHVuayBpcyBjYWxsZWQgKG5vdCBqdW1wZWQpLgorICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHRhaWwgY2FsbCB0byB0aGUgdGh1bmsgd2hpY2ggY2FsbHMgdGhl
IHNsb3cgcGF0aCBmdW5jdGlvbi4KKyAgICAgICAgLy8gQW5kIHdlIHNob3VsZCBlbGltaW5hdGUg
SUMgc2xvdy1wYXRoIGdlbmVyYXRpb24gaW4gQmFzZWxpbmVKSVQuCisgICAgICAgIGppdC5mYXJK
dW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICB9CisKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2Rl
QmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAg
ICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03MzksOSArODI2
LDEyIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBzdWNjZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAK
LSAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAg
IGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIEFTU0VSVChzdGF0
ZS5zdWNjZXNzLmVtcHR5KCkpOworICAgIGVsc2UgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmso
c3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZh
aWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgfQogICAgIAogICAg
IGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVy
YXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIgZm9yICIsIGxpc3REdW1wKGNhc2VzKSwgIlxu
Iik7CkBAIC03NDksMzUgKzgzOSwyMSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3Jw
aGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZSA9IEZJTkFMSVpF
X0NPREVfRk9SKAogICAgICAgICBjb2RlQmxvY2ssIGxpbmtCdWZmZXIsIEpJVFN0dWJSb3V0aW5l
UHRyVGFnLAogICAgICAgICAiJXMiLCB0b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZvciAiLCAqY29k
ZUJsb2NrLCAiICIsIHN0dWJJbmZvLmNvZGVPcmlnaW4sICIgd2l0aCByZXR1cm4gcG9pbnQgIiwg
c3VjY2Vzc0xhYmVsLCAiOiAiLCBsaXN0RHVtcChjYXNlcykpLmRhdGEoKSk7Ci0KLSAgICBib29s
IGRvZXNDYWxscyA9IGZhbHNlOwotICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKLSAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpCi0gICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+
ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOwotICAgIAotICAgIG1fc3R1YlJvdXRpbmUgPSBj
cmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxz
VG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25z
RXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7Ci0g
ICAgbV93YXRjaHBvaW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwotICAgIGlmICgh
c3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2Vz
ID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1Jl
ZmVyZW5jZXMpKTsKLSAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAg
Ci0gICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7Ci0gICAgbV9saXN0LnNocmlua1RvRml0KCk7
Ci0gICAgCi0gICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5kOwotICAg
IGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgp
IHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3Vs
dEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOwotICAgIAot
ICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIGNvZGUuY29kZSgp
KTsKKyAgICBzdHViID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgV1RGTW92ZShrZXlzKSwg
dm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2Nh
bGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0
ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpCisgICAgICAgICAgICB2bS5tX3No
YXJlZEpJVFN0dWJzLT5hZGQoU2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5KHN0dWJJbmZvLmJh
c2VHUFIsIHN0dWJJbmZvLnZhbHVlR1BSLCBzdHViSW5mby5yZWdzLnRoaXNHUFIsIHN0dWJJbmZv
Lm1fc3R1YkluZm9HUFIsIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsIHN0dWIuZ2V0KCkpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CiB9
CiAKLXZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoKQordm9pZCBQb2x5bW9ycGhp
Y0FjY2Vzczo6YWJvdXRUb0RpZShWTSYgdm0pCiB7CiAgICAgaWYgKG1fc3R1YlJvdXRpbmUpCi0g
ICAgICAgIG1fc3R1YlJvdXRpbmUtPmFib3V0VG9EaWUoKTsKKyAgICAgICAgbV9zdHViUm91dGlu
ZS0+YWJvdXRUb0RpZSh2bSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCAyOTIw
MzI2ZGNjOTE1NDc0YjNmMWVlYjdmNzI1ZTZhYjM0YWVjYjQxLi5mOWY4Y2JmMGQ1NTk4ZTFmMWVm
MjMwMWI0NThmYmFkYjAzMzQ0ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMTQxLDEwICsxNDEsMTAgQEAgY2xhc3Mg
UG9seW1vcnBoaWNBY2Nlc3MgewogICAgIC8vIFdoZW4gdGhpcyBmYWlscyAocmV0dXJucyBHYXZl
VXApLCB0aGlzIHdpbGwgbGVhdmUgdGhlIG9sZCBzdHViIGludGFjdCBidXQgeW91IHNob3VsZCBu
b3QgdHJ5CiAgICAgLy8gdG8gY2FsbCB0aGlzIG1ldGhvZCBhZ2FpbiBmb3IgdGhhdCBQb2x5bW9y
cGhpY0FjY2VzcyBpbnN0YW5jZS4KICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENhc2Vz
KAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiwgMj4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwg
Mj4pOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlKAotICAgICAgICBjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAgY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIFJlZjxBY2Nlc3NDYXNlPik7CiAgICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBy
ZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICAK
QEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8gb3B0
aW1pemF0aW9uIHRvIHRoZW4gYXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBhZ2FpbiBkdXJpbmcg
dGhlIGZpeHBvaW50LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wgcHJvcGFn
YXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OwogCi0gICAgdm9pZCBhYm91dFRvRGllKCk7
CisgICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BDKHZvaWQqIHBjKSBjb25zdApAQCAtMTc5
LDcgKzE3OSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlOwogICAg
IAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gTGlz
dFR5cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlw
ZTsKICAgICAKICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9ja2VyJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0
dWJJbmZvPiYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwKQEAgLTE5Niw2ICsxOTYs
OCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAK
ICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21h
TW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNl
KQorICAgICAgICAsIG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJl
Z2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25l
ZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxj
dWxhdGVkQ2FsbFNpdGVJbmRleChmYWxzZSkKQEAgLTIyNSw4ICsyMjcsMTAgQEAgc3RydWN0IEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxK
U0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5r
SW5mb3M7CisgICAgYm9vbCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzIDogMTsKKyAgICBib29s
IG1fZG9lc0NhbGxzIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KENvZGVC
bG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAKICAgICB2b2lkIHJlc3Rv
cmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgsNyArMjUyLDcgQEAgc3Ry
dWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGNhbGN1
bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKIAogICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3QgUmVnaXN0
ZXJTZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBTcGlsbFN0YXRlIHByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVn
aXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNG
cm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBTcGlsbFN0YXRlJik7CiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3QgU3BpbGxT
dGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAK
aW5kZXggY2MyOTczYzk0ZTExNjJhMzg5ZTJlZjUwZWVhNmEzYjM0ZTc1ZmE5ZC4uNGJmNzgwZWQz
MTc2NmVkZTZiY2M1NjA0NDZhNTA3OWFjYmNjMTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcApAQCAtMzgsMTkg
KzM4LDE5IEBAIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2VzCiAgICAgbV92aWFQcm94eSA9IHZpYVBy
b3h5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25T
ZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3ND
YXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFj
Y2Vzc0NoYWluKQogewogICAgIEFTU0VSVCh0eXBlID09IExvYWQgfHwgdHlwZSA9PSBNaXNzIHx8
IHR5cGUgPT0gR2V0R2V0dGVyIHx8IHR5cGUgPT0gUmVwbGFjZSk7Ci0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVBy
b3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogUHJv
eHlhYmxlQWNjZXNzQ2FzZTo6flByb3h5YWJsZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAor
UmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJveHlhYmxlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBQcm94eWFi
bGVBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFBy
b3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKaW5kZXggZGMzOWUyNmNhMmY0YjJiN2FiYTEyYjVh
NTVmMzI2NjQ0MTBlZmE1Yy4uZTg0Mzg1Y2E3NWM5Zjc1MmU4ZThlMTZjZGRlMGFiY2FjN2JjYzRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFj
Y2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgUHJveHlhYmxlQWNjZXNzQ2Fz
ZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIAogICAgIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxT
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9uYWxTZXQuZ2V0KCk7IH0KIAot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0KCksCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBK
U0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgYm9vbCB2aWFQcm94eSA9IGZhbHNlLCBXYXRj
aHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwg
Q29tbWFQcmludGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB+UHJveHlhYmxlQWNjZXNzQ2FzZSgpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcAppbmRleCBjOGU2YmM2M2EzNmEzOWI4NDU4YjkwMGNiMmE1MmVmNGYxNTExMjBm
Li5kZTAyNWU3NGVkZDgyZmZlODYxYjczNzczMWQ1MGEyNDZjNDk5Yzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAgICAsIHByb3BlcnR5SXNJ
bnQzMihmYWxzZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2UpCiB7CisgICAgcmVncy50
aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1
cmVTdHViSW5mbygpCkBAIC0xMjAsMTEgKzEyMSwxMSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
OjpkZXJlZigpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBT
dHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSgpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjph
Ym91dFRvRGllKFZNJiB2bSkKIHsKICAgICBzd2l0Y2ggKG1fY2FjaGVUeXBlKSB7CiAgICAgY2Fz
ZSBDYWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSgpOworICAgICAg
ICB1LnN0dWItPmFib3V0VG9EaWUodm0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OlVuc2V0OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKQEAgLTEzOSw3
ICsxNDAsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKCkKIH0KIAogQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKLSAg
ICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFNb2RlLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gYWNj
ZXNzQ2FzZSkKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2Rl
IGVjbWFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBSZWZQdHI8QWNjZXNzQ2FzZT4g
YWNjZXNzQ2FzZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTE1NSw3ICsxNTYs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3ND
YXNlKAogICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAgICAgCiAg
ICAgICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBX
VEZNb3ZlKGFjY2Vzc0Nhc2UpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2Fz
ZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBhY2Nlc3NDYXNlLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRl
cm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVzdWx0
OiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTcwLDkgKzE3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9
IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwor
ICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBwcmV2
aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVCbG9j
aywgaWRlbnQsICp0aGlzKTsKKyAgICAgICAgICAgIGF1dG8gcHJldmlvdXNDYXNlID0gQWNjZXNz
Q2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7
CiAgICAgICAgICAgICBpZiAocHJldmlvdXNDYXNlKQogICAgICAgICAgICAgICAgIGFjY2Vzc0Nh
c2VzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzQ2FzZSkpOwogICAgICAgICAgICAgCkBAIC0yNzYs
NyArMjc3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRJbkJ5SUQo
Y29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6
SW5zdGFuY2VPZjoKLSAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKKyAgICAgICAgcmVz
ZXRJbnN0YW5jZU9mKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAq
dGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4ODI1NjhjMjZlYWQ2MmU0MGVhZTdm
MjcwODBmMDkyMWVkZWM3NjQ1Li4yZjZjYmEzMWJmZmJhYzRjMWMwYTJmOTUxODMyNmYyYzMzMDc3
NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaApAQCAtODcsMTIgKzg3LDEyIEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsK
ICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNl
JiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9m
ZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25z
dCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2Jq
ZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLSAg
ICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+KTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayopOwogCiAgICAgdm9pZCBkZXJlZigp
OwotICAgIHZvaWQgYWJvdXRUb0RpZSgpOworICAgIHZvaWQgYWJvdXRUb0RpZShWTSYpOwogCiAg
ICAgREVDTEFSRV9WSVNJVF9BR0dSRUdBVEU7CiAKQEAgLTM0NywxNiArMzQ3LDI0IEBAIGNsYXNz
IFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJU
YWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9uOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb247CiAKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fY29kZVB0cjsKKyAgICBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKworICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZDb2RlUHRyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0
dWJJbmZvLCBtX2NvZGVQdHIpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dQ
YXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHVi
SW5mbywgc2xvd1BhdGhTdGFydExvY2F0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0
dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzOwogCi0gICAgR1BSUmVnIGJhc2VHUFI7Ci0gICAgR1BSUmVnIHZhbHVlR1BSOworICAgIEdQ
UlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyB2YWx1ZUdQUiB7IElu
dmFsaWRHUFJSZWcgfTsKICAgICB1bmlvbiB7CiAgICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAg
ICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwogICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CiAg
ICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAgICB9IHJlZ3M7CisgICAgR1BSUmVnIG1fc3R1Yklu
Zm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJS
ZWcgdmFsdWVUYWdHUFI7CiAgICAgLy8gRklYTUU6IFszMi1iaXRzXSBDaGVjayBpZiBTdHJ1Y3R1
cmVTdHViSW5mbzo6YmFzZVRhZ0dQUiBpcyB1c2VkIHNvbWV3aGVyZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA4YWRlYWQ1MGY0NTU2Y2ZmMjVlN2M3
Yzk5NzgzMDRkNDE3NzA5NzQ3Li40NzY1NGE3NmRiNWExMTNmMGZjYjZiZjY4YTNkMjJhY2JjNmEw
MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0x
NTQsNiArMTU0LDExIEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7
CiAgICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZnVu
Y3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CisKKyAgICB2b2lk
IGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBjYWxsKGFkZHJlc3MsIE9wZXJhdGlvblB0clRhZyk7CisgICAgfQogICAgIAogICAgIHZvaWQg
ZXhjZXB0aW9uQ2hlY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
bG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDk4MWU4NmNkN2RkYjAxY2E0OTU0M2I0ZTUzNzYwMDFi
ZTgxNjAxMjYuLjM4ODZjYjJiZGJiODNkYzc3Yjc3MjVlYWY1NzQxMjQ1NWVjMTFiOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAg
LTE4OCw2ICsxODgsOCBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdAogICAgIHN0ZDo6dHVwbGU8
QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKIH07CiAKKworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBK
dW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLApAQCAtMjYzLDYgKzI2NSw2NiBAQCBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgICAgIGZy
b20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRU
eXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRz
U2xvd1BhdGhJQ0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8
SnVtcFR5cGUsIFJlc3VsdFR5cGU+IHsKK3B1YmxpYzoKKyAgICBDYWxsUmVzdWx0QW5kQXJndW1l
bnRzU2xvd1BhdGhJQ0dlbmVyYXRvcigKKyAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9y
PEp1bXBUeXBlLCBSZXN1bHRUeXBlPihmcm9tLCBqaXQsIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQs
IHJlc3VsdCkKKyAgICAgICAgLCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAs
IG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcykKKyAg
ICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAsIG1fYXJndW1lbnRzKHN0ZDo6
Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICwgbV9zdHViSW5mbyhz
dHViSW5mbykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHNpemVfdC4u
LiBBcmd1bWVudHNJbmRleD4KKyAgICB2b2lkIHVucGFja0FuZEdlbmVyYXRlKFNwZWN1bGF0aXZl
SklUKiBqaXQsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+KQorICAgIHsK
KyAgICAgICAgdGhpcy0+c2V0VXAoaml0KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAgaml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mb0dQUik7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPFJlc3VsdFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUp
CisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRo
T3BlcmF0aW9uQWRkcmVzcywgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4u
Lik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlv
blR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1f
cmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAg
ICAgIHRoaXMtPnRlYXJEb3duKGppdCk7CisgICAgfQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVy
bmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIGZpbmFsCisgICAgeworICAgICAgICB1bnBhY2tBbmRH
ZW5lcmF0ZShqaXQsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3Rk
Ojp0dXBsZTxBcmd1bWVudHMuLi4+Pjo6dmFsdWU+KCkpOworICAgIH0KKworICAgIEdQUlJlZyBt
X3N0dWJJbmZvR1BSOworICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0
aW9uQWRkcmVzczsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxl
PEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1
YkluZm87Cit9OworCisKKwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgor
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwo
CisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBz
bG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGls
bFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVp
cmVtZW50LAorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQor
eworICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElD
R2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4u
Lj4+KGZyb20sIGppdCwgc3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFk
ZHJlc3MsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50
cy4uLik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlv
blR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAg
IEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1Bh
dGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRo
SUNDYWxsKGZyb20sIGppdCwgc3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlv
bkFkZHJlc3MsIGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDczZjkxMTRlYWY4
ODNjZWVmOWNhMDNiODRmMTZlZTY0NGU2ZDI4ZjguLmMzMDY2NjY1MDZhZjU1ODZjNjQxMTFiMThh
NjZiNTI5MjU1ZjVjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCkBAIC0xMDI2LDI0ICsxMDI2LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAog
ICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNl
OiB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKLSAgICAgICAgY2FjaGVk
R2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxs
LCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7
CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNl
KTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIApAQCAtMTA1MSw3ICsxMDYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxs
LCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwNjcs
MjcgKzEwNzksMzkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChO
b2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwotCiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
IH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6
Okp1bXAoKSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3Bp
bGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5q
c1ZhbHVlUmVncygpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CkBAIC0xMDk2LDcgKzEx
MjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5v
ZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBl
KTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwogICAgICAgICBicmVhazsKQEAgLTExMTEsMTQgKzExMzUsMTkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2Rl
KQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAg
ICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7Ci0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKQEAgLTExMjgsMjAgKzExNTcsMzUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAg
ICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
KTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
LAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAg
ICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMTcwLDIyICsx
MjE0LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5v
ZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkK
IHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAg
ICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwotCiAgICAgICAgIEpT
VmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5KTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVl
UmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2so
bm9kZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTE5NCwyMCArMTI0MywzNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAg
ICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsK
IAogICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJl
Z3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3Ms
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkg
eworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwpAQCAtMTIzNiw5ICsxMzAwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UsIFBheWxv
YWRXb3JkKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIApAQCAtMTI0OCwxNCArMTMxOCwyNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNl
cHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgp
KTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJl
c3VsdFJlZ3MpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAK
LSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBnZW4uc2xvd1BhdGhK
dW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAotICAgICAgICBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAg
ICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsK
KyAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzU2MSw5ICszNjQy
LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5v
ZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IEdldFByaXZhdGVOYW1lKTsKICAgICBERkdfQVNT
RVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgp
ID09IFN5bWJvbFVzZSk7Ci0gICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwg
MSkpOwogCisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVl
UmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5v
ZGUsIDEpKTsKKwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CkBAIC0zNTc0LDE0ICszNjY1LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJh
c2UpKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFt
ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3VsdC5yZWdzKCkp
OworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisg
ICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFr
ZVNsb3dQYXRoQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICBhdXRvIG1ha2VTbG93UGF0aElD
Q2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgK
KyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplLAorICAgICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1
YkluZm9HUFIsCisgICAgICAgICAgICAgICAgYmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
cHJvcGVydHkucGF5bG9hZEdQUigpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQ
YXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwKICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksCkBAIC0zNTg5LDggKzM2ODYsOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBi
YXNlLCBKUwogICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoID0gYmFzZUlzS25vd25DZWxsCi0gICAgICAgID8gbWFrZVNsb3dQYXRoQ2FsbChD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCi0gICAgICAgIDogbWFr
ZVNsb3dQYXRoQ2FsbChiYXNlKTsKKyAgICAgICAgPyBtYWtlU2xvd1BhdGhJQ0NhbGwoQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXlsb2FkR1BSKCkpKQorICAgICAgICA6IG1ha2VTbG93
UGF0aElDQ2FsbChiYXNlKTsKIAogICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAg
LTM2MDIsMjggKzM2OTksNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZh
dGVOYW1lQnlJZChOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2Rl
LCAwKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAg
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6
Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKyAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxl
cjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIE9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7
CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQog
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7
CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRU
b1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9H
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzcyMiwyOSAr
MzgzMSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9k
ZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJ
ZChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2Vu
ZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAogICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCiAgICAg
YXV0byBwdXRLaW5kID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBQ
dXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJlY3RQcml2YXRl
RmllbGRTZXQ7Ci0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBw
dXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
c3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+
Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVn
cygpOwotCiAgICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNw
ZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwgYnJhbmRHUFIpOwpAQCAtMzc1OCwxNiArMzg3
OCwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9k
ZSogbm9kZSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
YmFzZVJlZ3MpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5v
UmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVn
cywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0Nh
bGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9w
dGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3Vs
dCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdz
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0
LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNzc4LDkgKzM5MDYsMTUgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAg
ICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAK
QEAgLTM3OTIsMTYgKzM5MjYsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFBy
aXZhdGVCcmFuZChOb2RlKiBub2RlKQogCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFBy
aXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVy
dHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKLSAgICAgICAgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
SUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5k
T3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZh
dGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTE5LDIyICs0MDYxLDI3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRH
UFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3Rv
dHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNj
cmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2Up
CiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUo
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BS
LCBzY3JhdGNoMkdQUiwKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJ
VCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCks
IHJlc3VsdEdQUiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVn
cy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAg
ICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8
IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
c2xvd0Nhc2UpOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBwcm90b3R5cGVSZWdzKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVn
cyk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAt
Mzk0NSw2ICs0MDkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkg
PT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgIApAQCAtMzk1MiwxMyArNDEwMCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAg
ICAgICAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
ICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1
ZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHByb3RvdHlwZS5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIg
PSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9y
Q2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVH
UFIpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgY29tcGls
ZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVS
ZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNj
cmF0Y2gyR1BSKTsKICAgICAgICAgCiAgICAgICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM5NjgsMTIgKzQxMjEsMTggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKTsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAKKyAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
dmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzID0gcHJv
dG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0zOTg5LDcgKzQxNDgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgIAogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlw
ZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVS
ZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcs
IHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVn
cywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52
YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAg
IGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMzAxOSw0NiArMTMx
NzgsNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvSW5kZXhTdHJpbmcoTm9kZSog
bm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBu
b2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBz
dHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5n
cHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNo
ZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3Jh
dGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwg
bm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQ
dXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1w
KCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAot
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90
RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVj
bWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAK
LSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVS
ZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRp
cmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9k
ZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ2OTAsMTggKzE0ODY3LDIwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlk
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVl
UmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQs
IEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNw
aWxsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhl
IHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVl
UmVncywgZmFsc2UpOworICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAg
fQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRp
ZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJl
Z3MsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAg
ICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKQEAgLTE0NzExLDkgKzE0ODkwLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
SlNWYWx1CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVl
UmVncywKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZp
ZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRk
UHV0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggNTJlMWU4Y2Q1MmEwNDg2ZTYxMGM1YzQ5MGMzYmEwYTkxN2RjODlm
My4uOGMzMjkzNjA4MDFjMzllYTc1YmRkNGY4M2U2MjQ1ZTkxMjIyNWVlMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTks
MTYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRh
Y2hlZChOb2RlKik7CiAKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NU
eXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxs
KTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUs
IEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGls
bFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChD
b2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7
Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGls
ZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRH
UFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29t
cGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgp
KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQ
UlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJS
ZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0
VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29u
c3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wTGlzdCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQ
UiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0
ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwg
R1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJl
c3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0
aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBj
b21waWxlRGVsZXRlQnlJZChOb2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5v
ZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0
RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdz
IHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6
SnVtcCgpKTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFs
dWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRH
UFQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNo
MkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsK
ICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0
YW5jZU9mQ3VzdG9tKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5j
ZShOb2RlKik7CkBAIC05NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9u
KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENh
bGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFk
ZHJlc3Mub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8Cisg
ICAgICAgICFGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZv
aWQ+CisgICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zm
c2V0KSk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhD
YWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIg
Q29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4KQEAgLTk4OCw2ICsxMDA4LDEzIEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rp
b24pOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAg
ICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5h
bENhbGwoKTsKQEAgLTEwMTAsNiArMTAzNywyOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAg
ICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3Vs
dChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCisg
ICAgeworICAgICAgICBhcHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBtX2ppdC5zZXR1cFJl
c3VsdHMocmVzdWx0MSwgcmVzdWx0Mik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0
UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVz
dWx0KGFkZHJlc3MsIHJlc3VsdFJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgYXBwZW5kQ2Fs
bFNldFJlc3VsdChhZGRyZXNzLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0UmVncy50
YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRD
YWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24s
IEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBiNTdjMzdhYTA1ZGQ0OTA5MWM3ZmEz
NjUwZjhiYmZmNzUyMzdmNjM5Li5jMWI1ZDA2MWMzYzVhNGE2NTA2Y2I3YzYwZWUyOTY3ZmMyMTZh
NjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTE2OCwxNSArMTY4LDE2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdHUFIsIEdQUlJlZyYgcGF5bG9hZEdQ
UiwKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9y
aWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0
QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFn
R1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBt
b2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFz
ZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgc3R1
YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKLSAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQ
UlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9h
ZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJl
ZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2Rl
LCBBY2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAg
ICAvLyBUaGlzIGlzIGEgaGFja3kgZml4IGZvciB3aGVuIHRoZSByZWdpc3RlciBhbGxvY2F0b3Ig
ZGVjaWRlcyB0byBhbGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdpdGggdGhlIHJlc3VsdCB0YWcuIFRo
aXMgb25seSBoYXBwZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgR2V0QnlJZEZsdXNoL0dldEJ5
SWREaXJlY3RGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVseSBleHBlbnNpdmUgcmVnaXN0ZXIg
YWxsb2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8KICAg
ICAvLyB0cmlwIG92ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24uCkBAIC0yMDAsOCArMjAxLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAKICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpT
VmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3Mo
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25l
LCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiksIEludmFsaWRHUFJSZWcsIHR5cGUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKICAgICAKQEAgLTIyOCwxNSArMjI5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWRXaXRoVGhpcygKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BS
T3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBHUFJSZWcg
dGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUs
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5
bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CisgICAgVU5VU0VE
X1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhp
cy0+dXNlZFJlZ2lzdGVycygpOwogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBt
X2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZO
ZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVn
cyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BS
T3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXls
b2FkR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBK
U1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhi
YXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIs
IHRoaXNQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjM0MSw4ICsyMzQzLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAKICAgICAg
ICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJl
c3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpE
RkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRS
ZWdzLCBJbnZhbGlkR1BSUmVnKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZSht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAg
ICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMzQw
NSw3ICszNDA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQ
UiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwg
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC0zNDI1LDcgKzM0MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKSkpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1Bh
eWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwg
dGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlz
dCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYjkxMThiNjJlODdk
OTcwYWM1NDYxZjYzYmQzYzM4MGZiOGIwMTI2MC4uMzM2YjFhOTVkMjQ2ZTcxOTRhNzc0MTAyNjUz
YzMyOWQzNDM0ZjViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNDcsMTIgKzE0NywxMiBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBB
Y2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVP
cmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJl
ZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NU
eXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3Vs
dC5ncHIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNh
Y2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIHN0dWJJbmZvR1BS
LCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNw
aWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0
R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0g
bV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElm
TmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xNjAsMjYgKzE2MCwzNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNo
ZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4K
ICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BS
ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5m
b0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
cmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpE
RkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAor
ICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1
YkluZm9HUFIsIHR5cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAK
ICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlv
bkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygp
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVudGlm
aWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemlu
Z0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVt
cExpc3QmIHNsb3dQYXRoVGFyZ2V0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0
aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0
aFRhcmdldCkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2Fs
bFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0
aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xODcsMjAgKzE5NywzMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUgogICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICB1
c2VkUmVnaXN0ZXJzLnNldCh0aGlzR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
cmVzdWx0R1BSLCBmYWxzZSk7CisgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcp
CisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgCiAg
ICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAot
ICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNW
YWx1ZVJlZ3ModGhpc0dQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwK
KyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgIERvbnRTcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwg
aWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAg
ICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIs
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJ
ZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTI2ODEsMTYgKzI3MDEsMjMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSk7Ci0KKyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJvcGVydHkpOworCisgICAgICAgICAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdw
cigpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CiAg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCisgICAgICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAg
ICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisKICAg
ICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
ICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0
ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwg
bV9zdHJlYW0tPnNpemUoKSk7CiAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJz
ID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMjcwMCw4ICsyNzI3LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VHUFIpKTsKIAogICAgICAgICAgICAg
SklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdp
c3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdz
KHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9y
Tm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAg
ICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpA
QCAtMjcxMiwxMSArMjczOSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkp
OwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BS
KTsKKyAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
bnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51
bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0z
OTg0LDkgKzQwMTksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogCiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlKSB7CisgICAgICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQ
UiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpAQCAtMzk5NCwxNCArNDAzNiwyMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdl
dEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQ
UiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCgpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBzdHViSW5mb0dQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTQwMTMsNyArNDA2Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFz
ZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9H
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2RhZDhiZjM1Li4zYTYyMGY0NzI0ZmQy
Y2FiMjk4ZGQ1MzA4MTlmZjI0YTgzYWI4YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYgKzM5NzgsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAt
NDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RD
ZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhK
dW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVz
dWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00
MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTQxMzAsMTAgKzQxNDUsMTEgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJh
bXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3By
KCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7
CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKLSAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgc3R1Yklu
Zm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAg
ICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMgKzQxNzUsMjUgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAg
ICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBl
KSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9H
UFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpOwor
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSks
IEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhD
YWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBtaWdodCB3YW50IHRvIGxhdGUtY2xv
YmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1MzgsMTAgKzQ1NjcsMTIgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBKUyBzZXR0ZXIgY2FsbCBJQ3MgZ2Vu
ZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0aGlzLgogICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBj
YWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBd
LmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIHN0dWJJbmZvR1BSLCBH
UFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQ
UlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBd
LmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdl
bmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtU
byhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBv
cnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyMzksNiAr
NTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC01MjU5LDEw
ICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlH
UFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0
Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0
eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVl
UmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmlu
ZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50MzI7CkBAIC01MjgwLDEzICs1MzI1
LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
dENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0
KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhC
ZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5Myw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMiA6IDE7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAg
ICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwpAQCAtNTg3NCw3ICs1
OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29u
c3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdC
aXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBwYXJhbXNbMl0uZ3ByKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigp
KTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJz
Y3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BS
KSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZh
c3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAgICAgICAgICAgICAgICBwYXJhbXMu
YWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0
LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rp
b247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENh
bGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyMjQyLDggKzEyMzE0LDggQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+
IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2Vw
dGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIzMzIsMTIgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhj
ZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1
dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwxMiArMTIzNDgsMjQgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93
UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFy
YW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbklu
QnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRp
Zmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9w
dGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEy
NDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsg
VmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgCkBAIC0x
MjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1wOwogICAgICAg
ICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEyNTIzLDggKzEyNjEwLDggQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5z
Y2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluc3RhbmNlT2ZHZW5l
cmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAotICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90
eXBlR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAor
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0
R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwKICAg
ICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIsIHByb3RvdHlwZUlzT2JqZWN0KTsKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTEyNTM3LDEy
ICsxMjYyNCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGpp
dC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6
YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCB2YWx1
ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
dmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUiku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxs
KHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMzk4Niw2ICsxNDA4NSw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAK
ICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVj
dEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5jZSBib29zdCBpZiB3ZSBjbGFpbSB0
aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxlIHJlZ2lzdGVycyBsYXRlLiBJdCdz
IG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91Z2gsIHNpbmNlIHRoZQpAQCAtMTQw
MTQsMTAgKzE0MTE0LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
Ly8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAor
ICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsK
KwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRHZW5lcmF0
b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgdHlwZSk7CisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSLCB0
eXBlKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgp
OwpAQCAtMTQwMzAsMTIgKzE0MTMyLDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdp
biA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXph
dGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBh
cmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5s
aW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xNDA2
MCw4ICsxNDE3NCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlzVmFsdWUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwor
ICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xNDA4MywxMCArMTQx
OTcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgY2Fs
bHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAg
ICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAg
ICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
Pjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCi0gICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFt
c1syXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0u
Z3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpLCBzdHViSW5mb0dQUik7CiAKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDk5
LDEyICsxNDIxNSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFi
ZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGlt
aXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
dGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1Yklu
Zm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5y
YXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwg
cGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQp
OwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2Fs
bChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4IDJhZGQ0OTRjNTMyYWFlYThlZTNkMTFjZTEy
Mjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFlNzkyNmM2YTA3MTgzNzMxNTg5ODdjNzZkNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogc3RhdGljIGNv
bnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4OwogCiBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93
UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVs
cGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIpCisgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51
bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJl
Z2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAgICwgbV9udW1BcmdzKG51bUFyZ3MpCiAgICAg
LCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lzdGVyKQpAQCAtNjMsNiArNjMsOCBAQCBTbG93
UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAogICAgIG1fY2FsbGluZ0NvbnZl
bnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVudFJlZ2lzdGVycyk7CiAgICAgaWYgKHJldHVy
blJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25S
ZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBpZiAoaW5kaXJlY3RD
YWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgbV9jYWxsaW5nQ29u
dmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIG1f
Y2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmlsdGVyKHVzZWRSZWdpc3RlcnMpOwogICAgICAg
ICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzID0KQEAg
LTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6flNsb3dQYXRoQ2FsbENvbnRl
eHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdl
dChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1
bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90
aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCAw
KTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJn
ZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNs
b3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgbnVsbHB0ciwgbV9hcmd1bWVudFJlZ2lzdGVy
cywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsKIH0KIAogU2xvd1BhdGhDYWxsIFNsb3dQYXRo
Q2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwyMiBAQCBTbG93UGF0aENhbGwgU2xvd1BhdGhD
YWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRl
eHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGNhbGxUYXJnZXQpCit7
CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtleVdpdGhUYXJnZXQoY2FsbFRhcmdldCk7Cisg
ICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQYXRoQ2FsbChtX2ppdC5jYWxsKEpJVFRodW5r
UHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFkZExpbmtUYXNrKAorICAgICAgICBbcmVzdWx0
LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0KKyAgICAgICAgICAgICAgICB2bS5m
dGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCByZXN1bHQua2V5KCkpOworCisgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0LmNhbGwoKSwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkpOworICAgICAgICB9KTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4o
U3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgaWYgKGNvZGVPcmln
aW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAppbmRleCA3
MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlmM2ZhODBjMTJhLi5kNmYyODU0OWEzMWIzMzVk
ZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1NCwxNyBAQCBjbGFzcyBTbG93UGF0aENhbGwg
ewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhpbmd5IHRoYXQgd2lsbCBzZXQgdXAgdGhlIG5l
Y2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0cyBhbmQgc3VjaC4KIGNsYXNzIFNsb3dQYXRo
Q2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNsb3dQYXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVn
IHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1
cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAgICB+U2xv
d1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8gTk9URTogVGhlIGNhbGwgdGhhdCB0aGlzIHJl
dHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBsaW5rZWQgYnkgdGhlIEpJVCB1c2luZyBhZGRM
aW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHlvdSB0byBsaW5rIGl0
IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIG1ha2VDYWxsKFZN
JiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAogcHJpdmF0ZToKICAgICBTbG93UGF0aENhbGxL
ZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQp
IGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6
QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVnaXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVy
czsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzOwpAQCAtODIs
NyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKIHsKICAgICBTbG93UGF0aENh
bGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2Vk
UmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUik7
CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQs
IHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgSW52YWxpZEdQUlJlZyk7
CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihhcmd1
bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29udGV4dC5tYWtlQ2FsbCh2bSwgZnVuY3Rpb24p
OwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24o
CiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2
bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsCisgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBBcmd1bWVudFR5cGVzLi4uIGFy
Z3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwgY2FsbDsKKyAgICB7CisgICAgICAgIFNsb3dQ
YXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1
bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDx2b2lkKEFyZ3VtZW50VHlwZXMuLi4p
PihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAgICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNh
bGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBmdW5jdGlv
bi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlvblRhcmdldCkKKyAgICAgICAgZXhj
ZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayh2bSkpOworICAgIHJl
dHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xv
d1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxs
SGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwKKyAgICBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoY2FsbFNpdGVJbmRleCkgeworICAgICAg
ICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNh
bGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZp
cnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
KTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24odm0sIHVzZWRSZWdpc3RlcnMsIGpp
dCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOwor
fQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiwgQ29k
ZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0
aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0LCBBcmd1bWVudFR5cGVzLi4uIGFy
Z3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgc3RhdGUudm0o
KSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihzdGF0ZSwg
Y29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sCisgICAgICAgIHJlc3VsdCwg
YXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYg
Ly8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZjNjIwMzNhODM5MDhlNmZjYzZhYjllNmU4NGNm
ZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3MmJlZjU1MTNlZmU1YWEzOWE4NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHZvaWQgU2xv
d1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnBy
aW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwg
bV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVj
dXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVn
aXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRS
ZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBpbmRpcmVjdE9mZnNldCA9ICIs
IG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2ludGVyKG1fY2FsbFRh
cmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3RlcnMgPSAiLCBtX2Fy
Z3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAppbmRleCAw
ODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEzODQyYmRkMzNkLi4wY2U2MWYyNmJhOTUwYjkz
ZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUxLDExICs1MSwxMiBAQCBjbGFzcyBTbG93UGF0
aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSgKICAgICAgICAgY29uc3QgUmVn
aXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0LCBj
b25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMsCi0gICAgICAgIHB0cmRpZmZfdCBv
ZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQsIGludDMyX3QgaW5kaXJlY3RPZmZzZXQp
CiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNldCkKICAgICAgICAgLCBtX2NhbGxUYXJnZXQo
Y2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpCiAgICAgICAgICwgbV9hcmd1
bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVycykKICAgICAgICAgLCBtX29mZnNldChvZmZz
ZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNldChpbmRpcmVjdE9mZnNldCkKICAgICB7CiAg
ICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAg
ICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudFJlZ2lzdGVyczsgfQogICAgIHB0cmRpZmZf
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIGludDMyX3QgaW5kaXJl
Y3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGlyZWN0T2Zmc2V0OyB9CiAgICAgCiAgICAg
U2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNl
ZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSk7
CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFy
Z2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSwgaW5kaXJlY3RPZmZzZXQoKSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAtNzYsMTMg
Kzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxs
S2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0
OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAK
ICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZhbHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJl
Z2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDAp
CiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4ICs5MywyMCBAQCBjbGFzcyBTbG93UGF0aENh
bGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycyA9PSBvdGhlci5t
X3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYmIG1fY2FsbFRhcmdldCA9PSBvdGhlci5tX2Nh
bGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0OworICAg
ICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQKKyAgICAgICAgICAgICYmIG1f
aW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRpcmVjdE9mZnNldDsKICAgICB9CiAgICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJz
Lmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRk
cmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2go
KSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygp
KSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNldDsKICAgICB9CiAKIHByaXZhdGU6CiAgICAg
UmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lzdGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7
Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAgIHB0cmRpZmZfdCBtX29mZnNldCB7IDAgfTsK
KyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQgeyAwIH07CiB9OwogCiBzdHJ1Y3QgU2xvd1Bh
dGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKaW5k
ZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZhOTMzMTMzYzBiMzZjODY2MTNhZC4uZDkyMDJhM2Q0MTll
NWNiMmE1OWUzMWZiZTg1YTRhZDUzYmU0OTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKAogICAg
IHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIpOwogICAgIAogICAgIC8vIFRlbGwgR0MgbWFy
ayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBj
YWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hC
dWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0g
ICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2Ny
YXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNz
T2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXpl
SW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAKICAgICBqaXQubG9hZFB0cihHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQu
cGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAg
ICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQogICAgIAotICAgIGpp
dC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0g
ICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkp
OworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJn
R1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5v
ZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgCi0gICAg
cmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXkuYXJndW1lbnRSZWdpc3RlcnMoKSk7CisgICAg
UmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXkuYXJndW1lbnRSZWdpc3RlcnMoKTsKKyAgICBp
ZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGRvbnRDbG9iYmVyLnNldChHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIFdURk1vdmUoZG9udENs
b2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3Bl
cmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbDsKKyAgICBpZiAo
a2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRh
Zyk7CisgICAgZWxzZQorICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwga2V5LmluZGlyZWN0T2Zmc2V0KCkpLCBPcGVyYXRpb25QdHJUYWcp
OwogCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSwgR1BSSW5mbzo6bm9uUHJl
c2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKQEAgLTIzMiw3ICsyMzks
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRo
dW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkZUTFRodW5rKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0
KCkpOworICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBhdGggY2FsbCB0aHVuayBmb3IgJXMi
LCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggMzU0Zjk1NDdiNGFiZjMyODk2ZDFjZWI0ZWEy
MDBmYmI0YTRkZWNjZC4uYmY4YTA4MDQwY2VjODdiNjRmNzdjMzZhZWFkYmZlZDlkZTQwMjc0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2Uu
aCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZp
ZXcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjUyLDcgKzY1Myw3IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0VmlydHVhbENhbGwoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgICAgIGF1dG8gY2FsbExvY2F0aW9uID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SklUQ29tcGlsYXRpb25QdHJUYWc+KGNhbGwpOwog
ICAgICAgICBsaW5rQnVmZmVyLmFkZE1haW5UaHJlYWRGaW5hbGl6YXRpb25UYXNrKFs9LCAmdm1d
ICgpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCAqaW5mbyk7Ci0gICAgICAg
ICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0
dWFsVGh1bmssIHZtKSk7CisgICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklU
U3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRodW5rLmNvZGUoKSkpOwogICAg
ICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcyZDg5ZTdkODZiZTkuLmU5MDk2YjU3
NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4OTdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3LDcgKzIwNyw3IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogCiAgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVz
ZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBpbiByZWdpc3RlciBvbiAz
Mi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBleHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2
NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIHRlbXBsYXRl
PHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0
aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIxOSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMu
ZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVu
c2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlv
bjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVk
IGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2ln
bmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJn
Q29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYgb3RoZXIpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3By
RGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwpAQCAtMjMwLDY1ICsyMzAsNzQg
QEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAg
ICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOwogICAgICAg
ICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVz
dGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1
bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVz
dWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51
bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwog
CiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50
OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRl
c3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyAr
IDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQor
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJl
ZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7
CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAg
ICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAg
ICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVz
aFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRp
b24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsg
MSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5j
cm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVz
dWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3NzU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4
dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRl
c3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAg
ICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsg
MSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICBy
ZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAg
cmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygp
CisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BS
UmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOwor
ICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAg
IHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAg
ICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+
KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkKKyAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9r
ZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMp
OworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0g
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tB
cmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAg
ICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFk
ZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPigqdGhp
cyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCkBAIC0zMzEs
MTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJz
IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVu
c2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1
bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVu
dCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xhbmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZp
bmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
cyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtl
IGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQUnMpOworCiAgICAgICAgIGN1cnJl
bnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CiAgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVu
dCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlw
ZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEsMTUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJn
VHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJn
LCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVu
dCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFy
Z1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRG
UFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJB
cmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBv
a2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBw
b2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIHN0
YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRG
UFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGln
bmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3Vt
ZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5z
aWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50
LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNl
dChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHJldHVybiAh
KHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAgLTM3Niw4ICszODcsOCBAQCBjbGFzcyBDQ2Fs
bEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNpZiBVU0UoSlNWQUxVRTY0KQog
CiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRpb24gdGltZSBleHBsb3Npb24gYXNzb2NpYXRl
ZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRlbXBsYXRlcy4KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFM
V0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRS
ZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3Mp
CiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+
OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSArNDAzLDMxIEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFy
Z3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcp
LCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFy
ZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5
IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3Vt
ZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewog
ICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNl
UmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFy
c2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5n
cHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0LDggKzQzNSw4IEBAIGNsYXNzIENDYWxsSGVs
cGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkK
ICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FS
R1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBG
UFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2OSwyNSArNDgwLDI1IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0g
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRH
UFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgLy8gT3RoZXJ3aXNl
IHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0gICAgICAgIGlmIChzdGFja0FsaWduZWQobnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAg
ICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNr
QXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJn
KGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAg
c3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0PgotICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJn
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMg
PSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBj
dXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CkBAIC00OTcsMzQg
KzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJn
MiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBh
cmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVn
cy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3Vu
dCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwg
ZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwg
bm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFy
ZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVk
KG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7
Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAg
ICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwotICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAyKTsKKyAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDIpOwogICAgICAgICAgICAg
c2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJn
KCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBu
b25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVk
SlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxW
YWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKICAgICB7
CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1Nv
dXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIoKSk7CkBAIC01NDQsOSArNTU1LDkgQEAgY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBw
b2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBwYXlsb2Fk
LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIGFyZ3MuLi4pOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAg
ICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVu
Y29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
SlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdT
b3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIoKSk7CkBAIC01NjksMTEgKzU4MCwxMSBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNlbmRpZiAvLyBD
UFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBB
cmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90
PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAg
ICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2Ug
aGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRh
dGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
QXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIC8vIFJp
Z2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBh
cmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVy
IHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZlciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlh
dGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdlIHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRo
aXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNoIHNvdW5kcwpAQCAtNTkxLDQ2ICs2MDIsNDYg
QEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdz
PgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19z
YW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjpp
c19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6
ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBU
cnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJn
cz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNf
c2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6
aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNp
emVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewog
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywg
VHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9u
QXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFy
Z3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6Omlz
X3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6
OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92
ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRf
VFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxs
cHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyks
IGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3
aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0
cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lz
dGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNjM5LDggKzY1MCw4IEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI3VuZGVmIFJFU1VMVF9U
WVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVk
IGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdz
LCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTY1NSwz
MSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oY2xhbXBBcnJh
eVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByRGVzdGluYXRp
b25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJl
Z3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
QXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdXNpbmcgRmlyc3RBcmd1bWVudFR5cGUgPSB0
eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRU
eXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxGaXJzdEFyZ3VtZW50
VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJl
Z3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2Vy
dChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4u
LihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAg
c2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQt
Yml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2Fs
bEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5k
aWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQorICAgIH0KIAotI2RlZmluZSBGSVJTVF9BUkdV
TUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0
ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFs
dWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1
ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4u
LihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29s
bGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5
cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4g
QXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxG
SVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFy
Z3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRp
cmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJp
dCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5
KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAs
IDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGZ1bmN0aW9uR1BSLCBHUFJJbmZv
Ojpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAgfQogCi0jdW5kZWYgRklSU1RfQVJHVU1FTlRf
VFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxs
KEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVzcy5iYXNlLCBHUFJJbmZvOjpub25BcmdHUFIw
KSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RB
LCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IGY3YWEzMjlmZTI1ZDE5YzczNzE4NDcw
YWVmZmIzYjRhYWVhMDVkYjYuLjJiZjExZmQ2OTU5NjFhMTE3M2YzMmI0Y2U5MjE2MmIwMDcyMTgz
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHVi
Um91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNs
dWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZH
Q29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTM5LDggKzQwLDEwIEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYgY29kZSwgVk0mIHZtKQorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+PiYmIGtleXMpCiAgICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICwgbV92bSh2bSkK
KyAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQogewogICAgIHZtLmhlYXAubV9qaXRTdHViUm91
dGluZXMtPmFkZCh0aGlzKTsKIH0KQEAgLTQ5LDYgKzUyLDkgQEAgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgeyB9CiAKIHZvaWQgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIHsKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJ
VFN0dWJzKQorICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKwog
ICAgIGlmIChtX2lzSmV0dGlzb25lZCkgewogICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVlZGVk
IGZvciB3aGVuIHRoZSBzeXN0ZW0gc2h1dHMgZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAgICAg
Ly8gdGhlIEpJVCBzdHViIHJvdXRpbmUgc2V0IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0IGFy
b3VuZCB0byBkZWxldGluZwpAQCAtNzUsOSArODEsOSBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91
dGluZTo6ZGVsZXRlRnJvbUdDKCkKIH0KIAogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6
TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCog
b3duZXIsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5
cywgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxz
LCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MpCi0gICAgOiBHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0pCisgICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0s
IFdURk1vdmUoa2V5cykpCiAgICAgLCBtX2NlbGxzKGNlbGxzLnNpemUoKSkKICAgICAsIG1fY2Fs
bExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogewpAQCAtMTA2LDkgKzExMiw5IEBA
IHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0lu
dGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxl
cigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxs
Kj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCisgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZt
LCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgIGNvbnN0IEpTQ2VsbCog
b3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYg
Y2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRs
ZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRl
eCkKLSAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBj
ZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKKyAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywgV1RGTW92ZShj
YWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29k
ZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBt
X2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyLT5jb2RlT3Jp
Z2lucygpKQpAQCAtMTMxLDcgKzEzNyw3IEBAIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhCiAjZW5k
aWYKIH0KIAotdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6
YWJvdXRUb0RpZSgpCit2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5k
bGVyOjphYm91dFRvRGllKFZNJikKIHsKICAgICBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5k
bGVyID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTE1NCw2ICsxNjAsNyBAQCB2
b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVy
b1JlZkNvdW50KCkKIAogUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgK
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBj
b2RlLAorICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLAogICAgIFZN
JiB2bSwKICAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogICAgIGJvb2wgbWFrZXNDYWxscywKQEAg
LTE2NSwxOCArMTcyLDE4IEBAIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRp
bmUoCiAgICAgaWYgKCFtYWtlc0NhbGxzKSB7CiAgICAgICAgIC8vIEFsbG9jYXRpbmcgQ2FsbExp
bmtJbmZvcyBtZWFucyB3ZSBzaG91bGQgaGF2ZSBjYWxscy4KICAgICAgICAgQVNTRVJUKGNhbGxM
aW5rSW5mb3MuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1
YlJvdXRpbmUoY29kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWFibGVK
SVRTdHViUm91dGluZSh2bSwgY29kZSwgV1RGTW92ZShrZXlzKSkpOwogICAgIH0KICAgICAKICAg
ICBpZiAoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRs
ZXJzLT5qaXRUeXBlKCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywg
V1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4
Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBX
VEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkp
OwogICAgIH0KIAogICAgIGlmIChjZWxscy5pc0VtcHR5KCkgJiYgY2FsbExpbmtJbmZvcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZShjb2Rl
LCB2bSk7CisgICAgICAgIHJldHVybiBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZShjb2Rl
LCB2bSwgV1RGTW92ZShrZXlzKSk7CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFy
a2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3Zl
KGNhbGxMaW5rSW5mb3MpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBX
VEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5kZXgg
NDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFjYTlmZC4uYjA0NmM4ZTc3OWFmMDUz
OTA3OTIzNmI2NTBiNjAwYmY2NjNmMWYzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFj
ZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CiBj
bGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIApAQCAtNTQsMTIg
KzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5v
dCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGlu
ZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
LCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKIAot
ICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCisgICAgc3RhdGlj
IFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmIGtleXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
Q0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKSk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDggQEAg
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAg
ICAgICAgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAK
KyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorCiAgICAgdm9pZCBkZWxldGVGcm9tR0MoKTsKICAg
ICAKIHByb3RlY3RlZDoKQEAgLTgxLDYgKzg0LDggQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIAogICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGlu
ZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSmV0dGlzb25lZCB7IGZhbHNlIH07CisgICAgVk0m
IG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBtX2tleXM7CiB9Owog
CiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRpdGlvbmFsIG9iamVjdCBk
dXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3ICs5Myw3IEBAIGNsYXNzIEdDQXdhcmVKSVRT
dHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBjbGFzcyBNYXJraW5nR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6
CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICAgICAgY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxs
KiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7Cisg
ICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
LCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgY29uc3QgSlNDZWxsKiBv
d25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7CiAgICAg
fk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKICAgICAKIHByb3RlY3Rl
ZDoKQEAgLTEwOSwxMCArMTE0LDEwIEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKIAotICAgIEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNv
bnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERp
c3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhj
ZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIGNvbnN0IEpT
Q2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYs
IENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKICAgICB+R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAotICAgIHZvaWQgYWJvdXRU
b0RpZSgpIGZpbmFsOworICAgIHZvaWQgYWJvdXRUb0RpZShWTSYpIGZpbmFsOwogICAgIHZvaWQg
b2JzZXJ2ZVplcm9SZWZDb3VudCgpIGZpbmFsOwogCiBwcml2YXRlOgpAQCAtMTMyLDYgKzEzNyw3
IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFs
IDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKAogLy8gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKIC8vICAgIFZNJiB2bSwKKy8vICAgIEZpeGVkVmVjdG9y
PFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLAogLy8gICAgY29uc3QgSlNDZWxsKiBvd25lciwK
IC8vICAgIGJvb2wgbWFrZXNDYWxscywKIC8vICAgIC4uLik7CkBAIC0xNDMsNyArMTQ5LDcgQEAg
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBw
dWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIHdheS4KIAogUmVmPEpJVFN0dWJSb3V0aW5lPiBj
cmVhdGVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBib29sIG1ha2Vz
Q2FsbHMsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBWTSYsIGNvbnN0
IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxs
Kj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhj
ZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdh
YmZmMWQ2YWQyMDA3NTQ1MTgwMDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaApAQCAtNDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8v
IHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0g
WDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVn
VDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lz
dGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZh
bHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVy
czo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBj
bGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYg
PSBBUk02NFJlZ2lzdGVyczo6eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgYXJndW1lbnRHUFI3ID0gQVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJl
Z1Q4CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0
ZXJzOjp4OTsgLy8gcmVnVDkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1
ZUdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJN
NjRSZWdpc3RlcnM6OngyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDU1NTYzMDM3
YWViNThmZWM5YjNmMDNmN2NmZWUxZmMwZGUzZWNlMjMuLjdmYTA4ZWJmNmM4OGEzMzVmYjBhOTU5
NTZjYjU0YThiNjg4MTNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkyNCw2
ICs5MjQsMTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICAgICAgICAgIGRvbmVUYXJnZXQs
CiAgICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhUYXJnZXQsCiAgICAgICAgICAgICAgICAgc2xv
d1BhdGhUYXJnZXQpOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBzbG93UGF0aFRhcmdldC5yZXRhZ2dl
ZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0
aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBzbG93UGF0aFRhcmdldC5y
ZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzVjOWNiOTZiMTM2NTMyZjA4
NjFmMmYwYTgwNThlZmM2YjA1NmIyNC4uNDA5ZjQ5ZTI2ODg2YTg0NTEzNzc0OGRjMDZhZWIxYjg0
ZGI2YWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yOTQsNiArMjk0LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICAgICAg
fQogCisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbChBZGRyZXNzIGZ1bmN0aW9uKQorICAgICAgICB7
CisgICAgICAgICAgICBjYWxsKGZ1bmN0aW9uLCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICB9
CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBDYWxsIGFwcGVuZENh
bGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gZnVuY3Rpb24pCiAgICAgICAgIHsKQEAgLTM5NSwzOSArNDAwLDM5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQgemVybyBleHRlbmRl
ZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuCiAgICAgICAgIC8vIFN0cnVjdHVyZSBpcyBhbHJlYWR5
IHByb2ZpbGVkLiBSZXR1cm5zIHRoZSBzbG93IGNhc2VzLiBGYWxsLXRocm91Z2gKICAgICAgICAg
Ly8gY2FzZSBjb250YWlucyByZXN1bHQgaW4gcmVnVDAsIGFuZCBpdCBpcyBub3QgeWV0IHByb2Zp
bGVkLgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkgeyByZXR1cm4gZW1pdENvbnRpZ3Vv
dXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsgfQotICAgICAgICBKdW1w
TGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFw
ZSA9IENvbnRpZ3VvdXNTaGFwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VM
b2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAg
IEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJy
YXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdElu
dDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQo
aW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbywgSW50MzJTaGFwZSk7IH0KKyAgICAgICAg
SnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRD
b250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRp
Z3VvdXNTaGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pOworICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVj
dGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8pOwogCiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGluIHJlZ1QxLCBiYXNlIGlzIGlu
IHJlZ1QwLiByZWdUMiBjb250YWlucyBpbmRlY2luZyB0eXBlLgogICAgICAgICAvLyBUaGUgdmFs
dWUgdG8gc3RvcmUgaXMgbm90IHlldCBsb2FkZWQuIFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFu
ZAogICAgICAgICAvLyB6ZXJvLWV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4gU3RydWN0
dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuCiAgICAgICAgIC8vIHJldHVybnMgdGhlIHNsb3cgY2Fz
ZXMuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0
SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAg
ICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIElu
dDMyU2hhcGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8sIEludDMyU2hhcGUpOwogICAgICAgICB9
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0RG91
YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAg
IEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgRG91
YmxlU2hhcGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8sIERvdWJsZVNoYXBlKTsKICAgICAgICAg
fQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAg
ICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdT
aGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKKyAgICAgICAgSnVt
cExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnRU
eXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1p
dEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgogICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CkBAIC04NzAsMTMgKzg3
NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPik7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhBZGRyZXNzKTsKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1Bh
dGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlm
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQ
cm9maWxlKE1ldGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRh
PgorICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
KTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBAIC04ODYs
NiArODk1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihB
ZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAg
ICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRp
b25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAg
ICAgIHN0cnVjdCBpczY0Qml0VHlwZSB7CkBAIC05MDYsNiArOTIzLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwg
QXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0Zvcklu
ZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAg
Ly8geDY0IFdpbmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0
eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJpdHMuCisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlz
NjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRU
eXBlPjo6dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7Cisg
ICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRo
UmV0dXJuVHlwZShBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsK
KyAgICAgICAgfQogI2Vsc2UgLy8gT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9wZXJh
dGlvbiwgQXJncy4uLiBhcmdzKQpAQCAtOTEzLDYgKzk0MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOwogICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
ICAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdl
dCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0Zv
ckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAg
ICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpICYm
IENQVShYODZfNjQpCiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC05MjMsNiArOTU3LDE0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZv
aWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEs
IEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJh
dGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwg
QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb25X
aXRoUmVzdWx0KE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
LCBBcmdzLi4uIGFyZ3MpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCmluZGV4IDFiNDlkNDg5ZGFhMmI3ODZhYjc5MzkyZjlhMzRlYmM2NDRjZGFiMTguLjM3NGJh
MzBjN2Y3NjcxMzc5NDcwZTRkZDlkNGRhODM2NWRhMzYwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcApAQCAtMzk4LDggKzM5OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0
QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00MzIsOCArNDMyLDE1IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDCiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRv
ckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihp
ZGVudCkucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0
ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CisKICAgICBhdXRvIGRvbmUgPSBqdW1wKCk7CiAKICAgICBub3RPYmpl
Y3QubGluayh0aGlzKTsKQEAgLTQ4MCw4ICs0ODcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgUmVnaXN0
ZXJTZXQgcHJlc2VydmVkUmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKTsKICAgICAgICAgcHJlc2VydmVkUmVncy5hZGQodmFsdWVHUFIpOwogICAgICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKLSAgICAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVz
LT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhk
b25lR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2
ZWRSZWdzLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwgSlNWYWx1ZVJl
Z3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCByZWdUMywgQWNjZXNzVHlw
ZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlkcy5h
cHBlbmQoZ2VuKTsKQEAgLTQ5OSw4ICs1MDYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgSnVtcExpc3Qg
aXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVHUFIp
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKIAogICAgICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgcmVnVDQsIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC01MjgsMTYgKzUzNSwyMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAg
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7
CiAgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIp
KTsKLSAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0
R1BSKSk7CiAKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0
eU5hbWVzLT5kb25lLmltcGwoKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKICAgICAgICAgCiAgICAgICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Cisg
ICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikp
OwogCisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhH
UFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUo
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCiAgICAgICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKICAgICAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CiAgICAgICAgIGVtaXRKdW1wU2xvd1Rv
SG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwpAQCAtNTU2LDggKzU3MCwxMyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93QwogCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwog
Ci0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwotCisgICAgICAgIENhbGwgY2FsbDsKKyAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewor
ICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1Yklu
Zm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCB2YWx1ZVZSZWcsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwg
aXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBj
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgY2FsbCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAKaW5kZXggZWNjNGU1ZjNmZjZkMDdmOTljMDc4NGRkNGMxMmRlYmEwZTIxMGRjZi4u
MTUyNTE0YWZkY2FjNzgyYWM5Yzg3NGU1NTBhZmZiOWM3MjhiZWEwNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMzk2LDEyICszOTYsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24pCiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ss
CisgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksCiAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLAogICAgICAgICBKU1ZhbHVlUmVncyh0YWdJ
dGVyYXRvckdQUiwgcGF5bG9hZEl0ZXJhdG9yR1BSKSwKICAgICAgICAgbmV4dFJlZ3MsCisgICAg
ICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTUwNSwxMiArNTA3LDE0IEBAIHZv
aWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKQogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZChwYXlsb2FkVmFsdWVHUFIpOwogICAgICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLAorICAg
ICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAgICAgICBwcmVzZXJ2ZWRSZWdzLAog
ICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
Zmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwKICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAgICAg
ICAgIGRvbmVSZWdzLAorICAgICAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC01MzMsMTIgKzUz
NywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKIAogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAg
ICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAg
ICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBDYWxs
U2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAg
ICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZt
KCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwKICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAgICAgICAgIHJl
c3VsdFJlZ3MsCisgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgKaW5kZXggNmZhNzI0NGVmMGEwOGM5ZjA0N2EzMjIwNGY3MzdkMjkyODcxOTA2
Zi4uODc3NzBiZjg0OGEzYWZhOWRkYmYwYjE4MjIzN2YxM2NhMGUyYmJiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTUyLDEzICs1MiwxNSBAQCBjbGFzcyBUcmFja2VkUmVm
ZXJlbmNlczsKIGNsYXNzIFZNOwogCiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90IHsKLSAg
ICBOb25lLAotICAgIEhvc3RDYWxsVGh1bmssCi0gICAgSW50ZXJwcmV0ZXJUaHVuaywKLSAgICBC
YXNlbGluZUpJVCwKLSAgICBERkdKSVQsCi0gICAgRlRMSklUCisgICAgTm9uZSA9IDBiMDAwLAor
ICAgIEhvc3RDYWxsVGh1bmsgPSAwYjAwMSwKKyAgICBJbnRlcnByZXRlclRodW5rID0gMGIwMTAs
CisgICAgQmFzZWxpbmVKSVQgPSAwYjAxMSwKKyAgICBERkdKSVQgPSAwYjEwMCwKKyAgICBGVExK
SVQgPSAwYjEwMSwKIH07CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdpZHRoT2ZKSVRUeXBl
ID0gMzsKK3N0YXRpY19hc3NlcnQoV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoc3RhdGljX2Nhc3Q8
c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxKSVRUeXBlPj4oSklUVHlwZTo6RlRMSklUKSkgKyAxID09
IHdpZHRoT2ZKSVRUeXBlKTsKIAogY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxKSVRDb2RlPiB7CiBwdWJsaWM6CkBAIC0xNTYsNiArMTU4LDE1IEBAIGNsYXNzIEpJ
VENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogICAgICAgICBy
ZXR1cm4gaml0VHlwZSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0g
SklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgdXNlU2hhcmVk
SUMoSklUVHlwZSBqaXRUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFy
ZWRJQygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCk7CisgICAgfQor
CiAgICAgdmlydHVhbCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIGVudW0gY2xhc3MgU2hhcmVBdHRyaWJ1dGUg
OiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggZjUyYzNjNzYyMTVhYTMyNmRkZTlmODk4NTYyOThj
M2RlNjQ2MjJjZS4uNTlhM2MzMWEwZDU0NDI5ZGI1MWFjNjE1ZmY5NzFmMDg0NWEyMGE0NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKQEAgLTQzLDkgKzQzLDEwIEBAIHN0YXRpYyBTdHJ1Y3R1cmVTdHViSW5mbyogZ2Fy
YmFnZVN0dWJJbmZvKCkKIH0KIAogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNh
Y2hlR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKICAg
ICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKICAgICA6IG1fY29kZUJsb2NrKGNv
ZGVCbG9jaykKKyAgICAsIG1faml0VHlwZShqaXRUeXBlKQogewogICAgIG1fc3R1YkluZm8gPSBt
X2NvZGVCbG9jayA/IG1fY29kZUJsb2NrLT5hZGRTdHViSW5mbyhhY2Nlc3NUeXBlLCBjb2RlT3Jp
Z2luKSA6IGdhcmJhZ2VTdHViSW5mbygpOwogICAgIG1fc3R1YkluZm8tPmNhbGxTaXRlSW5kZXgg
PSBjYWxsU2l0ZTsKQEAgLTYwLDIwICs2MSwyMiBAQCB2b2lkIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yOjpmaW5hbGl6ZSgKIAogICAgIG1fc3R1YkluZm8tPmRvbmVMb2NhdGlvbiA9IGZhc3RQYXRo
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9kb25lKTsKIAotICAgIG1fc3R1YkluZm8t
PnNsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRy
VGFnPihtX3Nsb3dQYXRoQ2FsbCk7CisgICAgaWYgKG1fc2xvd1BhdGhDYWxsLm1fbGFiZWwuaXNT
ZXQoKSkKKyAgICAgICAgbV9zdHViSW5mby0+c2xvd1BhdGhDYWxsTG9jYXRpb24gPSBzbG93UGF0
aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsKICAgICBtX3N0
dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pOwogfQogCiBKSVRCeUlkR2VuZXJhdG9y
OjpKSVRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAor
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNj
ZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV92YWx1
ZSh2YWx1ZSkKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7
CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+cmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBt
X3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52
YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwpAQCAtODMsMTMgKzg2LDE1IEBAIEpJVEJ5SWRH
ZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Zmlu
YWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAg
IEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpm
aW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9m
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxK
SVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJ
bmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1Np
emUpCiB7CisgICAgLy8gV2UgZ2VuZXJhdGUgdGhlIHNhbWUgY29kZSByZWdhcmRsZXNzIG9mIHdo
ZXRoZXIgU2hhcmVkSUMgaXMgZW5hYmxlZCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgdG8gdXNlIElu
bGluZUFjY2VzcworICAgIC8vIGZvciB0aGUgcGVyZm9ybWFuY2UgcmVhc29uLgogICAgIG1fc3Rh
cnQgPSBqaXQubGFiZWwoKTsKICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVy
LmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQuanVtcCgpOwpA
QCAtMTAxLDkgKzEwNiw5IEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29t
bW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1NpCiB9CiAKIEpJVEdldEJ5
SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFs
dWUsIHN0dWJJbmZvR1BSKQogICAgICwgbV9pc0xlbmd0aEFjY2Vzcyhwcm9wZXJ0eU5hbWUudWlk
KCkgPT0gY29kZUJsb2NrLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBsKCkpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BSKCkpOwpA
QCAtMTE1LDkgKzEyMCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpCi0g
ICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUikK
KyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNl
LCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodGhpc1JlZ3MucGF5
bG9hZEdQUigpICE9IHRoaXNSZWdzLnRhZ0dQUigpKTsKIApAQCAtMTMzLDEwICsxMzgsMTAgQEAg
dm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKIH0KIAogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVy
YXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
Q2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBl
IGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgR1BSUmVnIHNjcmF0Y2gsIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtp
bmQpCi0gICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAg
ICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1
YkluZm9HUFIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBtX3B1
dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3MSwxNCArMTc2LDE1IEBAIFZfSklUT3BlcmF0aW9uX0dT
c2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK0pJVERlbEJ5
VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVz
ZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0g
ZmFsc2U7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BS
KCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBt
X3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJ
bmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMTkxLDI2ICsxOTcsMzUgQEAg
SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0Lmxh
YmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJ
bmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIH0KICAgICBtX2RvbmUgPSBqaXQubGFi
ZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlu
a0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeVZh
bEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNs
b3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0g
ICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZh
c3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0g
bV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZp
bmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0KIH0KIAotSklURGVsQnlJZEdlbmVyYXRvcjo6
SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdp
c3RlcnMpCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRl
bGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gdHJ1ZTsKICAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0
LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQ
UigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwog
ICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1f
c3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMjIzLDIyICsyMzgsMzAg
QEAgSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3IKIHZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQu
bGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0
dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1
YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIo
KSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQ
YXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5s
YWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExp
bmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlJ
ZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNs
b3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0g
ICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZh
c3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0g
bV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZp
bmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0KIH0KIAogSklUSW5CeUlkR2VuZXJhdG9yOjpK
SVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwgdXNlZFJlZ2lz
dGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0
VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
dHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2Us
IHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAgICAvLyBGSVhNRTogV2UgYXJlIG5vdCBzdXBwb3J0
aW5nIGZhc3QgcGF0aCBmb3IgImxlbmd0aCIgcHJvcGVydHkuCiAgICAgVU5VU0VEX1BBUkFNKHBy
b3BlcnR5TmFtZSk7CkBAIC0yNTEsMTUgKzI3NCwxNSBAQCB2b2lkIEpJVEluQnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5m
b0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwgYm9vbCBwcm90b3R5
cGVJc0tub3duT2JqZWN0KQotICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgICAg
IGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5zdGFu
Y2VPZiwgdXNlZFJlZ2lzdGVycykKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5z
dGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gdmFs
dWU7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CiAgICAgbV9zdHViSW5mby0+
cmVncy5wcm90b3R5cGVHUFIgPSBwcm90b3R5cGU7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdH
UFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjc5LDIxICszMDIsMjggQEAgSklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKIAogdm9pZCBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7Ci0gICAgbV9q
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
bV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQu
Y2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7Cisg
ICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCiB2b2lkIEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKIHsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAg
IGZhc3RQYXRoLCBzbG93UGF0aCwKLSAgICAgICAgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHVi
Um91dGluZVB0clRhZz4obV9qdW1wKSk7Ci0gICAgCi0gICAgZmFzdFBhdGgubGluayhtX2p1bXAu
bV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5vUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCB7IH0pOwor
ICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0
TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6
OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHVi
Um91dGluZVB0clRhZz4obV9qdW1wKSk7CisgICAgICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1f
anVtcCwgc2xvd1BhdGgubG9jYXRpb25PZjxOb1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7Cisg
ICAgfQogfQogCi1KSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0KQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0
VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1
bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiB7CkBAIC0zMDIsNiArMzMy
LDcgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0g
YmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHBy
b3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5w
YXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BS
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJh
c2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BS
KCk7CkBAIC0zMTIsMjAgKzM0MywyOCBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlW
YWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogdm9pZCBK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1
YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7Cisg
ICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYg
c2xvd1BhdGgpCit2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQu
aXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0
aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEJhc2U6
OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgeyB9KTsKKyAgICAgICAgbV9zdHViSW5mby0+
bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIH0gZWxz
ZSB7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgICAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICB9CiB9CiAKLUpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpCi0gICAgOiBCYXNlKGNvZGVCbG9j
aywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykK
K0pJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVz
ZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6Q2hl
Y2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJh
bmQpOwogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwpAQCAt
MzMzLDYgKzM3Miw3IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsCiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRH
UFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNl
LnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYuYnJhbmRUYWdHUFIgPSBicmFuZC50YWdHUFIo
KTsKQEAgLTM0MywxNiArMzgzLDI0IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsCiB2b2lkIEpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRo
SnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0
LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVK
dW1wKCk7CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFz
dFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6
ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRo
LCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93
UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fc3RhcnQu
aXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFz
dFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0K
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggZDZjYTZlMTZhM2YzMmM2NDBmOTZj
YjI1NTE5NTU0OGIwZjJlYjY1MS4uZGUyZDcwYjU5N2I3M2QwMTcwOTdjMTUwOGJlOTUzMzcwMmMy
ZWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaApAQCAtNDEsMTIgKzQxLDEyIEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNz
IFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7Citl
bnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCiBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvciB7CiBwcm90ZWN0ZWQ6CiAgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoKSB7IH0KLSAg
ICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKENvZGVCbG9jayosIEpJVFR5cGUs
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzKTsKICAgICAKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8oKSBjb25zdCB7IHJldHVybiBtX3N0dWJJbmZvOyB9CkBAIC02NSw2ICs2NSw3IEBA
IGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICAKIHByb3RlY3RlZDoKICAgICBD
b2RlQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEpJVFR5cGUgbV9qaXRUeXBlOwogICAgIFN0cnVj
dHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1f
ZG9uZTsKQEAgLTc3LDggKzc4LDggQEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUQnlJZEdlbmVyYXRvcigpIHsgfQogCiAg
ICAgSklUQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsKKyAgICAgICAg
Q29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiBwdWJsaWM6
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKQEAgLTEwNiw4
ICsxMDcsOCBAQCBjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5l
cmF0b3IgewogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAot
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSk7
CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAor
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImKTsKIApAQCAtMTIwLDggKzEyMSw4IEBAIGNsYXNzIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
cigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAg
IEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVn
cyk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVy
LAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CkBAIC0xMzMsOCArMTM0LDggQEAgY2xhc3MgSklU
UHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICB7IH0KIAog
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1
ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCisg
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNTEsOCArMTUyLDggQEAgY2xhc3MgSklURGVs
QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKLSAg
ICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAg
ICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgR1BSUmVnIHNjcmF0Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhK
dW1wKCkgY29uc3QKICAgICB7CkBAIC0xNzYsOCArMTc3LDggQEAgY2xhc3MgSklURGVsQnlJZEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklURGVsQnlJ
ZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29k
ZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBDb2RlQmxv
Y2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0
CiAgICAgewpAQCAtMjAwLDggKzIwMSw4IEBAIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KIAog
ICAgIEpJVEluQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJs
ZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVl
KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1
YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7
CiB9OwpAQCAtMjExLDggKzIxMiw4IEBAIGNsYXNzIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgOiBw
dWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3IoKSB7IH0KICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAotICAgICAgICBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKLSAgICAgICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcg
cHJvdG90eXBlLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwKKyAgICAgICAgQ29k
ZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsCisgICAgICAgIEdQUlJlZyB2YWx1
ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaDEs
IEdQUlJlZyBzY3JhdGNoMiwKICAgICAgICAgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0g
ZmFsc2UpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYp
OwpAQCAtMjI5LDggKzIzMCw4IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigpIHsg
fQogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0
eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTI1Nyw4ICsy
NTgsOCBAQCBjbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cigpIHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAotICAgICAgICBD
b2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQsIEdQUlJl
ZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXgg
ZTc5Y2QzNmVmNTdkN2JkY2VjZTE3NjhkMDU4OGFmZWVkODg4NTAxNS4uMjhhNjQzMzdlMmYwOGY1
ZjIwYWRhNzM3YmI3NmJjYjQ3MzYyMjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9k
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJy
YXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBzd2l0Y2ggKGFycmF5
TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHJldHVybiBlbWl0SW50MzJMb2Fk
KGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0SW50MzJM
b2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJ
VERvdWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlv
biwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAg
ICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlw
ZSk7CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9u
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAg
ICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBl
KTsKKyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0cnVjdGlv
biwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC0xMjgsNiArMTI4LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0CiAgICAgcmV0
dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUo
KTsKKyAgICBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICBleGNlcHRpb25DaGVjaygpOworfQor
CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhS
ZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiB7
CkBAIC0xNTcsNiArMTY0LDE2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAgcmV0dXJu
IGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3Rl
ciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJu
VmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJl
dHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4K
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0
YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgVmlydHVhbFJl
Z2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxODgsMTkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CitB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNW
YWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgQWRkcmVzcyBmdW5jdGlv
biwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKG1ldGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BS
KSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUik7
CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNlSWZOb3RK
U0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmlydHVhbFJlZ2lz
dGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYmQ1NWEzZDA1MTZkNDZi
NjdhZTU5N2I2YzNhNGY1ODdiNWZkZDczMC4uZjRlMThlMjZkMjg1NDg4NjFjYWUzMmI2ZmFkYTQz
ZTJhMTRiNTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC0xNjQsMTEgKzE2NCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIsIC8vIHZh
bHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdUNSwKICAgICAgICAgcmVn
VDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChnZW4pOwpAQCAtMTg2LDcgKzE4NywxNCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8UwogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiA9IG1f
aW5zdGFuY2VPZnNbbV9pbnN0YW5jZU9mSW5kZXgrK107CiAgICAgCiAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CisKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2Vu
LnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bjxkZWNsdHlwZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUpPihBZGRyZXNzKEdQUkluZm86
Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIHJlZ1QxKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
Y2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRW
UmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCByZWdUMiwgcmVnVDEpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTE3MTksNyArMTcyNyw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBl
cyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0g
ZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5
cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKICAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTE3MzQsOCArMTc0MiwxMyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJS
b3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1
YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIAotICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxs
PFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNz
UHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX2Jh
ZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbElu
Zm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFs
SW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRy
ZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5R2VuZXJpYykpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1l
cmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpAQCAtMTc2OSwxMSArMTc4MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVy
YWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlz
IGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1v
ZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93
Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShiYWRU
eXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nh
c2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTE3OTksNyArMTgxMywx
NCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0
eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudAogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFsSW5mbyk7CisKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9w
ZXJ0eURlZmF1bHQ7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZHN0LCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFsSW5mbyk7CiAKICAgICBt
X2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRh
cmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDhkYjM1OWViZDhjZDA1NjY5NzNiODYz
YzQ4Njc0MWE3ZmFlMjI0NWUuLmNmMTJkYjJkYjgzMjdmZmQxMjgzNDE3MWY3NzQ4YzliMWE5NTI5
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
QEAgLTE2MiwxMSArMTYyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocHJvdG8pOwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8gdmFs
dWUKICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAg
ICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDIxYWYzNjUzMDlkMjc5MzM3MWRlNmVi
NDAwYjQ0NjhhYTgzNzBiMjUuLjAyOTJiOWI4YzRlY2UyN2E4MTY3NTAwYTM1ZDQxMjU2NTQ5ZDYz
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
MTAwMiw3ICsxMDAyLDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKHJlc3Vs
dCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVy
IHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVl
OwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOworICAgICAgICBp
ZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KQEAgLTEwOTQs
NyArMTA5NywxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlmIChyZXN1bHQgPT0g
T3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkg
dG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAg
ICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKKyAgICAgICAg
aWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVz
c1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMp
OwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwo
Z2xvYmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1v
ZGUpKTsKQEAgLTEyNzgsNyArMTI4NCwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAg
IGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsK
ICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxC
eVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVy
YXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOwogICAgIH0KIAogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKQEAgLTI1NjcsNyArMjU3NiwxMSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgRW5jb2RlZEpTVmFsdWUsIChKUwogICAgICAg
ICBpZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTAKICAgICAgICAgICAgIHx8IG9i
amVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAgIC8vIERv
bid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgotICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1
cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2Nr
LT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlH
ZW5lcmljKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA2NDQ2N2U5YTI1ZTE0NzdlMWVjMDYzNWQ0
MDk3NTRkOGU3NTM5MmVmLi4xYzkyMmI4MzY4MGU1YWMwN2JlMTVkZWJiZGYwNWM4OTIzNTljNDYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cApAQCAtNjksMTIgKzY5LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5
VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAg
ICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVncyk7Cisg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3Vs
dFJlZ3MsIHJlZ1QyKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5
KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAg
ICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAt
OTMsMTQgKzk2LDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAgICAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAotICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICAgICAgKyttX2dldEJ5VmFsSW5kZXg7
CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5
VmFsSW5kZXgrK107CisKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAK
ICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwg
ZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCBwcm9maWxlLCByZWdUMCwgcmVnVDEpOwogI2Vsc2UKICAgICAgICAgVk0mIHZtID0g
dGhpcy0+dm0oKTsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CiAgICAgICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTE4LDcgKzEyMiw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihw
cm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKICAgICAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRl
KG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzgsNyArMTQ0LDggQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVw
YXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBq
aXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjQ7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTU3LDkgKzE2
NCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRo
aXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAot
ICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJl
dCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVs
c2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEwICsxOTAs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3Ms
IHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeVZhbHMu
YXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0yMDEsOCArMjEyLDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmUKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsK
LSAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMjExLDYgKzIy
MSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMjI2LDcgKzIzNyw5IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgc3R1YkluZm9HUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1
cm5WYWx1ZUdQUik7CkBAIC0yNDUsNyArMjU4LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcK
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAog
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMjYzLDkgKzI3NywxMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0
bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0
byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1w
KEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtMjg1LDEwICszMDAsMTMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUdQUiwgYmFzZSk7
CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
SlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAo
IUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dD
YXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIAogICAgIC8v
IFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5j
ZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KQEAgLTMwMiw4ICszMjAsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0g
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQpAQCAtMzEyLDYgKzMyOSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiAgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgYmFzZUdQUiwgYnJhbmRHUFIpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25TZXRQcml2
YXRlQnJhbmRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMzI4LDkgKzM0NiwxMiBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJh
aXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50
VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0
aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYKKwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTM0NiwxMCArMzY3LDEz
IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9
CiAKQEAgLTM1Nyw4ICszODEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRl
eF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVC
cmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwog
CiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzY3LDYgKzM5MCw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50CiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7CiAjZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAg
LTM4Myw3ICs0MDcsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNrUHJp
dmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5
cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFs
dWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFu
ZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTQxNSw4ICs0
NDEsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgYmFzZSk7CiAgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleDsKICAgICBpZiAoIXByb3BlcnR5
TmFtZUlzSW50ZWdlckNvbnN0YW50KSB7Ci0gICAgICAgIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJs
ZUp1bXBJZk5vdEludChyZWdUMSk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewor
ICAgICAgICAgICAgYXV0byBpc0ludDMyID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7CisgICAgICAg
ICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRh
cmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzSW50MzIubGluayh0
aGlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdEluZGV4ID0gZW1pdFBhdGNo
YWJsZUp1bXBJZk5vdEludChyZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRl
eCk7CisgICAgICAgIH0KICAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4K
ICAgICAgICAgemVyb0V4dGVuZDMyVG9Xb3JkKHJlZ1QxLCByZWdUMSk7CiAgICAgfQpAQCAtNDMy
LDIzICs0NjQsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFycmF5TW9kZSBtb2RlID0gY2hvb3Nl
QXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSklUSW50
MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91YmxlOgot
ICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUp
OworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoK
LSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJy
YXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdl
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7
CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0gbGFi
ZWwoKTsKQEAgLTQ1Nyw3ICs0OTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhp
bmdTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1
ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC00NjUsNyArNDk4LDE2IEBAIEpJVDo6SnVtcExpc3Qg
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5n
U2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3Jy
ZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hh
cGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1f
YmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBp
c0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGlu
ZGV4aW5nU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKwog
ICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgcmVnVDIpOwogICAgIEp1bXAgb3V0T2ZCb3VuZHMgPSBicmFuY2gzMihBYm92ZU9yRXF1
YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKTsKQEAgLTUxNSw3ICs1NTcsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdl
UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTIzLDcgKzU2NSwxNiBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIo
QXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAg
IGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMy
KEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVz
cygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcp
OworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIo
QXJyYXlTdG9yYWdlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJh
bmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9yYWdlOjp2
ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtNTY4LDggKzYxOSw4IEBAIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtp
bmQgcHV0S2luZCwKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdUMCwgdmFs
dWUsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJv
cGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4g
d3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNl
bGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2Vs
aW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC01ODAsNyArNjMxLDEzIEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0
ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKICAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKIAotICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBw
cm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+
KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdC
aXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xv
d1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkp
OwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAg
ZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC02MTksNiArNjc2LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGlzRGlyZWN0ID8g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1p
emUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJl
Z1QxLCByZWdUMiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIoZWNtYU1vZGUudmFsdWUoKSkpOwog
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGJ5VmFsSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3Bl
cmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtNjM4LDggKzY5Niw5IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoZWNtYU1vZGUudmFsdWUo
KSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgIGF1dG8qIG9wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7Ci0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
IUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2Fs
bCA9IGFwcGVuZENhbGwoaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
IDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcx
Niw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKQEAgLTY3NSw5ICs3MzUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2Jh
bE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwg
ZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAv
LyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhl
IHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xp
ZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3Mo
YXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsK
QEAgLTY5Niw4ICs3NTcsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBh
dGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOwor
ICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXA7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJl
c3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgZWxzZSB7CisgICAgICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwor
ICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgfQogICAgIAogICAgIExhYmVs
IGRvbmUgPSBsYWJlbCgpOwogICAgIApAQCAtNzI0LDYgKzc5MCw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1t
MzIocHV0S2luZC52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Cisg
ICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOwogCkBAIC03NDMsNyArODEwLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmUKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC03NjEsNyArODMwLDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtNzc5
LDkgKzg0OSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2Jq
ZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BSLCBwdXRL
aW5kR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklY
TUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJn
ZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0
byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbCIpOwpAQCAtODQ2LDExICs5MTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QxLCBiYXNlKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVn
VDIpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVn
VDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeUlk
cy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1Qw
KSk7CkBAIC04ODEsNiArOTU1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29k
ZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
KyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOwogCkBAIC04OTgsMTUgKzk3MywxNiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUo
KSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
ICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJl
Z1QwKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1Qw
KSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0K
IAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtOTE4LDcgKzk5NCw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBK
SVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTkzNSw5
ICsxMDEyLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBt
YWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBp
bnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAg
ICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7
CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTk1Niwx
MCArMTAzNCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9w
ZXJ0eSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJv
cGVydHkpOwogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MCksIHJlZ1QyKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5
VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJl
Z1QwKSk7CkBAIC05OTEsNiArMTA3Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygp
LCByZWdUMCwgcmVnVDEsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkp
KTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApA
QCAtMTAwOCwxNSArMTA5MCwxNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAg
Q2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRpY19hc3Nl
cnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQpAQCAtMTAyOCw3ICsxMTExLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwog
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTA0NSw5ICsxMTI5LDEwIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMg
YSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAg
IC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UK
KyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4ICsxMTUzLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdz
LCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVz
dWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMDk0LDYgKzExNzksNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0bwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VHJ5R2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAg
Z2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRp
bWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKIApAQCAtMTExMCw3ICsxMTk2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlH
ZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFs
dWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7Cisg
ICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlHZXRCeUlk
T3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTExMzMsOCAr
MTIyMSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
cmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTE2MCw2ICsx
MjQ4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6
ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgcmVnVDAsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkp
OwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAK
QEAgLTExNzYsNyArMTI2NSw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGly
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGlt
aXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOworICAgIENhbGwg
Y2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGlt
aXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIwNyw4ICsxMjk4LDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdz
LCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRC
eUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMyNCw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAg
ICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRz
V2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjYwLDYgKzEzNTEsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRh
ZGF0YSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkg
PT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTI3NSw3ICsxMzY3LDkgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIp
OwpAQCAtMTI5NCw3ICsxMzg4LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgaml0LnN0
b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTMxMSw5ICsxNDA2LDEwIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklY
TUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJn
ZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0
byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2Fs
bCIpOwpAQCAtMTMzNyw2ICsxNDMzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdl
dEJ5SWRXaXRoVGhpc09wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgcmVnVDEsIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTM1NCw3ICsxNDUxLDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsK
KyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUp
OwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzczLDcgKzE0NzIsOCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwg
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0x
MzkyLDkgKzE0OTIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpPihnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0eUdQUik7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJh
dGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBp
dC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVD
YWxsIik7CkBAIC0xNDE4LDExICsxNTE5LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMywgcmVnVDIsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwKICAgICAgICAgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2lu
ZDo6Tm90RGlyZWN0KTsKLSAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVu
ZChnZW4pOwpAQCAtMTQ0OCw2ICsxNTQ4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJl
Z1QxLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTE0NjUsNyArMTU2Niw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0g
YXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC0xNDgx
LDcgKzE1ODQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVz
cygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MDQsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8K
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9w
dGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVw
YXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjI2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVEluQnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9p
bkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU0Niw2ICsxNjUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG8KICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VS
VChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBA
IC0xNTY0LDcgKzE2NzAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywg
cmV0dXJuVmFsdWVHUFIpOwpAQCAtMjc1NCw4ICsyODYyLDggQEAgSklUUHV0QnlJZEdlbmVyYXRv
ciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRL
aW5kLAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOwogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1Qx
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVnVDEsIGVj
bWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjc2NSw3ICsyODczLDEz
IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3Ag
Ynl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICAvLyBKSVRQdXRCeUlkR2VuZXJhdG9yIG9u
bHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhhdmUgdG8g
cmVsb2FkIHRoZSB0YWcuCiAgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwogCi0gICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsK
KyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJ
bmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNs
dHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRz
KCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1Bh
dGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygp
LCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBw
cm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjgx
NywyOSArMjkzMSwyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAgc3dpdGNoIChh
cnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3Vi
bGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3Vv
dXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRD
b250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBu
ZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgbmVl
ZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBlRm9ySklUQXJy
YXlNb2RlKGFycmF5TW9kZSk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAgICAgICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUs
IHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZh
bChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJh
eSBpbiBJQwogICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5IC8gQmlnVWlu
dDY0QXJyYXkgbmV2ZXIgY29tZXMgaGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKICAgICAgICAgICAgIEFTU0VSVChpc0Zs
b2F0KHR5cGUpKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIs
IHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4NjYsOCArMjk4
MCwxNCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgICAgICJCYXNlbGlu
ZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3Ry
aW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7
CiAgICAgfQotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5
cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZv
LT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5t
X2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZh
bEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91
dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENh
bGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmlj
IDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBmdW5jdGlv
biBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVy
YXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxp
emF0aW9ucyBpbiBhZHZhbmNlLgpAQCAtMjkwNiw4ICszMDI2LDEzIEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BCiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGggY2FjaGVk
IHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgcHJvcGVy
dHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRh
KCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJ
bmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
YnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0
clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFk
ZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91
dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxs
KENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICB9CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA2OSwyMCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5m
bywgUmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2Fj
aGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1
dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUu
dWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0
dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBn
ZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbElu
Zm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykp
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0
ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5l
cmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNv
ZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IHB1dEtp
bmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDog
b3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2Nh
dGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVy
bkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
R2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAo
SklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBz
cGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJldHVybkFk
ZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4o
QnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmll
cik7CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJs
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFz
ZSA9IHJlZ1QwOwpAQCAtMjk2OCw3ICszMDk4LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNo
MzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5j
aDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAgICAg
ICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFy
Z2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5s
aW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkp
OworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIo
QWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJl
c3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxv
YWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwgZnBSZWdU
MCk7CkBAIC0yOTc3LDcgKzMxMTYsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIHJldHVy
biBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUg
ZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI5OTUsNyArMzEzNCwxNiBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMy
KGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1
dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMy
KGV4cGVjdGVkU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZi
eVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywg
VHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4
cGVjdGVkU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0
dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5kZXgoc2NyYXRjaCwg
cHJvcGVydHksIFRpbWVzRWlnaHQpLCByZXN1bHQpOwpAQCAtMzAwNCw3ICszMTUyLDcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VM
b2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2Ug
PSByZWdUMDsKQEAgLTMwMjMsNyArMzE3MSwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFy
cmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeQog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigtQXJyYXlT
dG9yYWdlU2hhcGUpLCBpbmRleGluZywgc2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFn
ZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgewor
ICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBz
Y3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAg
ICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1t
MzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNo
LCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hh
cGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JF
cXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5n
dGhPZmZzZXQoKSkpKTsKQEAgLTMwMzUsNyArMzE5Miw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJy
YXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9m
aWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzA2MCw3ICszMjE3LDE3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAg
IGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5
U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJs
eVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0g
YnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRj
aCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxz
ZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2Ny
YXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAg
bG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
LCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJv
cGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3Bl
Y2lhbENhc2UocHJvZmlsZSk7CkBAIC0zMTExLDcgKzMyNzgsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjpl
bWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMTM2LDcgKzMzMDMs
MTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBi
eXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVj
dFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZv
clR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRk
cmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJU
YWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFy
bHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
ZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7
CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJl
bG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZC
b3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMyMmM3NzA0Mjg5YWJiMDgy
ZjlkZGYyMGQ4YzJmZjY2NWRmZDU2ZTIuLjI2ZjY3YzdiY2MwOTJiZDJmNTliMzRlZDVkN2M2Yjhh
MDBkOTczODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOwog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7
CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2RlbEJ5SWRz
LmFwcGVuZChnZW4pOwpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSk7CiAK
ICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVn
cywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywg
SW52YWxpZEdQUlJlZywgcmVnVDQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0yNTcsOCArMjU3LDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRS
ZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICAg
ICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAgICAgICAgICAgIGdlbi5z
dHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CkBAIC0zMDUsOCArMzA1LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAg
ICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRSZWdzKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6
R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwpAQCAtMzkzLDgg
KzM5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0
UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5k
UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMyw4ICs0MzMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQ
UigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIGJyYW5k
UmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFj
Y2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MsIEludmFsaWRHUFJSZWcp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7
CkBAIC02NjAsOCArNjYwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OlRyeUdl
dEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVn
cywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTcwMSw4ICs3MDEsOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtNzQ4LDggKzc0OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0
UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc5MSw4ICs3OTEsOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1Q0LCByZWdUMyksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
Z2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTgzNSw5ICs4MzUsOSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSwgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKSwgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0
KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC04ODIsOCArODgy
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVn
VDEpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJbnZhbGlkR1BSUmVnKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKaW5kZXggODgxNDY0MGU2YWNjZWFjMWI5YjA2OGE0MGM4
OTQyODM0ODZjZGZhYi4uNDlhNmQ1MDY3ZTIzZDI1NGFiNGYwYzM1Njk4MDc2ZGE5YTA3NTA4NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtMzUsNiAr
MzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogY2xhc3Mg
Vk07CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CisKIC8vIFRoaXMgaXMgYSBiYXNlLWNsYXNzIGZvciBK
SVQgc3R1YiByb3V0aW5lcywgYW5kIGFsc28gdGhlIGNsYXNzIHlvdSB3YW50CiAvLyB0byBpbnN0
YW50aWF0ZSBkaXJlY3RseSBpZiB5b3UgaGF2ZSBhIHJvdXRpbmUgdGhhdCBkb2VzIG5vdCBuZWVk
IGFueQogLy8gaGVscCBmcm9tIHRoZSBHQy4gSWYgaW4gZG91YnQsIHVzZSBvbmUgb2YgdGhlIG90
aGVyIHN0dWIgcm91dGluZXMuIEJ1dApAQCAtNTYsNyArNTgsNyBAQCBjbGFzcyBKSVRTdHViUm91
dGluZSB7CiAgICAgfQogICAgIAogICAgIHZpcnR1YWwgfkpJVFN0dWJSb3V0aW5lKCk7Ci0gICAg
dmlydHVhbCB2b2lkIGFib3V0VG9EaWUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJvdXRUb0Rp
ZShWTSYpIHsgfQogICAgIAogICAgIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpcyBjb3B5YWJs
ZSwgYnV0IGF0IHRoZSBjb3N0IG9mIHJlZmVyZW5jZQogICAgIC8vIGNvdW50aW5nIGNodXJuLiBS
ZXR1cm5pbmcgYSByZWZlcmVuY2UgaXMgYSBnb29kIHdheSBvZiByZWR1Y2luZwpAQCAtOTgsNiAr
MTAwLDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAgIC8vIGRlc3Ryb3llZC4KICAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFZNJik7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYwNjg2MjczZGRhODFjYmI2ZDAxY2QyMWRkMDk4OWNj
NmUyYjguLjQ0NzA1NWJmZThhYmVmYWE1NmZlNzhlODA2OGQyY2M2Njg5MzIzYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVk
ZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxDb2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2OCw3IEBA
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgK
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBj
b2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxs
Q2FzZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCi0g
ICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCisgICAgOiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZVJlZiwgdm0sIHsgfSkKICAgICAsIG1fdmFyaWFudHMoY2FzZXMuc2l6
ZSgpKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAzNTkzY2NlODg2MDg4MDE4MzQ2YTgwOGU1
Zjg2NDc4NzFhNDQxYjI5Li4wMWQ5MmMxYjhmMmNjZDVjZTQwODQyNDEzY2U0MjZlYTQzZmU2YWJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTcxLDggKzcxLDEwIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25D
YWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4g
Y2FsbCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICByZXR1
cm4gc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uLnJldGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKTsK
ICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklU
VHlwZTo6RlRMSklUKSB7CiAgICAgICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPiB0YXJn
ZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+KGNhbGwp
OwpAQCAtMTA1LDYgKzEwNywxNSBAQCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxP
cGVyYXRpb25QdHJUYWc+KCkpOwogfQogCitzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25D
YWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
bmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkg
eworICAgICAgICBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24gPSBuZXdDYWxsZWVGdW5jdGlvbi5y
ZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgY2FsbCwgbmV3Q2FsbGVlRnVuY3Rp
b24pOworfQorCiBlbnVtIElubGluZUNhY2hlQWN0aW9uIHsKICAgICBHaXZlVXBPbkNhY2hlLAog
ICAgIFJldHJ5Q2FjaGVMYXRlciwKQEAgLTIwOSw3ICsyMjAsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqCiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAg
ICAgICAgIGNvbnN0IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVO
YW1lIHx8IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3ND
YXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VDZWxsKSkgewpA
QCAtMjE5LDcgKzIzMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAg
ICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRl
QXJyYXlMZW5ndGgoc3R1YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtp
bmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXpp
bmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZv
LmluaXRBcnJheUxlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjI3LDEwICsyMzgs
MTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9
IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0
aCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmluZyhiYXNl
Q2VsbCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2Fj
aGVUeXBlOjpVbnNldCAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0
dWJJbmZvKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBD
YWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vzczo6aXND
YWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CiAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5n
dGgoc3R1YkluZm8pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGlu
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1p
emluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtMjgyLDEyICsyOTQsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAg
ICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQogICAgICAgICAgICAgICAgICYmICFz
dHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAgICAg
ICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAgICAgICAgICAgICBib29sIGdlbmVy
YXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5QWNjZXNz
KHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAg
ICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19J
QygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9
PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNo
aW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAg
ICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5j
dGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGlt
aXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8u
aW5pdEdldEJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVk
T2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRy
eUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDI1LDcgKzQzNiw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBs
YWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZh
bHVlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5j
b2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Mo
Y29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM5LDcgKzQ1MCw3
IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZUdldEJ5KGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8s
IGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdl
dEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKIH0KIAogCkBAIC01MjksNyArNTQwLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2QKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyKCkpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29k
ZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDAsNyArNTUx
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFs
dWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewog
ICAgIGlmICh0cnlDYWNoZUFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2UsIGluZGV4LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25HZXRC
eVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlk
RnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQpIC0+
IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2LDcgKzY0Nyw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5ICYmIChwdXRL
aW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsK
KyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3Qu
YmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKICAgICAgICAg
ICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5nUHJvcGVydHkp
IHsKQEAgLTY1OCw3ICs2NjksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQ
dXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVy
YXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hl
ZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFNlbGZQ
YXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJh
c2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNs
b3QsIHB1dEtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRC
eUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hlZE9m
ZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
dHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtODAxLDcgKzgxMiw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC04MTUsNyArODI2LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5
Q2FjaGVQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIG9sZFN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25D
YWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlv
bihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRC
eUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlO
YW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1vZGUgZWNt
YU1vZGUpCkBAIC04NDYsNyArODU3LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAg
ICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICByZXR1cm4g
UmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBu
ZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBp
ZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdP
ZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtODc0LDcgKzg4NSw3IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgewogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAgICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7Ci0gICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5l
Q29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04OTEsOSAr
OTAyLDkgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAKICAgICBpZiAodHJ5Q2FjaGVEZWxldGVC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUs
IHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZlVXBPbkNhY2hl
KSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdlbmVyaWMsIGJh
c2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6
ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgICAgICBpZiAoa2luZCA9PSBE
ZWxCeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVC
eUlkR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVy
aWMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRl
QnlWYWxHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdl
bmVyaWMpOwogICAgIH0KIH0KIApAQCAtOTM3LDcgKzk0OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29k
ZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQnlJZFNl
bGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9
PSBiYXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1By
b3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVj
dHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC05ODQs
NyArOTk1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogCiAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKKyAg
ICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAg
ICAgICAgICB2bSwgY29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNj
ZXNzQ2FzZTo6SW5NaXNzLCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kID8gc2xvdC5jYWNoZWRPZmZz
ZXQoKSA6IGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHBy
b3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNj
ZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0
KCksIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CkBAIC05OTMsNyArMTAwNCw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgIExP
R19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTEwMDcsNyArMTAxOCw3IEBAIHZvaWQgcmVwYXRjaEluQnlJRChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3Qq
CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAg
aWYgKHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkK
LSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgICAgIHJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25JbkJ5SWQpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVj
a1ByaXZhdGVCcmFuZCgKQEAgLTEwMzIsNyArMTA0Myw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3Bl
cnR5ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFk
ZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0
eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwg
c3RydWN0dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNl
OjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1
cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZN
b3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA0MCw3ICsxMDUxLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xMDU0LDcgKzEwNjUsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1By
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jawogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAog
ICAgIGlmICh0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlT2JqZWN0LCBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAg
IHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCkBAIC0xMDkxLDcgKzEx
MDIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQo
CiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OlNldFByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5k
KHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAg
ICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2
YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZN
b3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA5OSw3ICsxMTEwLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpTZXRQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6
cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1
YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29k
ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExMTMsNyArMTEyNCw3IEBAIHZvaWQgcmVw
YXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJbmZvKSA9
PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5l
cmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigK
QEAgLTExMzMsNyArMTE0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUlu
c3RhbmNlT2YoCiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIHZhbHVlID0gdmFsdWVWYWx1ZS5h
c0NlbGwoKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+c3RydWN0dXJl
KHZtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAg
ICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7CiAgICAg
ICAgIGlmIChwcm90b3R5cGUpIHsKICAgICAgICAgICAgIGlmICghanNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCB2YWx1ZSkpIHsKQEAgLTExNjgsOSArMTE3OSwxMyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1
bXAoKSwKLSAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSByZXN1bHQuY29k
ZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1w
KCksCisgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAgICAgCkBAIC0xMTg1LDcgKzEyMDAsNyBAQCB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKAogewog
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAo
dHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZhbHVlLCBw
cm90b3R5cGVWYWx1ZSwgc3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOworICAgICAgICByZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOwogfQogCiBzdGF0aWMgdm9pZCBsaW5rU2xv
d1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGVSZWYpCkBAIC0xMjAyLDcgKzEyMTcsNyBA
QCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJ
bmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4g
dmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIGxp
bmtTbG93UGF0aFRvKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExp
bmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxU
aHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiB9CiAKIHN0YXRpYyBKU0Nl
bGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBjYWxsZWUpCkBAIC0xMzIwLDcgKzEzMzUsNyBA
QCBzdGF0aWMgdm9pZCBsaW5rVmlydHVhbEZvcihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNh
bGxMaW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1
bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHVi
KEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkpOwog
ICAgIGNhbGxMaW5rSW5mby5zZXRDbGVhcmVkQnlWaXJ0dWFsKCk7CiB9CiAKQEAgLTE2NDEsMTQg
KzE2NTYsMjYgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKIAogdm9pZCByZXNldEdldEJ5KENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEdldEJ5S2lu
ZCBraW5kKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgIHN3aXRjaCAoa2luZCkgeworICAg
IGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKKyAgICBj
YXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkRpcmVjdDoKKyAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFs
OgorICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldEJ5S2luZDo6
UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBi
cmVhazsKKyAgICB9CiB9CiAKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgdXNpbmcgRnVuY3Rpb25UeXBl
ID0gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7Ci0gICAg
RnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0
aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBGdW5jdGlvblR5cGUgdW5v
cHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0
SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBGdW5jdGlvblR5cGUgb3B0aW1pemVk
RnVuY3Rpb247CiAgICAgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RP
cHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0T3B0aW1pemU7CkBAIC0xNjY1LDQ1ICsxNjkyLDQ4IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgICAg
IG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGlt
aXplOwogICAgIH0KIAotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlvbik7Ci0gICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0
YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlvbik7CisgICAgSW5saW5l
QWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0K
IAogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQogewogICAgIGlmIChraW5kID09IERlbEJ5S2lu
ZDo6Tm9ybWFsKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
KTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxz
ZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Ci0gICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5n
SW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotc3RhdGljIHZvaWQgcmVzZXRQ
YXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3N0YXRpYyB2b2lkIHJl
c2V0UGF0Y2hhYmxlSnVtcChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogewotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5w
YXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0g
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIGVsc2UKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8u
c2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotdm9pZCByZXNldElu
c3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluc3RhbmNl
T2YoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsK
LSAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8pOworICAgIHJlc2V0UGF0Y2hhYmxlSnVt
cChjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5k
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0g
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRp
bWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5n
SW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFNldFByaXZh
dGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0g
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKFZNJiB2bSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBKU09iamVjdCogY2FsbGVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaAppbmRleCAzMTM3OWRjNGU1YTlkYzJkYzZlYTQ5MzE3Nzk0NzI2YTAwMjAzNTFh
Li4zYTE5ZmQzNjU0OWQxYTg0ODA5Zjk0ZGFkYTJkZmJlNTcwMDBmZDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIHJlc2V0R2V0QnkoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5
SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXREZWxCeShDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeUlE
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlc2V0SW5zdGFuY2VPZihT
dHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Q29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBkOTQ5N2ViZDRmMGJhNmY2MjU3OWRj
ZDU0MjNhN2I5ODQ3ZTk0NGUyLi43ZTBlNTkzMjc0NWI4YWFlZGI5OTBkOThkYTY2Mjc3ODQzNWNl
MjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAg
LTUzNiw2ICs1MzYsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsK
ICAgICB2KEJvb2wsIHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihCb29sLCB1c2VUb3BMZXZlbEF3YWl0LCB0cnVlLCBOb3JtYWwsICJhbGxvdyB0
aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLiIpIFwKICAgICB2
KEJvb2wsIHZlcmJvc2VFeGVjdXRhYmxlUG9vbEFsbG9jYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51
bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYXJlZElDLCBpc0FSTTY0KCksIE5vcm1hbCwgbnVs
bHB0cikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQsIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2MGY5OGY1NjNhNzZlZGVkYTUyYTA3Mjg4M2U0
YmFmZWJkNzJkZWU1Li41ZjE0NWVmMzdmMWQ0NzUzMjQ1MmY4NDY5NTc0NDk4MzBlZWMxMzI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2Uu
aCIKICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNp
bmNsdWRlICJCaWdJbnRPYmplY3QuaCIKQEAgLTU2Niw2ICs1NjcsNyBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCog
c3VjY2VzcykKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJu
YWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRl
cm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgbV9z
aGFyZWRKSVRTdHVicyA9IG1ha2VVbmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAgICB9CiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApAQCAtNjQ5LDYgKzY1MSwxMCBAQCBWTTo6flZNKCkKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY3JhdGNoQnVmZmVycy5zaXplKCk7ICsraSkK
ICAgICAgICAgVk1NYWxsb2M6OmZyZWUobV9zY3JhdGNoQnVmZmVyc1tpXSk7CiAjZW5kaWYKKwor
I2lmIEVOQUJMRShKSVQpCisgICAgbV9zaGFyZWRKSVRTdHVicyA9IG51bGxwdHI7CisjZW5kaWYK
IH0KIAogdm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrKHZvaWQqIGFy
Z3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMmQzY2Q0NjY4ODhiY2Uz
YWZiNWE4ODkzNjE3Mjc1OGYxOGM5M2ZhNi4uNGRlOTVmNjM4YjFlMjM4NTlhMWIzNGU5MTdkYzkz
YWEyZjlmMzVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNzQsNiArMTc0
LDcgQEAgY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVy
OwogI2VuZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOworY2xhc3MgU2hhcmVkSklUU3R1YlNldDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFNv
dXJjZVByb3ZpZGVyQ2FjaGU7CkBAIC04NDEsMTEgKzg0MiwxMyBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFRodW5rcz4gaml0
U3R1YnM7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRDVElT
dHViKFRodW5rR2VuZXJhdG9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkSklUU3R1YlNl
dD4gbV9zaGFyZWRKSVRTdHViczsKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAj
ZW5kaWYKKwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429975</attachid>
            <date>2021-05-27 18:59:21 -0700</date>
            <delta_ts>2021-05-27 23:32:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527185920.patch</filename>
            <type>text/plain</type>
            <size>426889</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi4yM2NjNjY3YmFlM2Y4MzVl
YTg0NzllOTc3N2ZlNTAxNWM0ZDRjODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNTggQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6b2Zm
c2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNl
dE9mQmFkVHlwZUp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVzZXRKSVREYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6ZW1pdERPTUpJVEdldHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OmdldFNjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAg
KEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAo
SlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpT
Qzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29k
ZSk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNj
ZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0
ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQpOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxs
V2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRk
Q2FzZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSk6CisgICAg
ICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNj
ZXNzR2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToK
KyAgICAgICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxl
QWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFj
Y2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9j
YXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhJQ0NhbGwpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVz
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjph
cHBlbmRDYWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHJpdmF0ZUJyYW5k
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0
QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxC
eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VP
Zik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAg
ICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQpOgorICAgICAgICAoSlNDOjpGVEw6
OlNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQgY29uc3QpOgorICAgICAgICAoSlND
OjpGVEw6OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBmdGwvRlRM
U2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlvbik6CisgICAg
ICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xv
d1BhdGhDYWxsS2V5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxs
S2V5Lmg6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpTbG93UGF0aENhbGxL
ZXkpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aW5kaXJlY3RPZmZzZXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6d2l0aENhbGxUYXJn
ZXQpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpoYXNoIGNvbnN0KToKKyAg
ICAgICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2Vu
ZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxU
aHVua0dlbmVyYXRvcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKToKKyAgICAgICAgKiBq
aXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVj
dGlvbjo6QXJnQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6cHVzaFJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6cHVzaEV4dHJhUmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpB
cmdDb2xsZWN0aW9uOjpwdXNoTm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpB
cmdDb2xsZWN0aW9uOjphZGRHUFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFy
Z0NvbGxlY3Rpb246OmFkZEdQUkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpBcmdDb2xsZWN0aW9uOjphZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6QXJnQ29sbGVjdGlvbjo6YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6
Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZv
ckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2
YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJF
TlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
ZXR1cEFyZ3VtZW50c0VudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0
dXBBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
Rm9ySW5kaXJlY3RDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJv
dXRpbmUpOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJv
UmVmQ291bnQpOgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUpOgorICAgICAgICAoSlNDOjpjcmVhdGVKSVRT
dHViUm91dGluZSk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oOgorICAg
ICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSk6CisgICAgICAgICogaml0
L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjps
aW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpT
Qzo6SklUQ29kZTo6dXNlU2hhcmVkSUMpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVElubGluZUNhY2hlR2VuZXJh
dG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSk6Cisg
ICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbik6CisgICAg
ICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5
SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5h
bGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6Cisg
ICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChK
U0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0TG9hZEZvckFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNl
b2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX2Vu
dW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91
c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2Rp
cmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXREb3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0xvYWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJy
YXlTdG9yYWdlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAg
ICAgICogaml0L0pJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5l
OjphYm91dFRvRGllKToKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmtleXMgY29uc3Qp
OgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAg
IChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZWFkUHV0
SUNDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaENhbGwpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEdldEJ5KToKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEFycmF5
R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlND
OjpyZXBhdGNoUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRlQnkpOgorICAg
ICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluQnlJ
RCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNo
ZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaENoZWNrUHJpdmF0ZUJy
YW5kKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNlT2YpOgorICAgICAgICAoSlND
OjpsaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0dWFsRm9yKToKKyAgICAgICAg
KEpTQzo6cmVzZXRHZXRCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAg
IChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNldFBhdGNoYWJsZUp1bXApOgor
ICAgICAgICAoSlNDOjpyZXNldEluQnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0SW5zdGFuY2VP
Zik6CisgICAgICAgIChKU0M6OnJlc2V0Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpyZXNldFNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp+Vk0pOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3Qp
IGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCmluZGV4IGU1MTc1N2U5YjhmYzY0Mjg3ODI3YzE2ZDAyZDIxY2MyMThmYjEzMjYuLjgzY2Iz
NmQwNmY4MzEyYzg5NWY2YTQ5YjI1NmJiZWMzNDYyNzNlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0yMzQsOCArMjM0LDggQEAgY2xhc3Mg
TGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBDb2RlTG9jYXRpb25D
YWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAgICAgewotICAgICAgICBBU1NFUlQoY2Fs
bC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAgICAgICAgQVNTRVJUKCFjYWxsLmlzRmxh
Z1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxs
OjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5l
YXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8dGFnPihnZXRMaW5rZXJBZGRy
ZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5o
CmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNhZGExZmMwMzRjYzc0MWQuLmU1YjBiMmZm
Nzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTIyMCwx
OSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVU
eXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQogCi0gICAgQUxXQVlT
X0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7
CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklUQ2FnZSgpIHx8IGNhbGxlclR5cGUodGFn
KSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0
Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJu
IGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAgICAgY2FsbChkYXRhVGVtcFJlZ2lz
dGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGwoQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcg
IT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWRE
YXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICByZXR1cm4gY2FsbChk
YXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRh
Zyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGxPcGVyYXRpb24oY29uc3Qg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVmZjc4MjI2MmU3MTg1Yjg3
NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNTc5ZDg1OGRkNzcyYzY1N2IyYmI0YzVhNzRhYmExMDNm
ZWRmYjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3
IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIs
IG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNj
ZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
OwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBu
ZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmll
ciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAor
UmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAgICBW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3
U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQs
IG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2Uo
KQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1
Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHN3
aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09iamVj
dCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRpdGlv
blNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
YmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiArMTA2Myw4IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9j
YXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAg
aWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0
b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEzMTcs
NiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0
eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BS
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBA
IC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQg
QWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgVk0mIHZtID0gc3Rh
dGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBNb2R1
bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0
MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgorICAg
IGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJp
YzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2Ug
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nl
c3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9t
QWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7
CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7CisgICAgICAgICAgICBpZiAo
IWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gc3Ry
dWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3VyclN0cnVjdHVy
ZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgIGN1cnJTdHJ1
Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNo
YWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpX
YXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKKyAgICAgICAgICAgIHN0
YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5vdywgd2Ugb25seSBhbGxv
dyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVp
dmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0dXJlRW5zdXJlc1ZhbGlk
aXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgLy8g
VGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0
IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAgICAgICAgICAgIC8vIEFj
Y2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1ZS4KKworICAgICAgICAg
ICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1ldDogIiwgY29uZGl0aW9u
LCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0IGhhcyBhIHdlYWsgcmVm
ZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVyZS4KKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlNDZWxsPih2
bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAtMTQxNyw3ICsxNTAyLDcg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOwog
CiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVX
YXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb25k
aXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJsb2NrLCBj
b25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTU4Miw3
ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2Fy
eSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0
ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgwMiw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5k
aWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJ
bmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9
PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE4MTQsOCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRl
Lm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChj
b2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0
ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBz
cGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsK
KyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFs
dWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyAr
MTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVy
QnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUu
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOwor
CisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJz
Ojpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsyMDMz
LDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFz
ZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1
ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYg
KzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygp
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0yMTkxLDYgKzIyOTcsMTMg
QEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5VHlwZShBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBKSVRTdHVi
Um91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tD
b25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nl
c3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3Qg
Y2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhl
bSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0Fj
Y2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1f
dHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhz
Lm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5
ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5t
X3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobGhzLm1fY29uZGl0aW9uU2V0LnNpemUoKSAhPSByaHMubV9jb25k
aXRpb25TZXQuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxpdGVy
ID0gbGhzLm1fY29uZGl0aW9uU2V0LmJlZ2luKCk7CisgICAgYXV0byByaXRlciA9IHJocy5tX2Nv
bmRpdGlvblNldC5iZWdpbigpOworICAgIGZvciAoOyBsaXRlciAhPSBsaHMubV9jb25kaXRpb25T
ZXQuZW5kKCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAgICAgaWYgKCEoKmxpdGVyID09ICpy
aXRlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChs
aHMubV90eXBlKSB7CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBj
YXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERl
bGV0ZU1pc3M6CisgICAgY2FzZSBSZXBsYWNlOgorICAgIGNhc2UgTWlzczoKKyAgICBjYXNlIEdl
dEdldHRlcjoKKyAgICBjYXNlIEluSGl0OgorICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQXJy
YXlMZW5ndGg6CisgICAgY2FzZSBTdHJpbmdMZW5ndGg6CisgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBDaGVj
a1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICBjYXNlIEluZGV4
ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0
QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAg
Y2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVy
OiB7CisgICAgICAgIC8vIEdldHRlciBhbmQgU2V0dGVyIHJlbGllcyBvbiBDb2RlQmxvY2ssIHdo
aWNoIG1ha2VzIHNoYXJpbmcgaW1wb3NzaWJsZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3Nv
ckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNj
ZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCk7CisgICAgICAgIGlmIChsaHNkLm1fZG9tQXR0cmlidXRlIHx8IHJoc2QubV9k
b21BdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBs
aHNkLm1fY3VzdG9tU2xvdEJhc2UgPT0gcmhzZC5tX2N1c3RvbVNsb3RCYXNlCisgICAgICAgICAg
ICAmJiBsaHNkLm1fY3VzdG9tQWNjZXNzb3IgPT0gcmhzZC5tX2N1c3RvbUFjY2Vzc29yOworICAg
IH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBs
aHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9
IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhz
ZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAgICB9
CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9
IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNk
ID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBs
aHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1fbW9k
dWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSByaHNk
Lm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAgIGNh
c2UgSW5zdGFuY2VPZk1pc3M6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAgICAg
ICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBh
dXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1
cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdk
NjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uOWMyZmIzZWE2YWQyOGIxNzQ0YzA5Nzc4
OGRjNjRiMzU1YjRkMGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIsNyBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8v
IFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBv
bHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBh
bGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVm
dWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNl
IHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNz
Q2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVS
KEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpA
QCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVu
dHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0
dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9
IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJy
YW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRl
QnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8
QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0
cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsg
fQpAQCAtMjUzLDExICsyNTYsMzkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9
CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRpdGlvblNl
dC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5LCBtX3N0
cnVjdHVyZS5nZXQoKSwgbV9vZmZzZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFs
SW5TaGFyaW5nKGNvbnN0IEFjY2Vzc0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3Rl
Y3RlZDoKICAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsK
LSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2Uo
Y29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vz
c0Nhc2UmJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQor
ICAgICAgICAsIG1fc3RhdGUoV1RGTW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3Zp
YVByb3h5KFdURk1vdmUob3RoZXIubV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RG
TW92ZShvdGhlci5tX29mZnNldCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhl
ci5tX3N0cnVjdHVyZSkpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5t
X2NvbmRpdGlvblNldCkpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3Zl
KG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNv
bnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisg
ICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3Ro
ZXIubV92aWFQcm94eSkKKyAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlv
blNldChvdGhlci5tX2NvbmRpdGlvblNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0No
YWluKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVy
KG90aGVyLm1faWRlbnRpZmllcikKKyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9y
PShjb25zdCBBY2Nlc3NDYXNlJikgPSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBt
X3N0YXRlID0gUHJpbW9yZGlhbDsgfQpAQCAtMjc1LDcgKzMwNiw3IEBAIGNsYXNzIEFjY2Vzc0Nh
c2UgewogCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNj
ZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVh
bCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFj
dGlvbiB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBp
biB3aGljaCB0aGUgY2FzZQogICAgIC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdh
dGNocG9pbnQgc2V0cyB0aGF0IHdpbGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0
NiwxNjggQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCitjbGFzcyBTaGFyZWFibGVKSVRTdHViUm91dGluZSBmaW5hbCA6IHB1
YmxpYyBKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgU2hhcmVhYmxlSklUU3R1YlJvdXRp
bmUoVk0mIHZtLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKKyAgICAg
ICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwg
bV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9r
ZXlzOyB9CisKKyAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1f
a2V5czsKK307CisKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKFNoYXJlZEpJVFN0dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJT
ZXQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBrZXlzKQorICAgIHsKKyAgICAgICAgSGFzaGVyIGhh
c2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAgICAgICAgV1RGOjph
ZGQoaGFzaGVyLCBrZXktPmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwor
ICAgIH0KKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7CisgICAgICAg
ICAgICBLZXkoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAg
ICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQ
UihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAg
ICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0
dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJz
KHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChi
aXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRTdHViUm91
dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAg
ICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAg
ICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAg
ICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAg
ICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCAhPSBiLm1fd3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
SklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJl
ZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAg
IEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAg
ICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVkLT5rZXlz
KCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBh
LCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJjaGVyIHsK
KyAgICAgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5cyk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6
OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byYgYXZlYyA9ICphLm1fd3JhcHBlZC0+a2V5cygpOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBhdXRvJiBidmVjID0gYi5tX2tleXM7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdmVjLnNpemUoKSA9PSBidmVjLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYnZlYy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFy
aW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgIEdQ
UlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgR1BS
UmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsK
KyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYgbV9rZXlzOwor
ICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5LCBKSVRT
dHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleS5tX3dy
YXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChIYXNoOjpL
ZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0KKworICAg
IHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAgYXV0byBp
dGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAgICAgaWYg
KGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3ZlKGl0ZXIp
OworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVyJiBzZWFy
Y2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hhcmVkSklU
U3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKGVu
dHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1fd3JhcHBl
ZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4
NC4uNDJkMDc5NGRkNjI0MGM2MzgwYzliYTE3ZTlkNGY0MzIwMjIyMjczMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjYyLDYgKzI2MiwxNCBAQCBz
dHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihC
eVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisKICAgICBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdkZjA1ZTEw
YmM5MGI2NTZmMzUwM2M4NWMwNTRjNWQzYWZhN2M2YjkuLjE4OWE1ODQ3NzBmMDJjYjM4N2Y3NWQ5
YTQ0MzZmY2I1MDg0Y2U0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC04NjEsNyArODYxLDcgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkK
ICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgp
KSB7CiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIDogaml0RGF0YS0+
bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CisgICAg
ICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgqbV92bSk7CiAgICAgICAgICAgICBzdHViSW5m
by0+ZGVyZWYoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgICAgICAvLyB0byBMTEludC4KIAogICAgICAg
ICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KSB7Ci0gICAgICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOworICAgICAgICAgICAgc3R1
YkluZm8tPmFib3V0VG9EaWUoKm1fdm0pOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IDc3MzI5ZjNhNDFlMDRhMWM3MmRiNjJjMWQ1OGY0ZjVjMzYzOTcyNTEuLjgxYWI5N2Zi
ZDgxOGIxZmI3YzFmYmZlZDQwMjQ5ZmM5MzcxNjNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMCw2ICs0MjAsMTEgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09
IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKworICAgIGJvb2wgdXNlU2hhcmVkSUMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEpJVENvZGU6OnVzZVNoYXJlZElDKGppdFR5cGUo
KSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIwMmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5
N2ZmMWNmZjdjZjM4MzYuLjZhMzBlNjM4ZTIwMGNhMDgwZTE0YmFhZDg3YWU4ZTE2NGZmNjljNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1heUJlTnVsbCh2bSwgb3duZXIsIGN1c3Rv
bVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNv
bmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFs
U2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tR2V0dGVyLCBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlv
bj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9
IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0
ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51
bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RC
YXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVl
U2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2N1c3Rv
bUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJU
YWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05
MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nh
c2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAgbV9kb21BdHRyaWJ1dGUg
PSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
cwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJl
Z2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgIEdQUlJl
ZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYgKzIyNSwxMSBAQCB2b2lk
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6IGZwU2NyYXRjaCkKICAg
ICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwogICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JD
Q2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQu
Y29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
cmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlm
CiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92
ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNu
aXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXgg
ODczZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJlYjdkMzNiMi4uMTAwZmIyN2VlODU2NjE2
ZmI0MTg0MjVlYzJjNzIzNDk0YTRhZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC01MywxNyArNTMs
MTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFi
bGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciosIEdQUlJlZyBiYXNlRm9yR2V0
R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAor
ICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBT
dHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJv
b2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1
c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAgIEpTT2JqZWN0KiBjdXN0
b21TbG90QmFzZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJl
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
LCBib29sIHZpYVByb3h5ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBjdXN0b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJh
c2UgPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVBy
aW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xv
bmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKIAogICAgIH5HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhm
YWZkOThkMGIyODU5M2NiYmIwNTdiYWU5NmZiMzIxYS4uMTJkMWI1YTBlYzdkZTVmNjc3YWQzNmRh
MTJiYWNlNDA2MjVhMGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUFjY2Vzcy5jcHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBHUFJSZWcgZ2V0U2NyYXRjaFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9z
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkp
CiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMzc5LDggKzM4MSw0NSBAQCBib29s
IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3Zv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKKyAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9
IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENDYWxsSGVscGVycyBqaXQ7
CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBh
IG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUg
bWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7
CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fz
c2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVD
YWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZl
ci5saW5rKGp1bXAsIHRhcmdldCk7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5v
UHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9p
ZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJl
ZElDKCkpIHsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpID09IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
KSB7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnN0dWJJbmZvKSwgc3R1YkluZm8ubV9zdHVi
SW5mb0dQUik7CisgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigp
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1
bXAoKTsKKworICAgICAgICAgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxp
bmUoInN0dWIgY2FsbHMiLCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uZG9u
ZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bGlua2VkQ29kZUlubGluZSk7CisgICAgICAgIH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRy
ID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKIAogICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CkBAIC0zOTQsNiArNDMzLDI2IEBAIHZv
aWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0
clRhZywgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7CiB9CiAKK3ZvaWQg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1
dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQg
aGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2Yg
YW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVB
U0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVt
cCwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKworICAgIEZJTkFMSVpFX0NPREUo
bGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVt
cCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4
ZjIyNjQwNmM3ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQuLjhkNjYwMWM4Yjk4ZDgxMjVlYzZiMTAw
YTA3OWM1MWUxMTJhMzgzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmgKQEAgLTEwNCw3ICsxMDQsMTAgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsK
ICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZv
JiwgSlNBcnJheSopOwogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0
cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChT
dHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKLSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHVi
QXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0
dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2Vs
ZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJv
b2wgZ2VuZXJhdGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5j
cHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFlNzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4
ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdjMTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0z
MiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IElu
c3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5
cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgcHJvdG90eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
cHJvdG90eXBlKSk7CiB9CiAKIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFBy
aW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5
IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQs
IENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90
eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3ND
YXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9m
QWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmluZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5
OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNz
Q2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNj
ZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0
YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gQWNjZXNzQ2FzZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsK
ICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYs
CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZv
aWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VP
ZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFk
YzIzMzY5MzNkNjc2YzNiZTllOTBjNjAxODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZl
NjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4
ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rp
b24uc2V0KHZtLCBvd25lciwgaW50cmluc2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVm
PEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGlu
dHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1
M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEyYmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMg
Ym9vbCBjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAg
ICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCos
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9u
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNG
dW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
Jik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApp
bmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEwOGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFm
NDgxNTU2NjE1MTcwODVhODhlMTlhMDczYWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3Bw
CkBAIC00NSwxOCArNDUsMTggQEAgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVs
ZUVudmlyb25tZW50LnNldCh2bSwgb3duZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVF
bnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQor
UmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVu
dCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVs
ZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1l
c3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAppbmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNk
MDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVu
dmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52
aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZz
ZXQpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVs
ZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKaW5kZXggNWQ5MDU0NTk3NGYxZWQzN2YyOGNhZjNhMmFlYjM0NmE0OTEwYTI4My4uNmRhY2Ni
Zjg3MWMwODdhYWJhOTg2MzVjNTAxYTc4YjdmNGZkMTAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwxNCBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNv
bmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2go
KSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KICAgICAKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpL
aW5kKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlh
N2QwOWEwMTUuLjVkM2YxMzY3ZWE0ZDU0Y2JkNTFmYWI0MmRjYjMxNjkxYmQxOWZlOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7
CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0g
ICAgICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9u
KTsKKyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFu
ZEluc3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25k
aXRpb24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2go
KQpAQCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVT
Y3JhdGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICBy
ZXN0b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBp
ZiAoaml0LT5jb2RlQmxvY2soKS0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsK
KyAgICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29u
c3QgUmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNh
bGwoKQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnBy
ZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9
OwogfQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNj
ZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQog
ewogICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3Rl
cnMoKTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
KyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVz
VXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpw
cmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJh
U3RhY2tQYWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBv
bHltb3JwaGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYg
bG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3Jp
Z2luYWxDYXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdp
bmFsQ2FzZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3Mg
YWZ0ZXIgZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2lu
YWxDYXNlc1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3Jp
Z2luYWxDYXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAg
ICAgIGF1dG8gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwogCiAgICAg
ICAgIC8vIEFkZCBpdCBvbmx5IGlmIGl0IGlzIG5vdCByZXBsYWNlZCBieSB0aGUgc3Vic2VxdWVu
dCBjYXNlcyBpbiB0aGUgbGlzdC4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMzQ2
LDkgKzM0OSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKAogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjph
ZGRDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKIHsK
LSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsK
KyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKICAgICBuZXdB
Y2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4gYWRkQ2FzZXMo
bG9ja2VyLCB2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nlc3NlcykpOwog
fQpAQCAtNDQwLDcgKzQ0Myw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNB
Y2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWdu
ZWQgc3JjSW5kZXggPSAwOwogICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAo
c3JjSW5kZXggPCBtX2xpc3Quc2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10p
OwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0
aGVuIHdlIGhhdmUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAg
ICAgICAgLy8gZmFpbCB0byByZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1
Y3R1cmVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzQ5NCw4
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRo
aXNUYWdHUFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQ
Uik7CiAKICAgICBzdGF0ZS5zY3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQ
UigpOwogCkBAIC01MDAsMTIgKzUwNSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1v
cnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMg
aml0KGNvZGVCbG9jayk7Ci0gICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNl
cnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVz
ZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJh
U3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2Rl
ID0gZmFsc2U7CiAKQEAgLTUyMSwxMiArNTIwLDMwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ZGF0YUxvZygiT3B0aW1pemVkIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwotICAg
IAorCisgICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNl
dHRlckNhbGxzID0gZmFsc2U7CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4ga2V5cyhjYXNlcy5zaXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBm
b3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5k
b2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgpID09
IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRl
cikKKyAgICAgICAgICAgIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAg
a2V5c1tpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUu
bV9kb2VzQ2FsbHMgPSBkb2VzQ2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJD
YWxscyA9IGRvZXNKU0dldHRlclNldHRlckNhbGxzOworICAgIC8vIEdldHRlciAvIFNldHRlciBy
ZWxpZXMgb24gc3RhY2stcG9pbnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBs
aW5rZWQgQ29kZUJsb2NrLCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAg
aWYgKGRvZXNKU0dldHRlclNldHRlckNhbGxzKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNl
OworCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNv
bnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3
b24ndCBjaGFuZ2UgdGhhdCBzZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRC
eVN0cnVjdHVyZUNoZWNrID0gdHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9
IGZhbHNlOwogICAgIGJvb2wgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBi
b29sIG5lZWRzU3RyaW5nUHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1i
b2xQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CkBAIC01NDIsMTAgKzU1OSw3MSBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvYwogICAgICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0
ZS53YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBh
bGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVD
aGVjayhzdHViSW5mbyk7Ci0gICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2Fz
ZTo6R2V0dGVyIHx8IG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAg
ICAgICAgICBoYXNKU0dldHRlclNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2Fz
ZS0+dXNlc1BvbHlQcm90bygpKQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3Bl
cnR5Q2hlY2sgfHwgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVk
ID0gZmFsc2U7CisKKyAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWI7CisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpIHsKKyAg
ICAgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVl
R1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnVz
ZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAga2V5cworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJjaGVyKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGF1dG8gZmluaXNoQ29kZUdlbmVyYXRpb24gPSBbJl0oUmVmUHRy
PEpJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9zdHViUm91dGluZSA9IFdURk1v
dmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9p
bnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2Vs
bD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgaWYgKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJSZXR1cm5p
bmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAgICAgbV9saXN0ID0g
V1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOworCisgICAgICAg
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAgICAgICAgaWYgKG1f
bGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2Vu
ZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CisK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgbV9zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfTsKKworICAgIGlmIChzdHViKSB7CisgICAg
ICAgIGZvciAoYXV0byYgYWNjZXNzQ2FzZSA6IGNhc2VzKQorICAgICAgICAgICAgYWNjZXNzQ2Fz
ZS0+Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uoc3RhdGUsIGNvZGVCbG9jayk7CisgICAg
ICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKICAgICB9CiAK
KyAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsK
KworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRl
Lm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8g
Z3VhcmFudGVlIHRoYXQgc3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlz
IG5vdCBhIHByb2JsZW0gaWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNh
bGxzIHNpbmNlIHN0YWNrLXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJl
Z2lzdGVyIGFuZCBpdCBpcyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1
dGFibGUgY2FsbCBkb2VzIG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rp
bmcgc3RhY2stcG9pbnRlciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVy
IGNhbGxzLiBCdXQgdGhpcyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFj
ay1wb2ludGVyLCBhbmQgbWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8g
VG8gZW5zdXJlIFBBQy10YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVy
IHRvIHRoZSBhcHByb3ByaWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIH0KKworICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAg
ICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAK
ICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5s
aWtlbHksIGJ1dCB3ZSBtYWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFu
ZFJlcGF0Y2guYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc2OCw3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0
aW9uSGFuZGxlcnMgPSBudWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3Rv
cmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAg
IGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pT
R2V0dGVyU2V0dGVyQ2FsbHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hl
biBkb2luZyBnZW5lcmljVW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAg
ICAgICAvLyBOb3RlIGFsc28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20g
Z2V0dGVyL3NldHRlci4gQ3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2
ICs4MDgsMTUgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nKCk7CiAgICAgfQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgewor
ICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBu
b3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNh
biBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNh
bGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxs
IHRvIHRoZSB0aHVuayB3aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAg
ICAvLyBBbmQgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBC
YXNlbGluZUpJVC4KKyAgICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRo
U3RhcnRMb2NhdGlvbigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKwogICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRl
cm5hbDo6dmVyYm9zZSkKQEAgLTczOSw5ICs4MjYsMTIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2MKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHN1Y2Nlc3NMYWJl
bCA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKIAotICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5z
dWNjZXNzLCBzdWNjZXNzTGFiZWwpOwotCi0gICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgQVNTRVJUKHN0YXRlLnN1Y2Nlc3MuZW1wdHkoKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBz
dHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1
YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKQEAgLTc0OSwzNSArODM5LDIxIEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBjb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9j
aywgbGlua0J1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICIlcyIsIHRvQ1N0
cmluZygiQWNjZXNzIHN0dWIgZm9yICIsICpjb2RlQmxvY2ssICIgIiwgc3R1YkluZm8uY29kZU9y
aWdpbiwgIiB3aXRoIHJldHVybiBwb2ludCAiLCBzdWNjZXNzTGFiZWwsICI6ICIsIGxpc3REdW1w
KGNhc2VzKSkuZGF0YSgpKTsKLQotICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7Ci0gICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOwotICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykK
LSAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7
Ci0gICAgCi0gICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
LCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxs
TGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShz
dGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5
KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmIChQb2x5bW9y
cGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6
ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKLSAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2Vz
KTsKLSAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7Ci0gICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9u
czo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQotICAg
ICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxD
b2RlOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OkdlbmVyYXRlZE5ld0NvZGU7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQocmVzdWx0S2luZCwgY29kZS5jb2RlKCkpOworICAgIHN0dWIgPSBjcmVhdGVKSVRTdHVi
Um91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNl
bGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRP
d25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7
CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChjYW5C
ZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1fc2hhcmVkSklUU3R1YnMtPmFkZChTaGFyZWRKSVRT
dHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0
dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNl
ZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBmaW5pc2hDb2Rl
R2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKIH0KIAotdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6
YWJvdXRUb0RpZSgpCit2b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKFZNJiB2bSkK
IHsKICAgICBpZiAobV9zdHViUm91dGluZSkKLSAgICAgICAgbV9zdHViUm91dGluZS0+YWJvdXRU
b0RpZSgpOworICAgICAgICBtX3N0dWJSb3V0aW5lLT5hYm91dFRvRGllKHZtKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFi
MzRhZWNiNDEuLmY5ZjhjYmYwZDU1OThlMWYxZWYyMzAxYjQ1OGZiYWRiMDMzNDRkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
V2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xk
IHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMg
bWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2Rl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIFBv
bHltb3JwaGljQWNjZXNzIHsKICAgICAvLyBvcHRpbWl6YXRpb24gdG8gdGhlbiBhdm9pZCBjYWxs
aW5nIHRoaXMgbWV0aG9kIGFnYWluIGR1cmluZyB0aGUgZml4cG9pbnQuCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNpdG9yJikgY29u
c3Q7CiAKLSAgICB2b2lkIGFib3V0VG9EaWUoKTsKKyAgICB2b2lkIGFib3V0VG9EaWUoVk0mKTsK
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zUEModm9pZCogcGMpIGNvbnN0CkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBo
aWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOwogICAgIAogICAgIHZvaWQgY29tbWl0KAog
ICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVl
X3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLApAQCAtMTk2LDYgKzE5Niw4IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUgewogICAgICAgICA6IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1f
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMoZmFsc2UpCisgICAgICAgICwgbV9kb2VzQ2FsbHMoZmFs
c2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhh
bmRsaW5nKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2Vw
dGlvbihmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KGZhbHNlKQpA
QCAtMjI1LDggKzIyNywxMCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50
czsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOwogICAg
IEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1fZG9lc0pTR2V0
dGVyU2V0dGVyQ2FsbHMgOiAxOworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwogCi0gICAgdm9p
ZCBpbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOworICAg
IHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKIAogICAgIHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2b2lkIHN1Y2Nl
ZWQoKTsKQEAgLTI0OCw3ICsyNTIsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRF
eGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwotICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0
aW9ucygpOworICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwogCiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhj
ZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRv
bnRSZXN0b3JlID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2MmEzODllMmVm
NTBlZWE2YTNiMzRlNzVmYTlkLi40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1MDc5YWNiY2Mx
MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
YWNjZXMKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9
PSBSZXBsYWNlKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJveHlh
YmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+UHJveHlhYmxl
QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm94eWFibGVB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApp
bmRleCBkYzM5ZTI2Y2EyZjRiMmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5lODQzODVjYTc1
YzlmNzUyZThlOGUxNmNkZGUwYWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3LDExICszNywx
MSBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogCiAg
ICAgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWRkaXRpb25hbFNldC5nZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAgICBzdGF0aWMg
UmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAogICAgICAg
ICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBu
dWxscHRyLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAogICAg
IHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIH5Q
cm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2
YTM5Yjg0NThiOTAwY2IyYTUyZWY0ZjE1MTEyMGYuLmRlMDI1ZTc0ZWRkODJmZmU4NjFiNzM3NzMx
ZDUwYTI0NmM0OTljNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaQogICAgICwgcHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwgcHJvcGVydHlJ
c1N5bWJvbChmYWxzZSkKIHsKKyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogfQog
CiBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEyMCwxMSArMTIx
LDExIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGll
KCkKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoVk0mIHZtKQogewogICAgIHN3
aXRjaCAobV9jYWNoZVR5cGUpIHsKICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKLSAgICAgICAg
dS5zdHViLT5hYm91dFRvRGllKCk7CisgICAgICAgIHUuc3R1Yi0+YWJvdXRUb0RpZSh2bSk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OkdldEJ5SWRTZWxmOgpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjJmNmNiYTMx
YmZmYmFjNGMxYzBhMmY5NTE4MzI2ZjJjMzMwNzc3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04NywxMiArODcsMTIg
QEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNl
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRk
QWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNz
Q2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2Fz
ZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKik7CiAKICAgICB2b2lkIGRlcmVmKCk7Ci0gICAgdm9pZCBhYm91dFRvRGllKCk7Cisg
ICAgdm9pZCBhYm91dFRvRGllKFZNJik7CiAKICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsK
IApAQCAtMzQ3LDE2ICszNDcsMjQgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRM
b2NhdGlvbjsKIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRh
Zz4gbV9jb2RlUHRyOworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3Bl
cmF0aW9uOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24p
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0K
KwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUjsK
LSAgICBHUFJSZWcgdmFsdWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BSUmVn
IH07CisgICAgR1BSUmVnIHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9uIHsK
ICAgICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAg
IH0gcmVnczsKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBGSVhN
RTogWzMyLWJpdHNdIENoZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlzIHVz
ZWQgc29tZXdoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDhhZGVhZDUwZjQ1NTZjZmYyNWU3YzdjOTk3ODMwNGQ0MTc3MDk3NDcuLjQ3NjU0YTc2
ZGI1YTExM2YwZmNiNmJmNjhhM2QyMmFjYmM2YTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xhc3MgSklUQ29t
cGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2Fs
bExpbmtSZWNvcmQoZnVuY3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4gZnVu
Y3Rpb25DYWxsOwogICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggOTgx
ZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAwMWJlODE2MDEyNi4uMzg4NmNiMmJkYmI4M2RjNzdi
NzcyNWVhZjU3NDEyNDU1ZWMxMWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTg4LDYgKzE4OCw4IEBAIGNsYXNzIENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xv
d1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwog
fTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5
cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBA
IC0yNjMsNiArMjY1LDY2IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBz
b3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
K2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVi
bGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAg
ICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNs
b3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJl
cXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20s
IGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1Yklu
Zm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAgICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Mo
c2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24p
CisgICAgICAgICwgbV9hcmd1bWVudHMoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQg
dW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRpdmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5j
ZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAgeworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwor
ICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAg
ICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVz
dWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1ZSkKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJh
dGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBzdGQ6OmdldDxB
cmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFk
ZHJlc3MsIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJ
bmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtlX2luZGV4
X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2YWx1
ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0aW9uVHlw
ZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsK
KyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRU
eXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlwZSByZXN1
bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5mbywgc3R1
YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxsTW9kZSwg
cmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3Vt
ZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHViSW5mbywg
c3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5lZWRUb1Nw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0LCBhcmd1
bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhm
OC4uYzMwNjY2NjUwNmFmNTU4NmM2NDExMWIxOGE2NmI1MjkyNTVmNWMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwMjYsMjQg
KzEwMjYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9k
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAg
YmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklU
Q29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1w
KCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUxLDcgKzEw
NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2Uo
KTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5
cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50
eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKQEAgLTEwOTYsNyArMTEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlw
ZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEx
MSwxNCArMTEzNSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNo
KE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigp
OwpAQCAtMTEyOCwyMCArMTE1NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNl
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTExNzAsMjIgKzEyMTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQy
KCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBu
b2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgIH0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBKU1Zh
bHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBh
eWxvYWRHUFIoKTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwor
CiAgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQog
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVn
cykpOwogCkBAIC0xMTk0LDIwICsxMjQzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwog
CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAot
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9q
aXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEzMDAsMTUg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBP
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwogCkBAIC0xMjQ4LDE0ICsxMzE4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQu
cmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVk
KGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsCi0gICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
KyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0zNTYxLDkgKzM2NDIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlMKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0g
R2V0UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9n
cmFwaC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxh
dGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBPcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
fQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgc3Bl
Y3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworCiAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTM1NzQsMTQg
KzM2NjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlW
YWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBi
YXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3Vs
dFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1dG8gYmFz
ZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkgeworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0
LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAgICAgICBi
YXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAgICAgICAg
cmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAgLTM1ODks
OCArMzY4Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93bkNlbGwK
LSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2Uu
cGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOworICAgICAg
ICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxv
YWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAgICAgbV9q
aXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwyOCArMzY5OSw0MCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CiAg
ICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAgIGNhc2Ug
Q2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwg
MCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJh
c2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
ICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBz
dHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUs
IDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zNzIyLDI5ICszODMxLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisKKyAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERl
ZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSog
bm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJhbmRHUFIg
PSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigp
LCBicmFuZEdQUik7CkBAIC0zNzU4LDE2ICszODc4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFu
ZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRH
UFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJy
YW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKQEAgLTM3NzgsOSArMzkwNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIGJy
YW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzc5MiwxNiArMzkyNiwyNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAKICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAor
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7
CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAg
LTM5MTksMjIgKzQwNjEsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRl
c0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BS
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAg
IAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJz
KCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBl
UmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJl
Z3MsCi0gICAgICAgIHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBw
cm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1Yklu
Zm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQu
YWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTQ1LDYgKzQwOTIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAg
ICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTUyLDEz
ICs0MTAwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAg
ICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcHJv
dG90eXBlR1BSID0gcHJvdG90eXBlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAK
LSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwg
c2NyYXRjaDJHUFIpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAKICAgICAg
ICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzk2OCwxMiArNDEyMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZihOb2RlKiBub2RlKQogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgIAorICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEpT
VmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKICAgICAK
QEAgLTM5ODksNyArNDE0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQ
Uiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNvbXBpbGVJbnN0
YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIs
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CiAgICAg
CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKQEAgLTEzMDE5LDQ2ICsxMzE3OCw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNW
YWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNt
YU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2Rl
KiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwor
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9k
ZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQ
dXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CkBAIC0xNDY5MCwxOCArMTQ4NjcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVj
bWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQog
ewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7
CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3Bp
bGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAg
ICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChz
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5z
ZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
dmFsdWVSZWdzLCBzdHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ3MTEsOSAr
MTQ4OTAsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jl
c3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MmUxZThjZDUy
YTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYzLi44YzMyOTM2MDgwMWMzOWVhNzViZGQ0Zjgz
ZTYyNDVlOTEyMjI1ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC03MTksMTYgKzcxOSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja0RldGFjaGVkKE5vZGUqKTsKIAotICAgIHZvaWQgY2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3Bp
bGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxs
KTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyBy
ZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlz
dCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAg
IHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFy
Z2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQg
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25l
LCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcg
dGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2
b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BS
UmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBK
SVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBM
aXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUqKTsKQEAg
LTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBnZW5lcmlj
SlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwog
ICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1Zh
bHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0
R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdz
IHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKQEAgLTk0OSw2ICs5NDksMjYg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVf
aWZfdDwKKyAgICAgICAgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwK
KyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNz
LCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24o
Vl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7
CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVy
LgpAQCAtOTg4LDYgKzEwMDgsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBy
ZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogCisgICAgdm9pZCBhcHBl
bmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHJl
cGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2lu
KG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIG1faml0LmFwcGVuZENh
bGwoYWRkcmVzcyk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kT3BlcmF0
aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAg
IHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTAxMCw2ICsxMDM3LDI4
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQog
CisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRy
ZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQu
bW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEdQUlJl
ZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKKyAgICB7CisgICAgICAgIGFwcGVuZENhbGwoYWRk
cmVzcyk7CisgICAgICAgIG1faml0LnNldHVwUmVzdWx0cyhyZXN1bHQxLCByZXN1bHQyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoYWRkcmVzcywgcmVzdWx0UmVncy5ncHIo
KSk7CisjZWxzZQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJlc3VsdFJl
Z3MucGF5bG9hZEdQUigpLCByZXN1bHRSZWdzLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0KKwog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAg
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CmluZGV4IGI1N2MzN2FhMDVkZDQ5MDkxYzdmYTM2NTBmOGJiZmY3NTIzN2Y2MzkuLmMxYjVkMDYx
YzNjNWE0YTY1MDZjYjdjNjBlZTI5NjdmYzIxNmE2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMTY4LDE1ICsx
NjgsMTYgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJS
ZWcmIHRhZ0dQUiwgR1BSUmVnJiBwYXlsb2FkR1BSLAogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUs
IEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29k
ZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vz
c1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwg
YmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwg
aWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5
SWQob3JpZ2luLCBiYXNlLnRhZ0dQUigpLCBiYXNlLnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQ
UigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBzdHViSW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1Bh
dGhUYXJnZXQsIG1vZGUsIHR5cGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkKAotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRh
Z0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQs
IFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKKyAgICBV
TlVTRURfUEFSQU0oc3R1YkluZm9HUFIpOwogICAgIC8vIFRoaXMgaXMgYSBoYWNreSBmaXggZm9y
IHdoZW4gdGhlIHJlZ2lzdGVyIGFsbG9jYXRvciBkZWNpZGVzIHRvIGFsaWFzIHRoZSBiYXNlIHBh
eWxvYWQgd2l0aCB0aGUgcmVzdWx0IHRhZy4gVGhpcyBvbmx5IGhhcHBlbnMKICAgICAvLyBpbiB0
aGUgY2FzZSBvZiBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3aGljaCBoYXMgYSBy
ZWxhdGl2ZWx5IGV4cGVuc2l2ZSByZWdpc3RlciBhbGxvY2F0aW9uIHN0b3J5IGFscmVhZHkgc28g
d2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0bwogICAgIC8vIHRyaXAgb3ZlciBvbmUgbW92ZSBpbnN0
cnVjdGlvbi4KQEAgLTIwMCw4ICsyMDEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkKAogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwg
YmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIpLCB0eXBlKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAg
IEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZywgdHlwZSk7
CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjI4LDE1
ICsyMjksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKAotICAgIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQ
UiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3Vs
dFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsCisgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJS
ZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BS
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBz
bG93UGF0aFRhcmdldCkKIHsKKyAgICBVTlVTRURfUEFSQU0oc3R1YkluZm9HUFIpOwogICAgIFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgCiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlk
ZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNW
YWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2Fk
R1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpLCBJbnZhbGlkR1BS
UmVnKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCkBAIC0y
MzQxLDggKzIzNDMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
YmFzZVJlZ3MudGFnR1BSKCkpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAg
ICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncyk7CisgICAgICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIGJh
c2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogCiAgICAg
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkp
LmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJv
cGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0zNDA1LDcgKzM0MDcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0VGFn
R1BSID0gcmVzdWx0VGFnLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNo
ZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBi
YXNlR1BSLCBJbnZhbGlkR1BSUmVnLCB0aGlzR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNl
R1BSLCBJbnZhbGlkR1BSUmVnLCB0aGlzR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIsIEludmFsaWRHUFJSZWcsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBub2RlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM0MjUsNyArMzQyNyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vdENl
bGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZS5qc1ZhbHVlUmVncygpKSk7
CiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHRo
aXNWYWx1ZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQ
YXlsb2FkR1BSLCB0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsK
KyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCB0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiwg
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBiOTExOGI2MmU4N2Q5NzBhYzU0NjFmNjNiZDNjMzgwZmI4YjAxMjYw
Li4zMzZiMWE5NWQyNDZlNzE5NGE3NzQxMDI2NTNjMzI5ZDM0MzRmNWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE0Nywx
MiArMTQ3LDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdl
KQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3Jp
Z2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3Bp
bGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRC
eUlkKG9yaWdpbiwgYmFzZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBpZGVudGlmaWVyLCBzbG93UGF0
aFRhcmdldCwgbW9kZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3By
KCksIHJlc3VsdC5ncHIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0
LCBtb2RlLCB0eXBlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewog
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVy
YXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0t
PnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdp
c3RlcnMoKTsKQEAgLTE2MCwyNiArMTYwLDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAg
ICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3
ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChi
YXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFs
c2UpOworICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
ICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCB0eXBlKTsKKyAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSks
Ci0gICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
YmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlv
bih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAg
ICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KICAgICAKICAgICBtX2pp
dC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBK
SVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQogewogICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFu
ZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE4
NywyMCArMTk3LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhp
cyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSCiAgICAgdXNlZFJlZ2lzdGVy
cy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIsIGZh
bHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICBpZiAo
c3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
c3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQ
UiksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlzR1BSKSk7CisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRH
UFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUiksIHN0dWJJbmZv
R1BSKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29t
cGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRo
VGFyZ2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXNPcHRpbWl6ZSwKLSAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1Yklu
Zm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJ
ZFdpdGhUaGlzT3B0aW1pemUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpD
aGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAg
IH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMjY4
MSwxNiArMjcwMSwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNw
ZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKLQorICAgICAg
ICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5
KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBwcm9w
ZXJ0eSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkg
eworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAg
ICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcHJv
cGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKwogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGlu
Z09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBA
IC0yNzAwLDggKzI3MjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENl
bGwoYmFzZUdQUikpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBB
Y2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhy
ZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwog
CiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8o
KS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDExICsyNzM5LDE5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAotICAg
ICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
bnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
Uik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRC
eVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5ODQsOSArNDAxOSwxNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhp
czogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UgJiYg
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgICAgIE9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRoaXNW
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBA
IC0zOTk0LDE0ICs0MDM2LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgICAgICAgICAgY2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1Zh
bHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHVi
SW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1Yklu
Zm8tPmdwcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5n
cHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwpAQCAtNDAxMyw3ICs0MDYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhiYXNlR1BSKSkpOwogICAgICAgICAgICAgbm90Q2Vs
bExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh0aGlzVmFsdWVH
UFIpKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNh
Y2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNW
YWx1ZUdQUiwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDgxNjdmYTNkMDUyYzEwYmRmMWI2ZjY0OTBj
ZTM1OTA3ZGFkOGJmMzUuLjNhNjIwZjQ3MjRmZDJjYWIyOThkZDUzMDgxOWZmMjRhODNhYjhjMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTM5NzgsNiArMzk3OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRh
ZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRy
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRj
aHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtMzk5OSwxMCArNDAwMCwxMSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJh
bXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1z
WzJdLmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52
YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdl
dEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6
R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIp
LCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1
ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7
CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAg
ICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCkBAIC00MDE2LDEzICs0MDE4LDI1IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdp
biA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAg
ICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwg
cmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAK
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1Bh
dGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQxMTAsNiArNDEyNCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1
ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKIApAQCAtNDEzMCwxMCArNDE0NSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgIEdQ
UlJlZyBicmFuZEdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMu
Z3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LCBhY2Nlc3NUeXBlLAotICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsK
KyAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAorICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
SlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAt
NDE1OSwxMyArNDE3NSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAg
ICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5r
KCZqaXQpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygm
aml0KTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCku
bGluaygmaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRo
QmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJp
dmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gYXBwcm9wcmlhdGVQcml2YXRl
QWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZh
dGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRo
Q2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDUxNiw2ICs0NTQ0LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBQdXRCeUlkRmx1
c2gsIHdlIG1pZ2h0IHdhbnQgdG8gbGF0ZS1jbG9iYmVyIHZvbGF0aWxlIHJlZ2lzdGVycy4KICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjg0OApA
QCAtNDUzOCwxMCArNDU2NywxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAg
ICAgIC8vIEpTIHNldHRlciBjYWxsIElDcyBnZW5lcmF0ZWQgYnkgdGhlIFB1dEJ5SWQgSUMgd2ls
bCBuZWVkIHRoaXMuCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAg
ICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAg
ICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0QnlJZEdlbmVyYXRvcj46OmNyZWF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVu
dGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRj
aFJlZ2lzdGVyLCBlY21hTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzFdLmdwcigpKSwgc3R1YkluZm9HUFIsIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVn
aXN0ZXIsIGVjbWFNb2RlLAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAtNDU1MywxMiAr
NDU4NCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+
c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygp
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
c3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93
UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5y
YXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2lu
LCBzbG93UGF0aENhbGwpOwpAQCAtNTIzOSw2ICs1MjgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJl
Z2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CiAKQEAgLTUyNTksMTAgKzUzMDMsMTEgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigp
OwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAg
ICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAg
ICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46
OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAotICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklU
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5
VmFsLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJvcGVydHlJc1N0cmluZzsKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHByb3Bl
cnR5SXNJbnQzMjsKQEAgLTUyODAsMTMgKzUzMjUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
IAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHVi
SW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNTgz
Niw3ICs1ODkzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxN
YXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBW
YWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyAyIDogMTsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRj
aHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTU4NTYsOSArNTkxMywxMSBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1
ZVJlZ3MocGFyYW1zWzFdLmdwcigpKTsKICAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9
IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNjcmF0Y2hHUFIgPSBwYXJh
bXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAgICAgIGF1dG8gc3R1YkluZm9HUFIgPSBKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgxKSA6
IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0
dXJuR1BSKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5n
cFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gc2NyYXRjaEdQUik7
CiAKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlKSk7CkBAIC01ODc0LDcgKzU5MzMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpO
b3JtYWwpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2go
MCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChz
Y3JhdGNoR1BSICE9IHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFs
dWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOwpAQCAtNTg4NCwxOSArNTk0MywyMCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9y
ID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERl
bEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUs
IGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BS
KSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxK
SVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZU
TEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BS
KSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
c2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKLSAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAg
ICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwo
KTsKIAogICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKQEAgLTU5MDUsMTIgKzU5
NjUsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5H
UFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
YmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJz
Y3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5H
UFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENh
bGwpOwpAQCAtMTIyNDIsOCArMTIzMTQsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRh
ZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQ
dHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAg
ICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTEyMjYw
LDEwICsxMjMzMiwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEJv
eDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhq
aXQpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlk
R1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5CeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0g
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUik7
CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAg
LTEyMjc0LDEyICsxMjM0OCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9H
UFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBd
LmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRp
Zmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0
aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTI0ODYsNyArMTI1NzIsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocHJvdG90
eXBlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnMgPSAyOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMyA6IDI7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIg
fTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOwogICAgICAgICAKQEAgLTEyNTAyLDYgKzEyNTg4LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcGFyYW1z
WzJdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMu
Z3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDog
SW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZG9uZUp1bXA7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkg
ewpAQCAtMTI1MjMsOCArMTI2MTAsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcykt
Pmp1bXBzKGppdCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5l
cmF0b3IgPSBCb3g8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRl
SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIs
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLAogICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQ
UiwgcHJvdG90eXBlSXNPYmplY3QpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJh
dGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9u
ZSA9IGppdC5sYWJlbCgpOwpAQCAtMTI1MzcsMTIgKzEyNjI0LDI0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0
R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHZhbHVlR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJ
bmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQ
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm9HUFIsIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXph
dGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAm
aml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxs
KTsKQEAgLTEzOTg2LDYgKzE0MDg1LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBp
cyBhIEdldEJ5SWRGbHVzaC9HZXRCeUlkRGlyZWN0Rmx1c2gsIHdlIG1pZ2h0IGdldCBzb21lIHBl
cmZvcm1hbmNlIGJvb3N0IGlmIHdlIGNsYWltIHRoYXQgaXQKICAgICAgICAgLy8gY2xvYmJlcnMg
dm9sYXRpbGUgcmVnaXN0ZXJzIGxhdGUuIEl0J3Mgbm90IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5l
c3MsIHRob3VnaCwgc2luY2UgdGhlCkBAIC0xNDAxNCwxMCArMTQxMTQsMTIgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2lu
ZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5n
cFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5l
cmF0b3IgPSBCb3g8SklUR2V0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklU
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJh
bXNbMF0uZ3ByKCkpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDAzMCwxMiArMTQxMzIsMjQgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwg
cGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBd
LmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRp
Zmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmll
ci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhC
ZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTE0MDYwLDggKzE0MTc0LDggQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1
ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6
bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAx
IDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0
aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhw
YXRjaHBvaW50KTsKQEAgLTE0MDgzLDEwICsxNDE5NywxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAgICAg
ICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywg
Y2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgw
KSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJv
eDxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSk7CisgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1sy
XS5ncHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2Vu
ZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
ZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwOTksMTIgKzE0MjE1LDI0IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhK
dW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5n
cHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJd
LmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkp
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
c3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFy
YW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2Fs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKaW5k
ZXggMmFkZDQ5NGM1MzJhYWVhOGVlM2QxMWNlMTIyNzgxMTg5MzU2YWQ0Zi4uYjRlNDc1OGU1OGZi
MWU3OTI2YzZhMDcxODM3MzE1ODk4N2M3NmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCB3b3JkU2l6ZSA9IDg7
CiAKIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQoCi0gICAgUmVnaXN0
ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3Ms
IEdQUlJlZyByZXR1cm5SZWdpc3RlcikKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBD
Q2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVy
LCBHUFJSZWcgaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpCiAgICAgOiBtX2ppdChqaXQpCiAg
ICAgLCBtX251bUFyZ3MobnVtQXJncykKICAgICAsIG1fcmV0dXJuUmVnaXN0ZXIocmV0dXJuUmVn
aXN0ZXIpCkBAIC02Myw2ICs2Myw4IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2Fs
bENvbnRleHQoCiAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5tZXJnZShtX2FyZ3Vt
ZW50UmVnaXN0ZXJzKTsKICAgICBpZiAocmV0dXJuUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykK
ICAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgIGlmIChpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlciAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChpbmRpcmVj
dENhbGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5m
aWx0ZXIodXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIAogICAgIHVuc2lnbmVkIG51bWJlck9mQ2Fs
bGluZ0NvbnZlbnRpb25SZWdpc3RlcnMgPQpAQCAtMTE0LDcgKzExNiwxMiBAQCBTbG93UGF0aENh
bGxDb250ZXh0Ojp+U2xvd1BhdGhDYWxsQ29udGV4dCgpCiAKIFNsb3dQYXRoQ2FsbEtleSBTbG93
UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gY2FsbFRhcmdldCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1
bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCk7Cisg
ICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgY2FsbFRhcmdldCwgbV9h
cmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIDApOworfQorCitTbG93UGF0aENhbGxLZXkgU2xv
d1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRk
cmVzcykgY29uc3QKK3sKKyAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0
LCBudWxscHRyLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCwgYWRkcmVzcy5vZmZzZXQp
OwogfQogCiBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZt
LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCkBAIC0xMzMsNiArMTQw
LDIyIEBAIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0s
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitT
bG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MgY2FsbFRhcmdldCkKK3sKKyAgICBTbG93UGF0aENhbGxLZXkga2V5ID0g
a2V5V2l0aFRhcmdldChjYWxsVGFyZ2V0KTsKKyAgICBTbG93UGF0aENhbGwgcmVzdWx0ID0gU2xv
d1BhdGhDYWxsKG1faml0LmNhbGwoSklUVGh1bmtQdHJUYWcpLCBrZXkpOworCisgICAgbV9qaXQu
YWRkTGlua1Rhc2soCisgICAgICAgIFtyZXN1bHQsICZ2bV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
dGh1bmsgPQorICAgICAgICAgICAgICAgIHZtLmZ0bFRodW5rcy0+Z2V0U2xvd1BhdGhDYWxsVGh1
bmsodm0sIHJlc3VsdC5rZXkoKSk7CisKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhyZXN1
bHQuY2FsbCgpLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odGh1bmsuY29kZSgp
KSk7CisgICAgICAgIH0pOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihTdGF0ZSYgc3RhdGUsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbikKIHsKICAgICBpZiAoY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCmluZGV4IDcwZDI4OGUwM2YxZDhkODFmMjc3ZjZiODIxN2Fj
OWYzZmE4MGMxMmEuLmQ2ZjI4NTQ5YTMxYjMzNWRkNWI1NzU5YWNlMjEwZjQ4MmE4MzFkNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaApAQCAtNTQsMTUg
KzU0LDE3IEBAIGNsYXNzIFNsb3dQYXRoQ2FsbCB7CiAvLyBUaGlzIHdpbGwgYmUgYW4gUkFJSSB0
aGluZ3kgdGhhdCB3aWxsIHNldCB1cCB0aGUgbmVjZXNzYXJ5IHN0YWNrIHNpemVzIGFuZCBvZmZz
ZXRzIGFuZCBzdWNoLgogY2xhc3MgU2xvd1BhdGhDYWxsQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAg
U2xvd1BhdGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBl
cnMmLCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIpOworICAgIFNsb3dQ
YXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwg
dW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyLCBHUFJSZWcgaW5kaXJlY3RD
YWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIH5TbG93UGF0aENhbGxDb250ZXh0KCk7CiAKICAgICAv
LyBOT1RFOiBUaGUgY2FsbCB0aGF0IHRoaXMgcmV0dXJucyBpcyBhbHJlYWR5IGdvaW5nIHRvIGJl
IGxpbmtlZCBieSB0aGUgSklUIHVzaW5nIGFkZExpbmtUYXNrKCksCiAgICAgLy8gc28gdGhlcmUg
aXMgbm8gbmVlZCBmb3IgeW91IHRvIGxpbmsgaXQgeW91cnNlbGYuCiAgICAgU2xvd1BhdGhDYWxs
IG1ha2VDYWxsKFZNJiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KTsK
KyAgICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpOwog
CiBwcml2YXRlOgogICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkgY29uc3Q7CisgICAgU2xvd1BhdGhDYWxsS2V5
IGtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKSBjb25zdDsKICAgICAKICAgICBS
ZWdpc3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwogICAgIFJlZ2lzdGVyU2V0IG1fY2FsbGlu
Z0NvbnZlbnRpb25SZWdpc3RlcnM7CkBAIC04Miw3ICs4NCw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxs
T3BlcmF0aW9uKAogewogICAgIFNsb3dQYXRoQ2FsbCBjYWxsOwogICAgIHsKLSAgICAgICAgU2xv
d1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFy
Z3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSKTsKKyAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4
dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsg
MSwgcmVzdWx0R1BSLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgaml0LnNldHVwQXJndW1lbnRz
PHZvaWQoQXJndW1lbnRUeXBlcy4uLik+KGFyZ3VtZW50cy4uLik7CiAgICAgICAgIGNhbGwgPSBj
b250ZXh0Lm1ha2VDYWxsKHZtLCBmdW5jdGlvbik7CiAgICAgfQpAQCAtMTE3LDYgKzExOSw0OCBA
QCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKICAgICAgICAgcmVzdWx0LCBhcmd1bWVudHMu
Li4pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhD
YWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2Vw
dGlvblRhcmdldCwKKyAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyBy
ZXN1bHRHUFIsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIFNsb3dQYXRoQ2Fs
bCBjYWxsOworICAgIHsKKyAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRS
ZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJl
Y3RDYWxsPHZvaWQoQXJndW1lbnRUeXBlcy4uLik+KGZ1bmN0aW9uLCBhcmd1bWVudHMuLi4pOwor
ICAgICAgICBjYWxsID0gY29udGV4dC5tYWtlQ2FsbCh2bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIGZ1bmN0aW9uLm9mZnNldCkpOworICAgIH0KKyAgICBpZiAo
ZXhjZXB0aW9uVGFyZ2V0KQorICAgICAgICBleGNlcHRpb25UYXJnZXQtPmFwcGVuZChqaXQuZW1p
dEV4Y2VwdGlvbkNoZWNrKHZtKSk7CisgICAgcmV0dXJuIGNhbGw7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAg
ICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMm
IGppdCwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAorICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3QqIGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBH
UFJSZWcgcmVzdWx0R1BSLAorICAgIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAg
IGlmIChjYWxsU2l0ZUluZGV4KSB7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOworICAgIH0KKyAgICByZXR1cm4gY2FsbE9w
ZXJhdGlvbih2bSwgdXNlZFJlZ2lzdGVycywgaml0LCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9u
LCByZXN1bHRHUFIsIGFyZ3VtZW50cy4uLik7Cit9CisKK0NhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleEZvckNvZGVPcmlnaW4oU3RhdGUmLCBDb2RlT3JpZ2luKTsKKwordGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFN0
YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVy
cyYgaml0LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCogZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJl
ZyByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBjYWxs
T3BlcmF0aW9uKAorICAgICAgICBzdGF0ZS52bSgpLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGNhbGxT
aXRlSW5kZXhGb3JDb2RlT3JpZ2luKHN0YXRlLCBjb2RlT3JpZ2luKSwgZXhjZXB0aW9uVGFyZ2V0
LCBmdW5jdGlvbiwKKyAgICAgICAgcmVzdWx0LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcAppbmRleCAyZDMw
NmM2MjAzM2E4MzkwOGU2ZmNjNmFiOWU2ZTg0Y2ZlODFlY2FhLi5jNGU3ZTgyNjFmZDQ3MzZiMWQz
MzcyYmVmNTUxM2VmZTVhYTM5YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKIAogdm9pZCBTbG93UGF0aENhbGxLZXk6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJzID0gIiwgbV91
c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgY2FsbFRhcmdldCA9ICIs
IFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAiLCBhcmd1bWVu
dFJlZ2lzdGVycyA9ICIsIG1fYXJndW1lbnRSZWdpc3RlcnMsICI+Iik7CisgICAgb3V0LnByaW50
KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9v
ZmZzZXQsICIsIGluZGlyZWN0T2Zmc2V0ID0gIiwgbV9pbmRpcmVjdE9mZnNldCwgIiwgY2FsbFRh
cmdldCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAi
LCBhcmd1bWVudFJlZ2lzdGVycyA9ICIsIG1fYXJndW1lbnRSZWdpc3RlcnMsICI+Iik7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5oCmluZGV4IDA4NmFlMDBlZTU4NTUyYzdjZTgzZDcwNTIwZTc2
MTM4NDJiZGQzM2QuLjBjZTYxZjI2YmE5NTBiOTNmYzNhOGVjMTliNTY3NDFhZTEwMDBkMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaApAQCAt
NTEsMTEgKzUxLDEyIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgCiAgICAgU2xvd1Bh
dGhDYWxsS2V5KAogICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgc2V0LCBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJl
Z2lzdGVycywKLSAgICAgICAgcHRyZGlmZl90IG9mZnNldCkKKyAgICAgICAgcHRyZGlmZl90IG9m
ZnNldCwgaW50MzJfdCBpbmRpcmVjdE9mZnNldCkKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMo
c2V0KQogICAgICAgICAsIG1fY2FsbFRhcmdldChjYWxsVGFyZ2V0LnJldGFnZ2VkPE9wZXJhdGlv
blB0clRhZz4oKSkKICAgICAgICAgLCBtX2FyZ3VtZW50UmVnaXN0ZXJzKGFyZ3VtZW50UmVnaXN0
ZXJzKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX2luZGlyZWN0T2Zm
c2V0KGluZGlyZWN0T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MywxMCArNjQsMTEg
QEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+IGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICBjb25z
dCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3Vt
ZW50UmVnaXN0ZXJzOyB9CiAgICAgcHRyZGlmZl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
b2Zmc2V0OyB9CisgICAgaW50MzJfdCBpbmRpcmVjdE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kaXJlY3RPZmZzZXQ7IH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkgd2l0aENhbGxUYXJn
ZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFy
Z3VtZW50UmVnaXN0ZXJzKCksIG9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2Fs
bEtleSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9m
ZnNldCgpLCBpbmRpcmVjdE9mZnNldCgpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CkBAIC03NiwxMyArNzgsMTEgQEAgY2xhc3MgU2xvd1BhdGhDYWxs
S2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRW1wdHlWYWx1ZVRhZykKICAgICAgICAg
OiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkVtcHR5VmFsdWUpCi0gICAgICAgICwgbV9v
ZmZzZXQoMCkKICAgICB7CiAgICAgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShEZWxldGVk
VmFsdWVUYWcpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpEZWxldGVk
VmFsdWUpCi0gICAgICAgICwgbV9vZmZzZXQoMCkKICAgICB7CiAgICAgfQogICAgIApAQCAtOTMs
MTggKzkzLDIwIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgewogICAgICAgICByZXR1
cm4gbV91c2VkUmVnaXN0ZXJzID09IG90aGVyLm1fdXNlZFJlZ2lzdGVycwogICAgICAgICAgICAg
JiYgbV9jYWxsVGFyZ2V0ID09IG90aGVyLm1fY2FsbFRhcmdldAotICAgICAgICAgICAgJiYgbV9v
ZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQ7CisgICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhl
ci5tX29mZnNldAorICAgICAgICAgICAgJiYgbV9pbmRpcmVjdE9mZnNldCA9PSBvdGhlci5tX2lu
ZGlyZWN0T2Zmc2V0OwogICAgIH0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMuaGFzaCgpICsgUHRySGFzaDx2b2lkKj46Omhh
c2gobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgbV9vZmZzZXQ7CisgICAgICAg
IHJldHVybiBtX3VzZWRSZWdpc3RlcnMuaGFzaCgpICsgUHRySGFzaDx2b2lkKj46Omhhc2gobV9j
YWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgbV9vZmZzZXQgKyBtX2luZGlyZWN0T2Zm
c2V0OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7
CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX2NhbGxUYXJnZXQ7CiAgICAgUmVn
aXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKLSAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7Cisg
ICAgcHRyZGlmZl90IG1fb2Zmc2V0IHsgMCB9OworICAgIGludDMyX3QgbV9pbmRpcmVjdE9mZnNl
dCB7IDAgfTsKIH07CiAKIHN0cnVjdCBTbG93UGF0aENhbGxLZXlIYXNoIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAppbmRleCBkYmZlZDQ0ZDVhMTJhYWRkZDI3NmE5MzMx
MzNjMGIzNmM4NjYxM2FkLi5kOTIwMmEzZDQxOWU1Y2IyYTU5ZTMxZmJlODVhNGFkNTNiZTQ5NDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCkBAIC03OCw4ICs3OCw4
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNH
ZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoCiAgICAgc2F2ZUFsbFJlZ2lzdGVycyhqaXQsIGJ1ZmZl
cik7CiAgICAgCiAgICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3Jh
dGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3Ro
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdH
UFIxKTsKIAogICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKApAQCAtMjAwLDEzICsyMDAsMjAgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dl
bmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXplb2Yo
ZG91YmxlKTsKICAgICB9CiAgICAgCi0gICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CisgICAgaml0LnByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BS
SW5mbzo6bm9uQXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKICAgICAKLSAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIGtl
eS5hcmd1bWVudFJlZ2lzdGVycygpKTsKKyAgICBSZWdpc3RlclNldCBkb250Q2xvYmJlciA9IGtl
eS5hcmd1bWVudFJlZ2lzdGVycygpOworICAgIGlmICgha2V5LmNhbGxUYXJnZXQoKSkKKyAgICAg
ICAgZG9udENsb2JiZXIuc2V0KEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIHJlZ2lzdGVyQ2xv
YmJlckNoZWNrKGppdCwgV1RGTW92ZShkb250Q2xvYmJlcikpOwogCi0gICAgQXNzZW1ibHlIZWxw
ZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIEFzc2VtYmx5
SGVscGVyczo6Q2FsbCBjYWxsOworICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBj
YWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5j
YWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBrZXkuaW5kaXJl
Y3RPZmZzZXQoKSksIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBqaXQubG9hZFB0cihBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBr
ZXkub2Zmc2V0KCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGpp
dC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWRO
b25SZXR1cm5HUFIpOwpAQCAtMjMyLDcgKzIzOSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBT
CiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMVGh1bmspOwotICAgIHBhdGNoQnVm
ZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0
KCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRM
IHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRvQ1N0cmluZyhrZXkpLmRhdGEoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRl
eCAzNTRmOTU0N2I0YWJmMzI4OTZkMWNlYjRlYTIwMGZiYjRhNGRlY2NkLi5iZjhhMDgwNDBjZWM4
N2I2NGY3N2MzNmFlYWRiZmVkOWRlNDAyNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
SklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCkBAIC02NTIsNyArNjUzLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRW
aXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAg
ICAgICAgYXV0byBjYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxK
SVRDb21waWxhdGlvblB0clRhZz4oY2FsbCk7CiAgICAgICAgIGxpbmtCdWZmZXIuYWRkTWFpblRo
cmVhZEZpbmFsaXphdGlvblRhc2soWz0sICZ2bV0gKCkgewogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFs
VGh1bmtGb3Iodm0sICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdh
cmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICAgICAgICAg
IGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxU
aHVuaywgdm0sIHsgfSkpOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFy
Q2FsbChjYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
Pih2aXJ0dWFsVGh1bmsuY29kZSgpKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjhiMTIxM2Y2ZDI0YzcwYWZiNTAz
MzIwZWFhNzJkODllN2Q4NmJlOS4uZTkwOTZiNTc3M2YzMjE3MzE2OWU3M2ZhZTM0MTExODg2OTg5
N2VhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC0yMDcs
NyArMjA3LDcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7
CiAKICAgICAvLyBleHRyYUdQUkFyZ3MgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQg
dHlwZXMgcGFzc2VkIGluIHJlZ2lzdGVyIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgogICAgIC8v
IGV4dHJhUG9rZSBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQg
b24gdGhlIHN0YWNrLgotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBleHRyYVBva2U+CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KICAgICBzdHJ1Y3QgQXJnQ29s
bGVjdGlvbiB7CiAgICAgICAgIEFyZ0NvbGxlY3Rpb24oKQogICAgICAgICB7CkBAIC0yMTksOCAr
MjE5LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucy5maWxsKEludmFsaWRHUFJSZWcpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQg
YywgdW5zaWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZz4KLSAgICAg
ICAgQXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGc+JiBvdGhl
cikKKyAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQgYywg
dW5zaWduZWQgZCwgdW5zaWduZWQgZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZywgdW5zaWduZWQg
aD4KKyAgICAgICAgQXJnQ29sbGVjdGlvbihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYs
IGcsIGg+JiBvdGhlcikKICAgICAgICAgewogICAgICAgICAgICAgZ3ByU291cmNlcyA9IG90aGVy
LmdwclNvdXJjZXM7CiAgICAgICAgICAgICBncHJEZXN0aW5hdGlvbnMgPSBvdGhlci5ncHJEZXN0
aW5hdGlvbnM7CkBAIC0yMzAsNjUgKzIzMCw3NCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zID0gb3Ro
ZXIuY3Jvc3NEZXN0aW5hdGlvbnM7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0Fy
ZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3Vy
Y2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVz
dGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFy
Z3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNo
UmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMg
KyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZnByU291cmNlc1tudW1GUFJT
b3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmZwckRlc3RpbmF0aW9uc1tu
dW1GUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BS
UmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMg
KyAxLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJS
ZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0
aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmNyb3NzU291cmNlc1tudW1Dcm9zc1NvdXJjZXNd
ID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NEZXN0aW5hdGlvbnNbbnVtQ3Jv
c3NTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBH
UFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdB
cmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwg
ZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJl
c3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJj
ZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQ
UlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHB1
c2hOb25BcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4g
cmVzdWx0KCp0aGlzKTsKKworICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291
cmNlc10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVt
R1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIH0KKworICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9r
ZT4gYWRkR1BSRXh0cmFBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRHUFJFeHRyYUFyZygp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1
cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmco
R1BSUmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQor
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRo
aXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDE+
IGFkZFBva2UoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOworICAgICAg
ICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKICAgICAgICAgfQogCiAjaWYgT1MoV0lO
RE9XUykgJiYgQ1BVKFg4Nl82NCkKQEAgLTMzMSwxMiArMzQwLDE0IEBAIGNsYXNzIENDYWxsSGVs
cGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1
bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZz
ZXQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1l
bnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewogICAgICAgICAvLyBD
bGFuZyBjbGFpbXMgdGhhdCBpdCBjYW5ub3QgZmluZCB0aGUgc3ltYm9sIGZvciBGUFJSZWcvR1BS
UmVnOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHdoZW4gdGhleSBhcmUgcGFzc2VkIGRpcmVj
dGx5IHRvIHN0ZDo6bWF4Li4uIHNlZW1zIGxpa2UgYSBidWcKICAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lz
dGVyczsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzID0gR1BS
SW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKIAorICAgICAgICBVTlVTRURfUEFSQU0o
bm9uQXJnR1BScyk7CisKICAgICAgICAgY3VycmVudEdQUkFyZ3VtZW50ICs9IGV4dHJhR1BSQXJn
czsKICAgICAgICAgY3VycmVudEZQUkFyZ3VtZW50IC09IG51bUNyb3NzU291cmNlczsKICAgICAg
ICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCkBAIC0zNTAsMTUgKzM2MSwx
NSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmdUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVu
dCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRH
UFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNh
bGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNp
Z25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQs
IGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRH
UFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQUkFyZ3Vt
ZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRl
UG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2lnbmVkIHBv
a2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVu
dEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlKTsKICAgICAgICAgcmV0dXJuICEocG9rZU9mZnNldCAmIDEpOwogICAgIH0KIApA
QCAtMzc2LDggKzM4Nyw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9wdGltaXph
dGlvbiB0aW1lIGV4cGxvc2lvbiBhc3NvY2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBpbiByZWN1
cnNpdmUgdGVtcGxhdGVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lk
IG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQ
VF9NU1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgUmVnVHlwZSBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVzaW5nIEluZm9U
eXBlID0gSW5mb1R5cGVGb3JSZWc8UmVnVHlwZT47CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1Jl
Z2lzdGVycyA9IEluZm9UeXBlOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwpAQCAtMzkyLDMx
ICs0MDMsMzEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRv
dWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91
YmxlIik7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFs
bEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdz
Li4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBK
U1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVn
cyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdp
c3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1
ZSBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CkBAIC00
MjQsOCArNDM1LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
TUlQUykKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAg
dm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUs
ICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKIApAQCAt
NDY5LDI1ICs0ODAsMjUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQgPCBudW1i
ZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
ICsgMSwgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9u
QXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkU3RhY2tBcmcoYXJn
KS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAj
ZW5kaWYKIAogICAgICAgICAvLyBPdGhlcndpc2UgcGFzcyBGUCBhcmd1bWVudCBvbiBzdGFjay4K
LSAgICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4p
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBh
cmdzLi4uKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihDVVJS
RU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQ+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJl
Z3MuYXJnQ291bnQoYXJnKTsKQEAgLTQ5NywzNCArNTA4LDM0IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFy
Z3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcp
LCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgcG9rZUFyZ3Vt
ZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5
cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBwb2tlQXJn
dW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcy
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMg
PSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBj
dXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQUkluZm86OnJlZ1QwKTsK
IAogICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50ICsgMSA9PSBudW1BcmdSZWdpc3RlcnMpIHsK
LSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7Ci0gICAgICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAg
IHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsK
ICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdz
Li4uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcx
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlICsgMSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSArIDIpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlICsgMik7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdz
Li4uKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxD
VVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykK
KyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUg
cGF5bG9hZCwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5z
aWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChwYXlsb2FkLmdw
cigpKTsKQEAgLTU0NCw5ICs1NTUsOSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MsIHBheWxvYWQuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVl
UmVncyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1Jl
Z2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnLnRhZ0dQ
UigpKTsKQEAgLTU2OSwxMSArNTgwLDExIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBB
c3NlbWJseUhlbHBlcnMgewogI2VuZGlmIC8vIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQUykK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBB
TFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxU
cnVzdGVkSW1tLCBBcmc+Ojp2YWx1ZQogICAgICAgICB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPEFy
ZywgVHJ1c3RlZEltbT46OnZhbHVlPiAvLyBXZSBoYXZlIHRoaXMgc2luY2UgREZHU3BlY3VsYXRp
dmVKSVQgaGFzIGl0J3Mgb3duIGltcGxlbWVudGF0aW9uIG9mIFRydXN0ZWRJbW1QdHIKLSAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgb25seSBzdXBwb3J0cyBu
b24tZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlIGFyZ3VtZW50cyBzaW5jZSB3ZSBuZXZlciBjYWxs
IG9wZXJhdGlvbnMgd2l0aCBub24tcmVnaXN0ZXIgdmFsdWVzLgogICAgICAgICAvLyBJZiB3ZSBl
dmVyIG5lZWRlZCB0byBzdXBwb3J0IGltbWVkaWF0ZSBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMg
d2Ugd291bGQgbmVlZCB0byBkdXBsaWNhdGUgdGhpcyBsb2dpYyBmb3IgYm90aCB0eXBlcywgd2hp
Y2ggc291bmRzCkBAIC01OTEsNDYgKzYwMiw0NiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVu
YWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBB
cmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRf
VFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8
PSA0KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW0zMihhcmcpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwg
QXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkg
PT0gOCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tNjQoYXJnKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6
ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEU+Ojp2YWx1ZQogICAgICAgICAmJiAoKHN0ZDo6aXNfcG9pbnRlcjxBcmc+Ojp2YWx1ZSAmJiBz
dGQ6OmlzX2NvbnZlcnRpYmxlPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcG9pbnRl
cl90PEFyZz4+KiwgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpCiAgICAgICAgICAgICB8
fCBzdGQ6OmlzX3NhbWU8QXJnLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVlKT4KLSAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdz
KQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgLy8g
U3BlY2lhbCBjYXNlIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZSBiZWNhdXNlIGl0J3MgcmVhbGx5
IGFubm95aW5nIHRvIGRlYWwgd2l0aCBvdGhlcndpc2UuLi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdz
PgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19z
YW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgU3RydWN0dXJlKj46OnZhbHVlCiAgICAgICAgICYm
IHN0ZDo6aXNfc2FtZTxBcmcsIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVlPgotICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcuZ2V0KCkpLCBhcmdzLi4uKTsKICAg
ICB9CkBAIC02MzksOCArNjUwLDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2Vt
Ymx5SGVscGVycyB7CiAjdW5kZWYgUkVTVUxUX1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0
IHVwIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJp
dHkgPT0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3MsICJPbmUgbGFzdCBzYW5pdHkgY2hlY2siKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjU1LDMxICs2NjYsNDQgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVt
RlBSU291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJl
Zz4oYXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUZQ
UlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAgfQogCi1w
dWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFbnRy
eUltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAg
ICB1c2luZyBGaXJzdEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD47CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19zYW1lPEZpcnN0QXJndW1lbnRUeXBlLCBDYWxsRnJhbWUqPjo6dmFsdWUpIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3Jr
cyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0
Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBj
aGVjayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4p
OworICAgICAgICB9IGVsc2UgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBU
aGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3Mg
dGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyks
ICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAgICAgICB9
CisgICAgfQogCi0jZGVmaW5lIEZJUlNUX0FSR1VNRU5UX1RZUEUgdHlwZW5hbWUgRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPgorcHVibGljOgog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEZJUlNUX0FS
R1VNRU5UX1RZUEUsIENhbGxGcmFtZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBh
cmdzKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3Mp
CiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkg
d29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMy
LWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBj
aGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
LCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+
KCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgc3Rk
OjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPEZJUlNUX0FSR1VNRU5UX1RZUEUsIENhbGxGcmFt
ZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChHUFJSZWcgZnVuY3Rpb25HUFIs
IEFyZ3MuLi4gYXJncykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhp
cyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRo
aW5ncyB1cCBmb3IgMzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJCYXNp
YyBzYW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAw
LCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8
T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1
c2hOb25BcmcoZnVuY3Rpb25HUFIsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSN1bmRlZiBGSVJTVF9BUkdVTUVOVF9UWVBFCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoQWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFy
Z3MpCisgICAgeworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBl
PihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCkucHVzaE5vbkFyZyhhZGRy
ZXNzLmJhc2UsIEdQUkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKKyAgICB9CiAKICAgICB2
b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAK
aW5kZXggZjdhYTMyOWZlMjVkMTljNzM3MTg0NzBhZWZmYjNiNGFhZWEwNWRiNi4uMmJmMTFmZDY5
NTk2MWExMTczZjMyYjRjZTkyMTYyYjAwNzIxODM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb25EYXRhLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgpAQCAtMzksOCArNDAsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBHQ0F3YXJlSklUU3R1
YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCisgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZt
LCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKICAgICA6IEpJVFN0dWJS
b3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQorICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykp
CiB7CiAgICAgdm0uaGVhcC5tX2ppdFN0dWJSb3V0aW5lcy0+YWRkKHRoaXMpOwogfQpAQCAtNDks
NiArNTIsOSBAQCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmUo
KSB7IH0KIAogdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQo
KQogeworICAgIGlmIChtX3ZtLm1fc2hhcmVkSklUU3R1YnMpCisgICAgICAgIG1fdm0ubV9zaGFy
ZWRKSVRTdHVicy0+cmVtb3ZlKHRoaXMpOworCiAgICAgaWYgKG1faXNKZXR0aXNvbmVkKSB7CiAg
ICAgICAgIC8vIFRoaXMgY2FzZSBpcyBuZWVkZWQgZm9yIHdoZW4gdGhlIHN5c3RlbSBzaHV0cyBk
b3duLiBJdCBtYXkgYmUgdGhhdAogICAgICAgICAvLyB0aGUgSklUIHN0dWIgcm91dGluZSBzZXQg
Z2V0cyBkZWxldGVkIGJlZm9yZSB3ZSBnZXQgYXJvdW5kIHRvIGRlbGV0aW5nCkBAIC03NSw5ICs4
MSw5IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpkZWxldGVGcm9tR0MoKQogfQogCiBN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
IGNvZGUsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwKKyAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBjb25zdCBKU0NlbGwqIG93bmVyLAogICAg
IGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExp
bmtJbmZvcykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkKKyAgICA6IEdD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSkKICAgICAsIG1fY2Vs
bHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlua0luZm9zKFdURk1vdmUoY2FsbExpbmtJ
bmZvcykpCiB7CkBAIC0xMDYsOSArMTEyLDkgQEAgdm9pZCBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZpc2kKIH0K
IAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+
JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4mJiBrZXlzLCAgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdhcmVKSVRT
dHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3Mp
KQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShr
ZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogICAgICwgbV9jb2Rl
QmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykK
ICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIG1fY29kZU9yaWdpblBvb2woJm1fY29kZUJsb2Nr
V2l0aEV4Y2VwdGlvbkhhbmRsZXItPmNvZGVPcmlnaW5zKCkpCkBAIC0xMzEsNyArMTM3LDcgQEAg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6On5HQ0F3YXJlSklUU3R1
YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGEKICNlbmRpZgogfQogCi12b2lkIEdDQXdhcmVKSVRTdHVi
Um91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjphYm91dFRvRGllKCkKK3ZvaWQgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OmFib3V0VG9EaWUoVk0mKQogewogICAg
IG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOwogI2lmIEVOQUJMRShE
RkdfSklUKQpAQCAtMTU0LDYgKzE2MCw3IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXI6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogCiBSZWY8SklUU3R1YlJv
dXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+PiYmIGtleXMsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2VsbCogb3du
ZXIsCiAgICAgYm9vbCBtYWtlc0NhbGxzLApAQCAtMTY1LDE4ICsxNzIsMTggQEAgUmVmPEpJVFN0
dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBpZiAoIW1ha2VzQ2FsbHMpIHsK
ICAgICAgICAgLy8gQWxsb2NhdGluZyBDYWxsTGlua0luZm9zIG1lYW5zIHdlIHNob3VsZCBoYXZl
IGNhbGxzLgogICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpOwotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKHZtLCBjb2RlLCBXVEZN
b3ZlKGtleXMpKSk7CiAgICAgfQogICAgIAogICAgIGlmIChjb2RlQmxvY2tGb3JFeGNlcHRpb25I
YW5kbGVycykgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMtPmppdFR5cGUoKSkpOwotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2Rl
QmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywg
V1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4
Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CiAgICAgfQogCiAgICAgaWYgKGNlbGxzLmlz
RW1wdHkoKSAmJiBjYWxsTGlua0luZm9zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEdDQXdh
cmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtKTsKKyAgICAgICAgcmV0dXJuIEdDQXdh
cmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpKTsKICAgICAK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBX
VEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRleCA0OGJlZmJjNDg3ZmNhMjU3MGM2NWM5MjlmOTRk
MThlNmNlMWNhOWZkLi5iMDQ2YzhlNzc5YWYwNTM5MDc5MjM2YjY1MGI2MDBiZjY2M2YxZjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBDb2RlT3JpZ2luUG9v
bDsKIH0KIAorY2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIEpJ
VFN0dWJSb3V0aW5lU2V0OwogCkBAIC01NCwxMiArNTUsMTIgQEAgY2xhc3MgSklUU3R1YlJvdXRp
bmVTZXQ7CiAvLyBsaXN0IHdoaWNoIGRvZXMgbm90IGdldCByZWNsYWltZWQgYWxsIGF0IG9uY2Up
LgogY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsK
IHB1YmxpYzoKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJik7CisgICAgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
LCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJik7CiAgICAgfkdDQXdhcmVK
SVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFJlZjxKSVRTdHViUm91dGlu
ZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mIGNvZGUsIFZNJiB2bSkKKyAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUo
Y29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwg
Vk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2
bSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Y29kZSwgdm0sIFdURk1vdmUoa2V5cykpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgpAQCAtNjgsNiArNjksOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUg
OiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogICAgICAgICBtYXJrUmVxdWlyZWRPYmplY3RzSW50
ZXJuYWwodmlzaXRvcik7CiAgICAgfQogICAgIAorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9rZXlzOyB9CisK
ICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOwogICAgIAogcHJvdGVjdGVkOgpAQCAtODEsNiArODQs
OCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUg
ewogCiAgICAgYm9vbCBtX21heUJlRXhlY3V0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNK
ZXR0aXNvbmVkIHsgZmFsc2UgfTsKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQ
dHI8QWNjZXNzQ2FzZT4+IG1fa2V5czsKIH07CiAKIC8vIFVzZSB0aGlzIGlmIHlvdSB3YW50IHRv
IG1hcmsgb25lIGFkZGl0aW9uYWwgb2JqZWN0IGR1cmluZyBHQyBpZiB5b3VyIHN0dWIKQEAgLTg4
LDcgKzkzLDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJS
b3V0aW5lIHsKIGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NB
d2FyZUpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKICAgICBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKAotICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxs
Kj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKKyAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4m
LCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKICAgICB+TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGlu
ZSgpIG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMTA5LDEwICsxMTQsMTAgQEAgY2xh
c3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJs
aWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdDQXdhcmVKSVRTdHVi
Um91dGluZSBCYXNlOwogCi0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYs
IFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENh
bGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOworICAg
IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpT
Q2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxT
aXRlSW5kZXgpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxl
cigpIGZpbmFsOwogCi0gICAgdm9pZCBhYm91dFRvRGllKCkgZmluYWw7CisgICAgdm9pZCBhYm91
dFRvRGllKFZNJikgZmluYWw7CiAgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmluYWw7
CiAKIHByaXZhdGU6CkBAIC0xMzIsNiArMTM3LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQK
IC8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAogLy8g
ICAgVk0mIHZtLAorLy8gICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMs
CiAvLyAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogLy8gICAgYm9vbCBtYWtlc0NhbGxzLAogLy8g
ICAgLi4uKTsKQEAgLTE0Myw3ICsxNDksNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVX
aXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogLy8g
d2F5LgogCiBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKKyAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmIGtleXMsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0Nh
bGxzLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYgY2Fs
bExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJz
LCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDhmNDViMzc3YzE2OTZhNTE2
YTg0MzAwYjg5MjFmNmFkZDZhM2Q0ZGQuLjA2N2FiZmYxZDZhZDIwMDc1NDUxODAwNzdiMGM0YTU1
Yzc3NzIyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC00NjAsNiArNDYw
LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1l
bnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDMKICNlbmRpZgogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUg
KHJlZ1Q0IG9uIFdpbmRvd3MpCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BS
MSA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7
IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBX
aW5kb3dzKQpAQCAtNjUyLDYgKzY1Myw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSNiA9IEFSTTY0UmVnaXN0ZXJzOjp4NjsgLy8gcmVn
VDYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjcgPSBBUk02NFJlZ2lz
dGVyczo6eDc7IC8vIHJlZ1Q3CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BS
MCA9IEFSTTY0UmVnaXN0ZXJzOjp4ODsgLy8gcmVnVDgKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBub25BcmdHUFIxID0gQVJNNjRSZWdpc3RlcnM6Ong5OyAvLyByZWdUOQogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNNjRSZWdpc3RlcnM6OngwOyAv
LyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFS
TTY0UmVnaXN0ZXJzOjp4MTsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBu
b25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk02NFJlZ2lzdGVyczo6eDI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggNTU1NjMwMzdhZWI1OGZlYzliM2YwM2Y3Y2ZlZTFmYzBkZTNl
Y2UyMy4uN2ZhMDhlYmY2Yzg4YTMzNWZiMGE5NTk1NmNiNTRhOGI2ODgxM2E1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtOTI0LDYgKzkyNCwxMCBAQCB2b2lkIEpJVDo6bGluaygp
CiAgICAgICAgICAgICAgICAgZG9uZVRhcmdldCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0
aFRhcmdldCwKICAgICAgICAgICAgICAgICBzbG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
ICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRh
cmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOwor
ICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBl
SnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCA3NWM5Y2I5NmIxMzY1MzJmMDg2MWYyZjBhODA1OGVmYzZiMDU2YjI0Li40MDlm
NDllMjY4ODZhODQ1MTM3NzQ4ZGMwNmFlYjFiODRkYjZhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTI5NCw2ICsyOTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25DYWxsOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxs
KEFkZHJlc3MgZnVuY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24s
IE9wZXJhdGlvblB0clRhZyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShY
ODZfNjQpCiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29u
c3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAt
Mzk1LDM5ICs0MDAsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlz
IGludC1jaGVja2VkIGFuZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAg
ICAgICAgLy8gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cg
Y2FzZXMuIEZhbGwtdGhyb3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiBy
ZWdUMCwgYW5kIGl0IGlzIG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJ
bnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUs
IEludDMyU2hhcGUpOyB9Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVt
aXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAg
ICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1v
ZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
IHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJ
bmZvLCBJbnQzMlNoYXBlKTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4
aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRM
b2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbyk7CiAKICAgICAgICAgLy8gUHJv
cGVydHkgaXMgaW4gcmVnVDEsIGJhc2UgaXMgaW4gcmVnVDAuIHJlZ1QyIGNvbnRhaW5zIGluZGVj
aW5nIHR5cGUuCiAgICAgICAgIC8vIFRoZSB2YWx1ZSB0byBzdG9yZSBpcyBub3QgeWV0IGxvYWRl
ZC4gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kCiAgICAgICAgIC8vIHplcm8tZXh0ZW5kZWQu
IEJhc2UgaXMgY2VsbCBjaGVja2VkLiBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4KICAg
ICAgICAgLy8gcmV0dXJucyB0aGUgc2xvdyBjYXNlcy4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJTaGFwZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFs
SW5mbywgSW50MzJTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFs
SW5mbywgRG91YmxlU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2Rl
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91
c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZv
KTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVt
cExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAg
ICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhp
bmdTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlW
YWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBl
ZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBl
KTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlKTsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9h
dFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJh
eVR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3As
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5
VHlwZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEVDTUFNb2Rl
IGVjbWFNb2RlKE9wKTsKQEAgLTg3MCwxMyArODc1LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKKyAgICAgICAg
dm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MpOwogI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAgICAg
dm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNz
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0
YWRhdGE+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBjb25zdCBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIEFk
ZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgc3Rk
OjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbD4KQEAgLTg4Niw2ICs4OTUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFs
dWVSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3Rk
OjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2
b2lkPgorICAgICAgICBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0
ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7Cisg
ICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0
KTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KICAgICAgICAgc3RydWN0IGlzNjRCaXRUeXBlIHsKQEAg
LTkwNiw2ICs5MjMsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9w
ZXJhdGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRh
cmdldCwgYXJncy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBjYW5ub3QgdXNlIHN0
YW5kYXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRoYW4gNjQgYml0cy4K
KyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5hbWUgRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAjZWxzZSAvLyBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBBcmdzLi4uIGFyZ3MpCkBAIC05MTMs
NiArOTQwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHM8
T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9p
ZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+
KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAg
ICB9CiAjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIAogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUu
Li4gQXJncz4KQEAgLTkyMyw2ICs5NTcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRo
UHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uLCByZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgTWV0YWRhdGEsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsK
KyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAs
IHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAgICB9CisKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQoT3BlcmF0aW9uVHlwZSBvcGVy
YXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEFyZ3MuLi4gYXJncykKICAgICAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggMWI0OWQ0ODlkYWEyYjc4NmFi
NzkzOTJmOWEzNGViYzY0NGNkYWIxOC4uMzc0YmEzMGM3Zjc2NzEzNzk0NzBlNGRkOWQ0ZGE4MzY1
ZGEzNjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0zOTgsOCAr
Mzk4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMiw4
ICs0MzIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAKICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgIENhbGwg
Y2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8o
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2Zp
bGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJhdG9y
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlk
ZW50KS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgIGF1dG8g
ZG9uZSA9IGp1bXAoKTsKIAogICAgIG5vdE9iamVjdC5saW5rKHRoaXMpOwpAQCAtNDgwLDggKzQ4
Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogICAgICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpOwogICAgICAgICBwcmVzZXJ2ZWRSZWdz
LmFkZCh2YWx1ZUdQUik7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRS
ZWdzLAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3Mo
aXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlO
YW1lcy0+ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJl
Z3MoZG9uZUdQUiksIHJlZ1QzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNDk5LDggKzUwNiw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQogICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0
aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdU
MCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlO
YW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2
YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFt
ZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFs
dWVHUFIpLCByZWdUNCwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTUyOCwxNiArNTM1LDIzIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKICAgICAgICAgbm90T2JqZWN0LmFwcGVuZChi
cmFuY2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikpOwotICAgICAgICBub3RPYmplY3QuYXBwZW5k
KGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAogICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOwogICAgICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OwogICAgICAgICAKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAg
ICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
aXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFu
Y2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAKKyAgICAgICAgQ2FsbCBjYWxsOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Cisg
ICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5m
bygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRvbmVWUmVnLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0
ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIs
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQp
LnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7CisKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVn
VDEpOwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJl
Z1QwKTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CkBA
IC01NTYsOCArNTcwLDEzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAKICAgICAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMo
KSk7Ci0KKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2Zp
bGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBlY2M0ZTVmM2ZmNmQw
N2Y5OWMwNzg0ZGQ0YzEyZGViYTBlMjEwZGNmLi4xNTI1MTRhZmRjYWM3ODJhYzljODc0ZTU1MGFm
ZmI5YzcyOGJlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCkBAIC0zOTYsMTIgKzM5NiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVu
KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVK
SVQsCiAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAg
ICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwo
KSksCiAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJhdG9yR1BSLCBwYXlsb2FkSXRlcmF0b3JH
UFIpLAogICAgICAgICBuZXh0UmVncywKKyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwpAQCAtNTA1LDEyICs1MDcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIHByZXNlcnZlZFJlZ3Mu
YWRkKHBheWxvYWRWYWx1ZUdQUik7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwK
ICAgICAgICAgICAgIHByZXNlcnZlZFJlZ3MsCiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9u
ZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5
bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgZG9uZVJlZ3MsCisgICAgICAgICAgICBJ
bnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKQEAgLTUzMywxMiArNTM3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAg
ICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBs
KCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0
ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgcmVzdWx0UmVncywKKyAgICAgICAgICAgIEludmFs
aWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAppbmRleCA2ZmE3MjQ0ZWYw
YTA4YzlmMDQ3YTMyMjA0ZjczN2QyOTI4NzE5MDZmLi44Nzc3MGJmODQ4YTNhZmE5ZGRiZjBiMTgy
MjM3ZjEzY2EwZTJiYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaApAQCAtNTIs
MTMgKzUyLDE1IEBAIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwogY2xhc3MgVk07CiAKIGVudW0g
Y2xhc3MgSklUVHlwZSA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgSG9zdENhbGxUaHVuaywK
LSAgICBJbnRlcnByZXRlclRodW5rLAotICAgIEJhc2VsaW5lSklULAotICAgIERGR0pJVCwKLSAg
ICBGVExKSVQKKyAgICBOb25lID0gMGIwMDAsCisgICAgSG9zdENhbGxUaHVuayA9IDBiMDAxLAor
ICAgIEludGVycHJldGVyVGh1bmsgPSAwYjAxMCwKKyAgICBCYXNlbGluZUpJVCA9IDBiMDExLAor
ICAgIERGR0pJVCA9IDBiMTAwLAorICAgIEZUTEpJVCA9IDBiMTAxLAogfTsKK3N0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgd2lkdGhPZkpJVFR5cGUgPSAzOworc3RhdGljX2Fzc2VydChXVEY6Omdl
dE1TQlNldENvbnN0ZXhwcihzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEpJVFR5
cGU+PihKSVRUeXBlOjpGVExKSVQpKSArIDEgPT0gd2lkdGhPZkpJVFR5cGUpOwogCiBjbGFzcyBK
SVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKIHB1YmxpYzoK
QEAgLTE1Niw2ICsxNTgsMTUgQEAgY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxKSVRDb2RlPiB7CiAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEpJVFR5cGU6Oklu
dGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9
CiAKKyAgICBzdGF0aWMgYm9vbCB1c2VTaGFyZWRJQyhKSVRUeXBlIGppdFR5cGUpCisgICAgewor
ICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlU2hhcmVk
SUNJbk9wdGltaXppbmdKSVQoKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGNvbnN0IERPTUpJVDo6
U2lnbmF0dXJlKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCiAg
ICAgZW51bSBjbGFzcyBTaGFyZUF0dHJpYnV0ZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBm
NTJjM2M3NjIxNWFhMzI2ZGRlOWY4OTg1NjI5OGMzZGU2NDYyMmNlLi41OWEzYzMxYTBkNTQ0Mjlk
YjUxYWM2MTVmZjk3MWYwODQ1YTIwYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtNDMsOSArNDMsMTAgQEAg
c3RhdGljIFN0cnVjdHVyZVN0dWJJbmZvKiBnYXJiYWdlU3R1YkluZm8oKQogfQogCiBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzKQogICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9qaXRUeXBlKGpp
dFR5cGUpCiB7CiAgICAgbV9zdHViSW5mbyA9IG1fY29kZUJsb2NrID8gbV9jb2RlQmxvY2stPmFk
ZFN0dWJJbmZvKGFjY2Vzc1R5cGUsIGNvZGVPcmlnaW4pIDogZ2FyYmFnZVN0dWJJbmZvKCk7CiAg
ICAgbV9zdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9IGNhbGxTaXRlOwpAQCAtNjAsMjAgKzYxLDIy
IEBAIHZvaWQgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAogCiAgICAgbV9zdHVi
SW5mby0+ZG9uZUxvY2F0aW9uID0gZmFzdFBhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihtX2RvbmUpOwogCi0gICAgbV9zdHViSW5mby0+c2xvd1BhdGhDYWxsTG9jYXRpb24gPSBzbG93
UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsKKyAgICBp
ZiAobV9zbG93UGF0aENhbGwubV9sYWJlbC5pc1NldCgpKQorICAgICAgICBtX3N0dWJJbmZvLT5z
bG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4obV9zbG93UGF0aENhbGwpOwogICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlv
biA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc2xvd1BhdGhC
ZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJ
VFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1
YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5
cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQogewogICAgIG1fc3R1YkluZm8t
PmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9
IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnRoaXNHUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNl
LnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7
CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigK
IAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0g
ICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1f
c3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsK
IH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3Nl
bWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2l6ZSkKIHsKKyAgICAvLyBXZSBnZW5lcmF0ZSB0
aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBTaGFyZWRJQyBpcyBlbmFibGVkIGJl
Y2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2UgSW5saW5lQWNjZXNzCisgICAgLy8gZm9yIHRoZSBw
ZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogICAgIHNpemVf
dCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKICAgICBt
X3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7CkBAIC0xMDEsOSArMTA2LDkgQEAgdm9pZCBKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6
ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVy
YXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
LSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKLSAgICA6IEpJVEJ5SWRH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5
cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlm
aWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQorICAgIDogSklUQnlJZEdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NU
eXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgLCBtX2lz
TGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51aWQoKSA9PSBjb2RlQmxvY2stPnZtKCkucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLnBheWxv
YWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7CkBAIC0xMTUsOSArMTIwLDkgQEAgdm9pZCBKSVRH
ZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9
CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJs
b2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1
c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
VHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0
aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2FkR1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BS
KCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgCiAgICAgRUNN
QU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICAgICAgOiBKSVRCeUlkR2VuZXJh
dG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVz
ZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAgICAgICAgLCBtX2VjbWFN
b2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQogewpAQCAtMTcxLDE0
ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpz
bG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHBy
b3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQotICAgIDogQmFzZShj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5
VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkK
KyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJ
bmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICBBU1NFUlQoYmFzZS5wYXls
b2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQ
UiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIg
PSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1
bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5m
b0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigpICE9
IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFn
R1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzNSBAQCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVs
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogdm9p
ZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9
IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0
VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1f
c3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CisgICAgfQogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5VmFs
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc2xv
d1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkp
IHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCB7IH0pOworICAg
ICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9j
YXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVt
cC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBm
YXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAg
fQogfQogCi1KSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0
Y2gpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKK0pJVERlbEJ5SWRHZW5lcmF0b3I6
OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlw
ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BS
UmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKIHsK
ICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAgIEFTU0VS
VChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5w
cm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHVi
SW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigp
ICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CkBAIC0yMjMsMjIgKzIzOCwzMCBAQCBKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVRE
ZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcgog
dm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVy
JiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1w
ID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9q
aXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2Fs
bChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlJ
ZEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZm
ZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc2xv
d1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkp
IHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCB7IH0pOworICAg
ICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9j
YXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVt
cC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBm
YXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAg
fQogfQogCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFs
dWUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAg
IC8vIEZJWE1FOiBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBw
cm9wZXJ0eS4KICAgICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI1MSwxNSArMjc0
LDE1IEBAIHZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5
cGUsCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BS
UmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIEdQUlJlZyBzY3JhdGNoMSwg
R1BSUmVnIHNjcmF0Y2gyLCBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QpCi0gICAgOiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQorICAgIDog
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQogewog
ICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQ
UiA9IHJlc3VsdDsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3RvdHlw
ZTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQUlJl
ZzsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0yNzks
MjEgKzMwMiwyOCBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yKAogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyht
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2Rl
UHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9q
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7CiB9CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLAotICAgICAg
ICBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKLSAg
ICAKLSAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQYXRoLmxvY2F0aW9uT2Y8
Tm9QdHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhtX2ppdFR5cGUpKSB7CisgICAgICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6
ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0
ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVsc2UgeworICAg
ICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX2p1bXApKTsKKyAg
ICAgICAgZmFzdFBhdGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5v
UHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pKTsKKyAgICB9CiB9CiAKLUpJVEdldEJ5VmFsR2VuZXJh
dG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCi0gICAgOiBCYXNl
KGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJl
Z2lzdGVycykKK0pJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAg
IDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFj
Y2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fcmVz
dWx0KHJlc3VsdCkKIHsKQEAgLTMwMiw2ICszMzIsNyBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZQogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0
dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAgIG1f
c3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZv
LT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKQEAgLTMxMiwyMCArMzQzLDI4IEBAIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJl
bCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwg
SklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fc2xvd1BhdGhK
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7CiB9CiAKLXZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUR2V0QnlWYWxH
ZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6
ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRo
LCB7IH0pOworICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93
UGF0aFN0YXJ0TG9jYXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fc3RhcnQu
aXNTZXQoKSk7CisgICAgICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFz
dFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIH0K
IH0KIAotSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBicmFuZCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcg
c3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBBU1NFUlQo
YWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCB8fCBhY2Nlc3NUeXBl
ID09IEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCk7CiAgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CkBAIC0zMzMsNiArMzcyLDcgQEAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJs
b2NrKiBjb2RlQmwKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7
CiAgICAgbV9zdHViSW5mby0+cmVncy5icmFuZEdQUiA9IGJyYW5kLnBheWxvYWRHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
bV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
di5icmFuZFRhZ0dQUiA9IGJyYW5kLnRhZ0dQUigpOwpAQCAtMzQzLDE2ICszODMsMjQgQEAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3IoQ29kZUJsb2NrKiBjb2RlQmwKIHZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9
IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29k
ZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICB9CiAgICAgbV9kb25lID0g
aml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpm
aW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
Cit2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0
LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBCYXNl
OjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIHsgfSk7CisgICAgICAgIG1fc3R1YkluZm8t
Pm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICAgICAgQmFzZTo6Zmlu
YWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAppbmRleCBkNmNhNmUxNmEzZjMyYzY0MGY5NmNiMjU1MTk1NTQ4YjBmMmViNjUxLi5kZTJkNzBi
NTk3YjczZDAxNzA5N2MxNTA4YmU5NTMzNzAyYzJlZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC00MSwxMiArNDEs
MTIgQEAgY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0g
Y2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKK2VudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7
CiAKIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyk7CisgICAgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IoQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOwogICAgIAogcHVi
bGljOgogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
c3R1YkluZm87IH0KQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewogICAgIAogcHJvdGVjdGVkOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAg
SklUVHlwZSBtX2ppdFR5cGU7CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiAK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwpAQCAtNzcsOCArNzgsOCBAQCBjbGFz
cyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAg
ICBKSVRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzdHViSW5mb0dQUik7CiAKIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBz
bG93UGF0aEp1bXAoKSBjb25zdApAQCAtMTA2LDggKzEwNyw4IEBAIGNsYXNzIEpJVEdldEJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlw
ZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vzc1R5cGUpOwogICAgIAog
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogCkBAIC0xMjAsOCAr
MTIxLDggQEAgY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5
SWRHZW5lcmF0b3IgewogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigpIHsgfQogCiAg
ICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
Q2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklU
VHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVl
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZv
R1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsK
QEAgLTEzMyw4ICsxMzQsOCBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJ
VEJ5SWRHZW5lcmF0b3IgewogICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKLSAg
ICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJh
c2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUs
IFB1dEtpbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKICAg
ICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAg
LTE1MSw4ICsxNTIsOCBAQCBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KIAog
ICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJl
c3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTE3Niw4
ICsxNzcsOCBAQCBjbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yIHsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRE
ZWxCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQs
IEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yMDAsOCArMjAxLDggQEAg
Y2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAg
IEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKAotICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRU
eXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CkBAIC0yMTEsOCArMjEyLDggQEAgY2xh
c3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigpIHsgfQogICAgIAogICAgIEpJVEluc3Rh
bmNlT2ZHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAot
ICAgICAgICBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwg
R1BSUmVnIHNjcmF0Y2gyLAorICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVn
IHJlc3VsdCwKKyAgICAgICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcg
c3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAogICAgICAgICBi
b29sIHByb3RvdHlwZUlzS25vd25PYmplY3QgPSBmYWxzZSk7CiAgICAgCiAgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CkBAIC0yMjksOCArMjMwLDggQEAgY2xhc3Mg
SklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igewog
ICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRv
cigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpOworICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVt
cCgpIGNvbnN0CiAgICAgewpAQCAtMjU3LDggKzI1OCw4IEBAIGNsYXNzIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAg
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCk7CisgICAgICAgIENv
ZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCBlNzljZDM2ZWY1N2Q3YmRjZWNlMTc2OGQwNTg4
YWZlZWQ4ODg1MDE1Li4yOGE2NDMzN2UyZjA4ZjVmMjBhZGE3MzdiYjc2YmNiNDczNjIyOGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMzMsMTcgKzMzLDE3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2Fk
Rm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFy
cmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoK
LSAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBl
KTsKKyAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICByZXR1cm4gZW1p
dERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJu
IGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsK
ICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xv
YWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRDb250
aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAg
Y2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9h
ZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdEFycmF5
U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyOCw2ICsxMjgsMTMgQEAgQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soY29uc3QgRnVuY3QKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzIGZ1bmN0aW9u
KQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIGFwcGVuZENhbGwoZnVuY3Rpb24p
OworICAgIGV4Y2VwdGlvbkNoZWNrKCk7Cit9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKIHsKQEAgLTE1Nyw2ICsxNjQsMTYgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRk
cmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRT
dG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0
V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQogewpAQCAtMTcxLDYgKzE4
OCwxOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRh
dGEmIG1ldGFkYXRhLCBBZGRyZXNzIGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQorewor
ICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVH
UFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7Cisj
ZWxzZQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIEpTVmFsdWVSZWdzKHJl
dHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1
cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewogICAgIGlmICghbV9jb2Rl
QmxvY2stPmlzS25vd25DZWxsKHJlZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAppbmRleCBiZDU1YTNkMDUxNmQ0NmI2N2FlNTk3YjZjM2E0ZjU4N2I1ZmRkNzMwLi5m
NGUxOGUyNmQyODU0ODg2MWNhZTMyYjZmYWRhNDNlMmExNGI1MjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE2NCwxMSArMTY0LDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHByb3RvKTsKIAogICAg
IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8v
IHJlc3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUKICAgICAgICAgcmVnVDEsIC8vIHByb3Rv
CisgICAgICAgIHJlZ1Q1LAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKGdl
bik7CkBAIC0xODYsNyArMTg3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9m
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklU
SW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRl
eCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBDYWxs
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7Cisg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwg
cmVnVDEpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTcx
OSw3ICsxNzI3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3Vt
ZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAz
NC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50
SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
ID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJh
ZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAt
MTczNCw4ICsxNzQyLDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9w
ZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29k
ZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNl
bGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
dG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFs
dWUoKSk7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZh
bEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5l
cmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICBieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNv
ZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVM
b2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJl
dHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgfQogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xNzY5LDExICsxNzgyLDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBz
bG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUs
IGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2Rl
KGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAKICAg
ICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJl
Z1QwKTsKIAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRU
eXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUg
PSBsYWJlbCgpOwpAQCAtMTc5OSw3ICsxODEzLDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9o
YXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlW
YWxJbmZvKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdDsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGJ5VmFsSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBj
YWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQp
PihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgcmVnVDAsIHJlZ1QxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVs
dCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1Qw
LCByZWdUMSwgYnlWYWxJbmZvKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZh
bEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9
IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
aW5kZXggOGRiMzU5ZWJkOGNkMDU2Njk3M2I4NjNjNDg2NzQxYTdmYWUyMjQ1ZS4uY2FlNGU4ZDc3
OTZmMDZjYjk0ZDgxNjEzNDA1MDMxYzE4NTc0ODVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTYyLDExICsxNjIsMTIgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAg
SklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8g
cmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8K
KyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRj
aAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBtX2luc3RhbmNlT2ZzLmFw
cGVuZChnZW4pOwpAQCAtMTE4Myw3ICsxMTg0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
SGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQK
ICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlw
ZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZv
ckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7CisgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0
aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMy
KDEpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xMjM0LDcgKzEyMzUs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExp
c3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBt
b2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5
TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjFh
ZjM2NTMwOWQyNzkzMzcxZGU2ZWI0MDBiNDQ2OGFhODM3MGIyNS4uMDI5MmI5YjhjNGVjZTI3YTgx
Njc1MDBhMzVkNDEyNTY1NDlkNjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCkBAIC0xMDAyLDcgKzEwMDIsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmEKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAg
ICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8t
PnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFs
R2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAg
ICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJp
YzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNz
KFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKTsKICAgICB9CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChn
bG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21h
TW9kZSkpOwogfQpAQCAtMTA5NCw3ICsxMDk3LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
CiAgICAgaWYgKHJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAg
ICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0
dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAg
ICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1
ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwpAQCAtMTI3OCw3ICsxMjg0LDEwIEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqCiAgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRp
b25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6
ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQ
YXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJF
U1MpLCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJs
b2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CiAgICAgfQog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjU2Nyw3ICsyNTc2LDExIEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNvZGVk
SlNWYWx1ZSwgKEpTCiAgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAx
MAogICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkg
ewogICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCi0gICAgICAgICAg
ICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJO
X0FERFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKKyAgICAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgYnlW
YWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5l
cmljOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY0NDY3
ZTlhMjVlMTQ3N2UxZWMwNjM1ZDQwOTc1NGQ4ZTc1MzkyZWYuLjFjOTIyYjgzNjgwZTVhYzA3YmUx
NWRlYmJkZjA1Yzg5MjM1OWM0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC02OSwxMiArNjksMTUgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAg
ICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgICAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3Bl
cnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
LSAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBhZGRTbG93Q2FzZSgpOwogICAgICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAg
ICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgcmVzdWx0UmVncyk7CkBAIC05MywxNCArOTYsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFMKIAogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAg
ICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9
IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAg
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHByb2ZpbGUsIHJlZ1QwLCByZWdUMSk7CiAjZWxz
ZQogICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKICAgICAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OwogCkBAIC0xMTgsNyArMTIyLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUpLCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBj
YWxsOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzOCw3
ICsxNDQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7CkBAIC0xNTcsOSArMTY0LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0
IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8g
Y2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxs
Iik7CkBAIC0xODIsMTAgKzE5MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRS
ZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3Bl
cnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
KTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTIw
MSw4ICsyMTIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCkBAIC0yMTEsNiArMjIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogI2Vs
c2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0y
MjYsNyArMjM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsK
KyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI0NSw3ICsyNTgsOCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
SklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0yNjMs
OSArMjc3LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhp
cyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0g
ICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0
KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxz
ZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC0yODUsMTAg
KzMwMCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlR1BSLCBiYXNlKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAgICBtX2Nv
ZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRl
QnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgcmVnVDIpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVs
c2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFw
cGVuZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUg
ZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgpA
QCAtMzAyLDggKzMyMCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiB7CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYg
Z2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsK
LSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zMTIsNiArMzI5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnkKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNl
dFByaXZhdGVCcmFuZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBicmFuZEdQUik7CiAjZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0zMjgsOSAr
MzQ2LDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5k
T3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAg
Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2
YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRp
ZgorCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0K
IApAQCAtMzQ2LDEwICszNjcsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6
OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6
Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nl
c3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIApAQCAtMzU3LDggKzM4MSw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3By
aXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7
CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFu
ZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0z
NjcsNiArMzkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VH
UFIsIGJyYW5kR1BSKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRP
cHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKIApAQCAtMzgzLDcgKzQwNyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5
cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBG
dW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46
OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
IUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgY2Fs
bCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIApAQCAtNDE1LDggKzQ0MSwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKICAgICBQYXRjaGFibGVKdW1wIG5vdEluZGV4
OwogICAgIGlmICghcHJvcGVydHlOYW1lSXNJbnRlZ2VyQ29uc3RhbnQpIHsKLSAgICAgICAgbm90
SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJlZ1QxKTsKLSAgICAgICAgYWRkU2xv
d0Nhc2Uobm90SW5kZXgpOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBhdXRvIGlzSW50MzIgPSBicmFuY2hJZklu
dDMyKHJlZ1QxKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAg
ICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJlZ1QxKTsKKyAgICAgICAgICAg
IGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgfQogICAgICAgICAvLyBTZWUgY29tbWVu
dCBpbiBvcF9nZXRfYnlfdmFsLgogICAgICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQocmVnVDEsIHJl
Z1QxKTsKICAgICB9CkBAIC00MzIsMjMgKzQ2NCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUQXJy
YXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmlsZSk7CiAgICAgc3dpdGNoIChtb2Rl
KSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZh
bChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRp
Z3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRB
cnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZv
KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBh
ZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAog
ICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtNDU3LDcgKzQ5MCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVy
aWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTQ2NSw3ICs0OTgs
MTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBU
cnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAg
ICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVz
dGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRy
VGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIo
aW5kZXhpbmdTaGFwZSkpOworCiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgSnVtcCBvdXRPZkJvdW5kcyA9
IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtNTE1LDcgKzU1Nyw3IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQog
ewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwog
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01MjMsNyAr
NTY1LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgCiAgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
cmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFs
SW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWws
IHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZh
ckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBK
SVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhp
cyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
cmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworCiAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJl
Z1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCkBAIC01NjgsOCAr
NjE5LDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5k
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMywgcmVnVDIsIGVj
bWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFy
cmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxX
cml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4K
QEAgLTU4MCw3ICs2MzEsMTMgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZh
bFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMp
OwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigp
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7
CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhG
dW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4u
c2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdU
MCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJv
cGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYxOSw2
ICs2NzYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIENhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3Bl
cmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIHJlZ1QyLCBieVZhbEluZm8sIFRydXN0ZWRJbW0zMihl
Y21hTW9kZS52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAg
YnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC02
MzgsOCArNjk2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihlY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYXV0byogb3BlcmF0aW9uID0gaXNE
aXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlW
YWxPcHRpbWl6ZTsKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAg
Q2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChpc0RpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCkBAIC02NTcsNyArNzE2LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtNjc1LDkgKzczNSwxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFs
dWVQUiwgYnlWYWxJbmZvR1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwg
Y2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2Yg
cmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJl
dCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0
X3h4eF9wcmVwYXJlQ2FsbCIpOwpAQCAtNjk2LDggKzc1NywxMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCi0gICAg
UGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKLSAgICBhZGRTbG93
Q2FzZShmYXN0UGF0aEptcCk7CisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcDsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBm
YXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZmFzdFBhdGhKbXAg
PSBwYXRjaGFibGVKdW1wKCk7CisgICAgICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAg
ICB9CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CiAgICAgCkBAIC03MjQsNiArNzkw
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBi
eVZhbEluZm8sIFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpKTsKICNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKKyAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTc0Myw3ICs4MTAsOSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFs
dWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAg
LTc2MSw3ICs4MzAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFt
ZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CkBAIC03NzksOSArODQ5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBS
LCBieVZhbEluZm9HUFIsIHB1dEtpbmRHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwg
ZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVy
bmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC04NDYsMTEgKzkxNywxNCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOwogICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nh
c2UoKTsKICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTg4MSw2ICs5NTUsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwg
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwogI2Vsc2UKICAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZz
ZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKQEAgLTg5OCwxNSArOTczLDE2
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSBy
ZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC05
MTgsNyArOTk0LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwpAQCAtOTM1LDkgKzEwMTIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8K
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVw
YXJlQ2FsbCIpOwpAQCAtOTU2LDEwICsxMDM0LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93
Q2FzZSgpOwogICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTk5MSw2ICsxMDcyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsT3B0aW1pemUsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCByZWdUMSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
Lm1fZWNtYU1vZGUudmFsdWUoKSkpOwogI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMDA4LDE1ICsxMDkwLDE2IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3Mo
cmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMDI4LDcgKzExMTEsOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxf
YnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBA
IC0xMDQ1LDkgKzExMjksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQ
Uik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBD
b25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9w
ZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2Fs
bCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQ
UjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpF
eHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7
CkBAIC0xMDY4LDggKzExNTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJ
ZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEwOTQs
NiArMTE3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvCiAgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJl
Z1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMTEwLDcgKzExOTYsOSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRl
Y2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5
R2V0QnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFs
dWVHUFIpOwpAQCAtMTEzMyw4ICsxMjIxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5
cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC0xMTYwLDYgKzEyNDgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9u
R2V0QnlJZERpcmVjdE9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMCwgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Cisg
ICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWREaXJl
Y3RPcHRpbWl6ZTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0g
bV9ieXRlY29kZUluZGV4KTsKIApAQCAtMTE3Niw3ICsxMjY1LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRp
b25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7
CkBAIC0xMjA3LDggKzEyOTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTIzMyw4ICsxMzI0LDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTEyNjAsNiArMTM1
MSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3Vs
dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNl
CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMjc1LDcgKzEz
NjcsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFk
YXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjk0LDcgKzEzODgsOCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2
bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMjsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzExLDkgKzE0MDYs
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwg
ZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVy
bmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
Z2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xMzM3LDYgKzE0MzMsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZSht
ZXRhZGF0YSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IHJlZ1QwLCByZWdUMSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7CiAjZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogCkBAIC0xMzU0
LDcgKzE0NTEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAog
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAg
LTEzNzMsNyArMTQ3Miw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKQEAgLTEzOTIsOSArMTQ5MiwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBh
cmVDYQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRo
aXNHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5
IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8g
dGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1MTksMTAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRL
aW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNDQ4LDYgKzE1NDgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbAogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQ
YXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3
Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKIApA
QCAtMTQ2NSw3ICsxNTY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BS
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lk
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAg
Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxs
IGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAKQEAgLTE0ODEsNyArMTU4NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTE1MDAsOSArMTYwNCwxMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWls
IGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9m
IHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAg
ICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNs
b3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xNTIxLDggKzE2MjYsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwog
CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNTQ2LDYgKzE2NTEs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QwLCBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKICNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKKyAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemU7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CiAKQEAgLTE1NjQsNyArMTY3MCw5IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFs
dWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBD
YWxsIGNhbGw7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXpl
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNzU0LDggKzI4NjIsOCBA
QCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5
dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QzLCByZWdU
Mik7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFt
ZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZh
bGlkR1BSUmVnLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwog
CkBAIC0yNzY1LDcgKzI4NzMsMTMgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRC
eVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIC8vIEpJ
VFB1dEJ5SWRHZW5lcmF0b3Igb25seSBwcmVzZXJ2ZSB0aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3Mg
cGF5bG9hZCwgd2UgaGF2ZSB0byByZWxvYWQgdGhlIHRhZy4KICAgICBlbWl0TG9hZFRhZyhiYXNl
LCByZWdUMSk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1
bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpT
VmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3Bl
cnR5TmFtZS5yYXdCaXRzKCkpOworICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwg
cHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVu
ZChqdW1wKCkpOwogCkBAIC0yODE3LDI5ICsyOTMxLDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvCiAKICAgICBzd2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAg
ICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51
bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRy
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwg
bnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51
bGxwdHIpOwogICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlw
ZWRBcnJheVR5cGVGb3JKSVRBcnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50
KHR5cGUpKQotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZh
bChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRB
cnJheSAvIEJpZ1VpbnQ2NEFycmF5IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJp
Z0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAg
ICAgICAgICAgQVNTRVJUKGlzRmxvYXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAg
ICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMjg2Niw4ICsyOTgwLDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5
VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAog
ICAgICAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJl
c3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hK
dW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVz
c1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVy
bkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOwor
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewor
ICAgICAgICBieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFs
SW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRy
ZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9
CiB9CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5z
bGF0aW9uIHVuaXQgKEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0
d28gZXhwZWN0ZWQgc3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCkBAIC0yOTA2LDggKzMwMjYs
MTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQo
QnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkEKICAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2
YXRlX25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmlu
ZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwog
ICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9u
Q2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRk
cmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25v
dEluZGV4SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJ
bmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
YnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFn
PihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVz
cykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
R2VuZXJpYykpOworICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0yOTQ0LDE1
ICszMDY5LDIwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElk
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgICAgICJCYXNlbGluZSBw
dXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCBy
ZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QpID8gIl9kaXJlY3Qi
IDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlW
YWxJbmZvLT5zdHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUo
KSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJl
dHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRy
VGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2lu
ZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBv
cGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1
bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9z
bG93T3BlcmF0aW9uID0gcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5k
ZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZv
LT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7
CisgICAgfQogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhl
ciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9m
ZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4o
QnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmll
cik7CiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJ
ZDxPcFB1dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5k
LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVM
b2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVt
cExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTY4LDcgKzMwOTgsMTYgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihE
b3VibGVTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBp
c0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91
YmxlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAg
ICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3Rl
ZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFw
ZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGlj
TGVuZ3RoKCkpKSk7CiAgICAgbG9hZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHks
IFRpbWVzRWlnaHQpLCBmcFJlZ1QwKTsKQEAgLTI5NzcsNyArMzExNiw3IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUpCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk5
NSw3ICszMTM0LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGlu
ZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5m
bykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGlu
ZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVt
cChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0g
ZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4
aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNz
KGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3Jh
dGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVl
KEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0z
MDA0LDcgKzMxNTIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93
Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzAyMyw3ICszMTcxLDE2IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBh
dGNoYWJsZUp1bXAmIGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIo
VHJ1c3RlZEltbTMyKC1BcnJheVN0b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0z
MihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAg
ICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFu
Y2gzMihCZWxvd09yRXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9y
YWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUs
IHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0
b3JhZ2VTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
T2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJh
eVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMzAzNSw3ICszMTkyLDcgQEAg
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3Qg
SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsK
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0z
MDYwLDcgKzMyMTcsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBh
dXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVk
SW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1w
KEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihO
b3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBl
KHR5cGUpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9
IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQ
cm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKQEAgLTMxMTEsNyArMzI3OCw3
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVt
cExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0
eXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmls
ZTsKQEAgLTMxMzYsNyArMzMwMywxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlw
ZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZv
clR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAg
ICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gs
IFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAg
IGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmso
dGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRB
cnJheVR5cGUodHlwZSkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlw
ZWRBcnJheVR5cGUodHlwZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGlu
Qm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVt
aXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5k
ZXggYzIyYzc3MDQyODlhYmIwODJmOWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMGUzYmU2YWY4NDJj
ZTlkMDI2MjEzNWRlZDU2YzliMGFlYmRlMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VS
ZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2Us
IGJhc2VSZWdzLnRhZ0dQUigpKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLAotICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAg
ICBiYXNlUmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVy
dHlSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsK
KyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVy
dHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKQEAgLTI1Nyw4ICsyNTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlw
ZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMiksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIElu
dmFsaWRHUFJSZWcpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkp
KQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlH
UFIsIHJlc3VsdFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0
UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBw
ZW5kKGdlbik7CkBAIC0zOTMsOCArMzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAg
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFBy
aXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICBiYXNlUmVncywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
YmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1By
aXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICBiYXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5k
UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0
Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJs
ZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERv
dWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBl
bWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2Vz
ID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBi
eVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgp
OwpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdT
aGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8s
IEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwpAQCAtNTIwLDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5
VmFsSW5mbyk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKENvbnRpZ3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNTcy
LDcgKzU3Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKQEAgLTU4MSw2ICs1ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFy
cmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQog
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbElu
Zm8pOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNjYwLDgg
KzY2Miw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRH
UFJSZWcsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0
QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0
QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsK
QEAgLTc0OCw4ICs3NTAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
KyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFs
aWRHUFJSZWcsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0
QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
OwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRS
ZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwg
cmVnVDMpLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0
aFRoaXMuYXBwZW5kKGdlbik7CkBAIC04MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAog
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIElu
dmFsaWRHUFJSZWcsCiAgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCks
IGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAg
IEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAg
ICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHViUm91dGluZS5oCmluZGV4IDg4MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2Y2Rm
YWIuLjQ5YTZkNTA2N2UyM2QyNTRhYjRmMGMzNTY5ODA3NmRhOWEwNzUwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIGNsYXNzIFZNOwogCitjbGFz
cyBBY2Nlc3NDYXNlOworCiAvLyBUaGlzIGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91
dGluZXMsIGFuZCBhbHNvIHRoZSBjbGFzcyB5b3Ugd2FudAogLy8gdG8gaW5zdGFudGlhdGUgZGly
ZWN0bHkgaWYgeW91IGhhdmUgYSByb3V0aW5lIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhl
bHAgZnJvbSB0aGUgR0MuIElmIGluIGRvdWJ0LCB1c2Ugb25lIG9mIHRoZSBvdGhlciBzdHViIHJv
dXRpbmVzLiBCdXQKQEAgLTU2LDcgKzU4LDcgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAg
IH0KICAgICAKICAgICB2aXJ0dWFsIH5KSVRTdHViUm91dGluZSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBhYm91dFRvRGllKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFib3V0VG9EaWUoVk0mKSB7IH0K
ICAgICAKICAgICAvLyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgaXMgY29weWFibGUsIGJ1dCBhdCB0
aGUgY29zdCBvZiByZWZlcmVuY2UKICAgICAvLyBjb3VudGluZyBjaHVybi4gUmV0dXJuaW5nIGEg
cmVmZXJlbmNlIGlzIGEgZ29vZCB3YXkgb2YgcmVkdWNpbmcKQEAgLTk4LDYgKzEwMCw4IEBAIGNs
YXNzIEpJVFN0dWJSb3V0aW5lIHsKICAgICAvLyBkZXN0cm95ZWQuCiAgICAgdmlydHVhbCBib29s
IHZpc2l0V2VhayhWTSYpOwogCisgICAgdmlydHVhbCBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
LmNwcAppbmRleCAxZjc2MDY4NjI3M2RkYTgxY2JiNmQwMWNkMjFkZDA5ODljYzZlMmI4Li40NDcw
NTViZmU4YWJlZmFhNTZmZTc4ZTgwNjhkMmNjNjY4OTMyM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nh
c2UuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJGdWxsQ29kZU9yaWdpbi5oIgpAQCAtNjcsNyArNjgsNyBAQCBQb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZVJlZiwgVk0m
IHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lLAogICAgIENh
bGxMaW5rSW5mbyYgaW5mbywgY29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNl
cywKICAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzKQotICAgIDogR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KGNvZGVSZWYsIHZtLCB7IH0pCiAgICAgLCBtX3ZhcmlhbnRzKGNhc2VzLnNpemUoKSkKICAgICAs
IG1fZmFzdENvdW50cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggMzU5M2NjZTg4NjA4ODAxODM0NmE4MDhlNWY4NjQ3ODcxYTQ0
MWIyOS4uMDFkOTJjMWI4ZjJjY2Q1Y2U0MDg0MjQxM2NlNDI2ZWE0M2ZlNmFiZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC03MSw4ICs3MSwxMCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElD
Q2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVy
bmFsUHRyVGFnPiBjYWxsKQorc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVh
ZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCiB7Cisg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgcmV0dXJuIHN0dWJJbmZv
Lm1fc2xvd09wZXJhdGlvbi5yZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCk7CiAjaWYgRU5BQkxF
KEZUTF9KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJ
VCkgewogICAgICAgICBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4gdGFyZ2V0ID0gTWFjcm9B
c3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PEpJVFRodW5rUHRyVGFnPihjYWxsKTsKQEAgLTEwNSw2
ICsxMDcsMTUgQEAgdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaENhbGwoY2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRy
VGFnPigpKTsKIH0KIAorc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVy
bmFsUHRyVGFnPiBjYWxsLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1
bmN0aW9uKQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAg
c3R1YkluZm8ubV9zbG93T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3Bl
cmF0aW9uUHRyVGFnPigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKK30KKwog
ZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7CiAgICAgR2l2ZVVwT25DYWNoZSwKICAgICBSZXRyeUNh
Y2hlTGF0ZXIsCkBAIC0yMDksNyArMjIwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAg
ICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBjb25z
dCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZSB8fCBraW5k
ID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2Fz
ZTsKIAogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlQ2VsbCkpIHsKQEAgLTIxOSw3ICsy
MzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICAgICAgYm9v
bCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3Ro
KHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxsKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5j
dGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0QXJyYXlM
ZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hl
TGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIyNywxMCArMjM4LDExIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNl
OjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGgsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZUNlbGwpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5z
ZXQgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpV
bnNldAorICAgICAgICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3Ry
aW5nTGVuZ3RoKHN0dWJJbmZvKSkgewogICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRl
ZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU3RyaW5nTGVuZ3RoKHN0dWJJbmZv
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1
bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0
ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRTdHJpbmdMZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI4
MiwxMiArMjk0LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAgICAm
JiAhc2xvdC53YXRjaHBvaW50U2V0KCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5u
ZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkKICAgICAgICAgICAgICAgICAmJiAhbG9hZFRh
cmdldEZyb21Qcm94eSkgewotCiAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5s
aW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUFjY2VzcyhzdHViSW5mbywg
c3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZ2Vu
ZXJhdGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkdldEJ5U2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5
Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkp
OworICAgICAgICAgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRCeUlk
U2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVy
OwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0MzYsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1w
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
cHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAg
ICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAg
ICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywg
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NTAsNyBAQCB2b2lkIHJl
cGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNWYWx1ZSBiYQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBraW5kKSA9PSBH
aXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9u
KGtpbmQpKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihraW5kKSk7
CiB9CiAKIApAQCAtNTI5LDcgKzU0MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiAgICAg
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNlVmFsdWUu
Y2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2Nr
LCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTQwLDcgKzU1MSw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kCiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2UsIEpT
VmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBpZiAodHJ5
Q2FjaGVBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlLCBpbmRleCwg
c3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25H
ZXRCeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmlj
KTsKIH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNv
bnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2luZCBwdXRLaW5kKSAtPiBkZWNsdHlwZSgm
b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkKQEAgLTYzNiw3ICs2NDcsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jawogICAgICAgICBpZiAoaXNQcm94eSAmJiAocHV0S2luZCA9PSBQdXRL
aW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQ
cml2YXRlRmllbGREZWZpbmUpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJl
ZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmJhc2UoKSA9PSBi
YXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CiAgICAgICAgICAgICBpZiAoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpFeGlzdGluZ1Byb3BlcnR5KSB7CkBAIC02NTgs
NyArNjY5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9w
ZXJ0eVJlcGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRTZWxmUGF0Y2gsIG9sZFN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQ
dXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5k
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2Uo
bG9ja2VyLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0
ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTIsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jawogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
SW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODE1
LDcgKzgyNiw3IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0QnlJ
RChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0
S2luZCkpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9u
KHNsb3QsIHB1dEtpbmQpKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
RGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQpAQCAt
ODQ2LDcgKzg1Nyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChvbGRT
dHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVM
YXRlcjsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAg
ICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3QuaXNE
ZWxldGVIaXQoKSkgewogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKQEAgLTg3NCw3ICs4ODUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwog
ICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJs
b2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODkxLDkgKzkwMiw5IEBAIHZv
aWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAg
ICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xh
c3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpO
b3JtYWwpCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMp
OworICAgICAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJp
Yyk7CisgICAgICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKICAg
ICB9CiB9CiAKQEAgLTkzNyw3ICs5NDgsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsK
ICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwog
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJl
cGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAg
IHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLmluaXRJbkJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTg0LDcgKzk5NSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKIAogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCisgICAgICAgIFJlZjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAgICAgdm0s
IGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6Oklu
TWlzcywgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBpbnZh
bGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBwcm9wZXJ0
eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOwpAQCAtOTkzLDcgKzEwMDQsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xv
dC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMDA3LDcgKzEwMTgsNyBAQCB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KgogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNo
ZUluQnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1l
LCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25JbkJ5SWQpOworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlk
KTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJh
bmQoCkBAIC0xMDMyLDcgKzEwNDMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRydWU7
CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNl
LCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7
CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hl
Y2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKIAogICAg
ICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNl
KSk7CiAKQEAgLTEwNDAsNyArMTA1MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVj
a1ByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTA1NCw3ICsxMDY1LDcgQEAgdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5
Q2FjaGVDaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVj
dCwgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3Bl
cmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKApAQCAtMTA5MSw3ICsxMTAyLDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICBi
b29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQ
cml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVu
dCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJs
b2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIFJlZjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZt
LCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKIAogICAg
ICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNl
KSk7CiAKQEAgLTEwOTksNyArMTExMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJp
dmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVu
dCwgaXNCYXNlUHJvcGVydHkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xMTEzLDcgKzExMjQsNyBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2
YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAg
ICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25D
YWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMp
OworICAgICAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAK
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMTMzLDcg
KzExNDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAog
ICAgICAgICAKICAgICAgICAgSlNDZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8
QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgcHJvdG90eXBlVmFsdWUpOwogICAgICAgICBpZiAocHJv
dG90eXBlKSB7CiAgICAgICAgICAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
dmFsdWUpKSB7CkBAIC0xMTY4LDkgKzExNzksMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlSW5zdGFuY2VPZigKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoSnVtcCgKLSAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCi0gICAg
ICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisg
ICAgICAgICAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gcmVzdWx0LmNvZGUoKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVt
cCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAorICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApAQCAt
MTE4NSw3ICsxMjAwLDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKIHsKICAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKHRyeUNhY2hlSW5z
dGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFs
dWUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlv
bkluc3RhbmNlT2ZHZW5lcmljKTsKIH0KIAogc3RhdGljIHZvaWQgbGlua1Nsb3dQYXRoVG8oVk0m
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiBjb2RlUmVmKQpAQCAtMTIwMiw3ICsxMjE3LDcgQEAgc3RhdGljIHZv
aWQgbGlua1Nsb3dGb3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVu
ayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICBsaW5rU2xvd1BhdGhU
byh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRT
bG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7
CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3Jl
YXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkpOwogfQogCiBzdGF0aWMgSlNDZWxsKiB3ZWJBc3Nl
bWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQpAQCAtMTMyMCw3ICsxMzM1LDcgQEAgc3RhdGljIHZv
aWQgbGlua1ZpcnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJ
bmZvJiBjYWxsTGlua0kKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8p
OwogICAgIHJldmVydENhbGwodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBj
YWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmly
dHVhbFRodW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklU
U3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKICAgICBjYWxsTGlu
a0luZm8uc2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0ICsxNjU2LDI2IEBA
IHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsK
LSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7
Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEdldEJ5
S2luZDo6Tm9ybWFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpUcnk6CisgICAgY2FzZSBHZXRCeUtp
bmQ6OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlLaW5kOjpEaXJlY3Q6CisgICAgICAgIElubGlu
ZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICBjYXNl
IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1l
QnlJZDoKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogfQogCiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHVzaW5nIEZ1bmN0aW9uVHlwZSA9IGRlY2x0eXBl
KCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwotICAgIEZ1bmN0aW9uVHlw
ZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJl
YWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
bikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVu
Y3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdl
dChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbikuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGltaXplZEZ1bmN0aW9uOwog
ICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwg
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpCiAg
ICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXpl
OwpAQCAtMTY2NSw0NSArMTY5Miw0OCBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6ZWRG
dW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9
CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIElubGluZUFjY2Vzczo6
cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9u
KTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOworICAgIElubGluZUFjY2Vzczo6cmVz
ZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKIHsKICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkK
LSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgICAg
IHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVsc2UKLSAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKKyAgICAgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAg
IElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUo
Y29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVt
cChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCitzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJs
ZUp1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
IHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVt
cCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxvY2st
PnVzZVNoYXJlZElDKCkpCisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHN0dWJJbmZvLnNs
b3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICBlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHVi
SW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5B
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVzZXRQ
YXRjaGFibGVKdW1wKHN0dWJJbmZvKTsKKyAgICByZXNldFBhdGNoYWJsZUp1bXAoY29kZUJsb2Nr
LCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlv
bik7CisgICAgcmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAg
IElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUo
Y29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExv
Y2F0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwor
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgSlNPYmplY3QqIGNhbGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
aW5kZXggMzEzNzlkYzRlNWE5ZGMyZGM2ZWE0OTMxNzc5NDcyNmEwMDIwMzUxYS4uM2ExOWZkMzY1
NDlkMWE4NDgwOWY5NGRhZGEyZGZiZTU3MDAwZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1
YkluZm8mKTsKK3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJ
bmZvJik7CiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayos
IENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggZDk0OTdlYmQ0ZjBiYTZmNjI1NzlkY2Q1NDIzYTdiOTg0
N2U5NDRlMi4uN2UwZTU5MzI3NDViOGFhZWRiOTkwZDk4ZGE2NjI3Nzg0MzVjZTIzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzYsNiArNTM2
LDggQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29s
LCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
Qm9vbCwgdXNlVG9wTGV2ZWxBd2FpdCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtl
eXdvcmQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS4iKSBcCiAgICAgdihCb29sLCB2ZXJi
b3NlRXhlY3V0YWJsZVBvb2xBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisg
ICAgdihCb29sLCB1c2VTaGFyZWRJQywgaXNBUk02NCgpLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAg
ICB2KEJvb2wsIHVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBudWxs
cHRyKSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggNjBmOThmNTYzYTc2ZWRlZGE1MmEwNzI4ODNlNGJhZmViZDcyZGVl
NS4uNWYxNDVlZjM3ZjFkNDc1MzI0NTJmODQ2OTU3NDQ5ODMwZWVjMTMyNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVk
ZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQmln
SW50T2JqZWN0LmgiCkBAIC01NjYsNiArNTY3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAj
ZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25U
cmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlv
blRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIG1fc2hhcmVkSklUU3R1
YnMgPSBtYWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJTZXQ+KCk7CiAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAKQEAgLTY0OSw2ICs2NTEsMTAgQEAgVk06On5WTSgpCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIFZN
TWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyNpZiBFTkFCTEUo
SklUKQorICAgIG1fc2hhcmVkSklUU3R1YnMgPSBudWxscHRyOworI2VuZGlmCiB9CiAKIHZvaWQg
Vk06OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2b2lkKiBhcmd1bWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDJkM2NkNDY2ODg4YmNlM2FmYjVhODg5MzYx
NzI3NThmMThjOTNmYTYuLjRkZTk1ZjYzOGIxZTIzODU5YTFiMzRlOTE3ZGM5M2FhMmY5ZjM1Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc0LDYgKzE3NCw3IEBAIGNsYXNz
IFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgog
Y2xhc3MgU2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRl
ckNhY2hlOwpAQCAtODQxLDExICs4NDIsMTMgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNpZiBF
TkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJzOwogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJU3R1YihUaHVua0dl
bmVyYXRvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJTZXQ+IG1fc2hhcmVk
SklUU3R1YnM7CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShGVExfSklUKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCisKICAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5hdGl2
ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429992</attachid>
            <date>2021-05-27 23:32:24 -0700</date>
            <delta_ts>2021-05-27 23:50:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527233223.patch</filename>
            <type>text/plain</type>
            <size>425129</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5lMDgwNjBjY2E3YWRkODE0
MmJkNjdkNDVjZmIwYzljODMwNGM0NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNjcgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaDoK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9u
ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhJQ0NhbGwpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRD
YWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAq
IGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2Fs
bENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6
OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1Bh
dGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICog
ZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsS2V5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5Lmg6
CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpTbG93UGF0aENhbGxLZXkpOgor
ICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aW5kaXJlY3RPZmZzZXQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6d2l0aENhbGxUYXJnZXQpOgor
ICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpoYXNoIGNvbnN0KToKKyAgICAgICAg
KiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKToKKyAgICAgICAgKiBqaXQvQ0Nh
bGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
QXJnQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaFJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaEV4dHJhUmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjpwdXNoTm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjphZGRHUFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxl
Y3Rpb246OmFkZEdQUkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdD
b2xsZWN0aW9uOjphZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJn
Q29sbGVjdGlvbjo6YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2FsY3Vs
YXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZvckFyZ3Vt
ZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJH
VU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50c0VudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRm9ySW5k
aXJlY3RDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUp
OgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291
bnQpOgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5n
R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAg
ICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZVNoYXJl
ZElDKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlk
R2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlND
OjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6
OkpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlk
R2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
SW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUp
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9y
OjpKSVRQdXRCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVElu
QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5l
cmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9h
ZEZvckFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJ
bmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFi
bGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19v
cF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2Rp
cmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXREb3Vi
bGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0xvYWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9y
YWdlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgICog
aml0L0pJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5lOjprZXlz
IGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgor
ICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVhZFB1dElDQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTbG93UGF0aENhbGwp
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEdl
dEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6cmVwYXRjaEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
RGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQpOgorICAgICAg
ICAoSlNDOjp0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRj
aENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVTZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNlT2Yp
OgorICAgICAgICAoSlNDOjpsaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0dWFs
Rm9yKToKKyAgICAgICAgKEpTQzo6cmVzZXRHZXRCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNldFBh
dGNoYWJsZUp1bXApOgorICAgICAgICAoSlNDOjpyZXNldEluQnlJRCk6CisgICAgICAgIChKU0M6
OnJlc2V0SW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlc2V0Q2hlY2tQcml2YXRlQnJhbmQp
OgorICAgICAgICAoSlNDOjpyZXNldFNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp+
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNv
bnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IGU1MTc1N2U5YjhmYzY0Mjg3ODI3YzE2ZDAyZDIxY2My
MThmYjEzMjYuLjgzY2IzNmQwNmY4MzEyYzg5NWY2YTQ5YjI1NmJiZWMzNDYyNzNlMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0yMzQsOCAr
MjM0LDggQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAg
ICBDb2RlTG9jYXRpb25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAgICAgewotICAg
ICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAgICAgICAgQVNT
RVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFTU0VSVChjYWxs
LmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQoIWNhbGwuaXNG
bGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8dGFn
PihnZXRMaW5rZXJBZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKSkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNhZGExZmMwMzRj
Yzc0MWQuLmU1YjBiMmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjRFLmgKQEAgLTIyMCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVy
PENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcg
dGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFn
IHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklUQ2FnZSgpIHx8
IGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBsb2Fk
NjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
LSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAgICAgY2Fs
bChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVCh0YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxvYWQ2NChhZGRy
ZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAg
ICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFU
ZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGxP
cGVyYXRpb24oY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVyYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVm
Zjc4MjI2MmU3MTg1Yjg3NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNzJjMzZhOGE5ZmQ0MWZkNWM0
ZDViMTFkOWI2YjQ3NTY4YjRiYzA2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3ND
YXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNz
Q2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwx
MCArMTA1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0
eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nl
c3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwz
NCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNp
dGlvbigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRp
b24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUo
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJl
LT5wcmV2aW91c0lEKCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERl
bGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQ
cml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVC
cmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZh
dGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0
UHJpdmF0ZUJyYW5kKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZh
dGVCcmFuZCgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihu
ZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52
YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIs
IGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2Fz
ZTo6fkFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsx
ODgsOSBAQCBKU09iamVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGNvbmRpdGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitS
ZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3Vs
dC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDgg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVl
UmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsK
KyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAg
ICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiAr
MTA2Myw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJl
Z3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsx
MTQ4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVn
cygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEy
MTEsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
dmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdz
KCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKQEAgLTEzMTcsNiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRo
R3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZv
R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAg
ICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVT
Y3JhdGNoR1BSKCk7CkBAIC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0
ZSk7CiB9CiAKK3ZvaWQgQWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2Fz
ZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6
CisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFy
Z3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6
CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMy
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRp
Z3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJ
bnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0
dGVyOgorICAgIGNhc2UgU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAg
Y2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgor
ICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZz
ZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7Cisg
ICAgICAgICAgICBpZiAoIWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJy
U3RydWN0dXJlID0gc3RydWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAg
ICAgICAgIGN1cnJTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50
cyh2bSwgb2Zmc2V0KCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNv
bmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3Bl
cnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsK
KyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9u
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5v
dywgd2Ugb25seSBhbGxvdyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5
Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0
dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewor
ICAgICAgICAgICAgLy8gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQg
d2UgcmVxdWlyZSB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAg
ICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1
ZS4KKworICAgICAgICAgICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1l
dDogIiwgY29uZGl0aW9uLCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0
IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVy
ZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZSh2bSk7CisgICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJh
cnJpZXI8SlNDZWxsPih2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAt
MTQxNyw3ICsxNTAyLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3Rv
QWNjZXNzQ2hhaW4pOwogCiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5
RWZmb3J0OjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxs
V2F0Y2hwb2ludChjb25kaXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9p
bnQoY29kZUJsb2NrLCBjb25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtMTU4Miw3ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRv
ZXMgdGhlIG5lY2Vzc2FyeSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4K
ICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2Nr
LT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNl
dChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGwoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRv
IHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OlNwaWxsU3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVl
KSB7CiAgICAgICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgw
Miw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAjZW5kaWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBh
Y2Nlc3MuY2FsbExpbmtJbmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAg
ICAgaWYgKG1fdHlwZSA9PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0
cyh2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0x
NzIzLDggKzE4MTQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwogCi0gICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkg
LSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2
ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9p
bnRlck9mZnNldCA9IChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0
ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbjsKKyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBj
YWxsSGFzUmV0dXJuVmFsdWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVS
ZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7
CiAKQEAgLTE4NDUsNyArMTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBw
ZW5kKGppdC5iYXJyaWVyQnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1By
b3h5Ojp0YXJnZXRPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGls
bFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0
RXhjZXB0aW9ucygpOworCisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1Rv
UHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0
KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0
ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2Vw
dGlvbnMoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2Fs
bCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRS
ZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZv
Lm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3Jh
dGNoR1BSKTsKIAogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpA
QCAtMTkzMyw2ICsyMDMzLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBp
ZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAg
ICAgICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9
IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCkBAIC0yMDMxLDYgKzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQ
Uik7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0y
MTkxLDYgKzIyOTcsMTMgQEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5
VHlwZShBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3No
YXJlZEpJVFN0dWJzKQorICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlz
KTsKKyAgICBKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYg
QVNTRVJUX0VOQUJMRUQKIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTA3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hh
cmluZyhjb25zdCBBY2Nlc3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAg
ICAvLyBXZSBkbyBub3QgY2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBp
ZiBlaXRoZXIgb2YgdGhlbSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxo
cy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhz
LmFkZGl0aW9uYWxTZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5t
X3R5cGUgIT0gcmhzLm1fdHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMu
bV9vZmZzZXQgIT0gcmhzLm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGxocy5tX3ZpYVByb3h5ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGxocy5tX3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1faWRlbnRpZmllciAhPSByaHMu
bV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRp
dGlvblNldCAhPSByaHMubV9jb25kaXRpb25TZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHN3aXRjaCAobGhzLm1fdHlwZSkgeworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFRyYW5z
aXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6
CisgICAgY2FzZSBEZWxldGVNaXNzOgorICAgIGNhc2UgUmVwbGFjZToKKyAgICBjYXNlIE1pc3M6
CisgICAgY2FzZSBHZXRHZXR0ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAgICBjYXNlIEluTWlzczoK
KyAgICBjYXNlIEFycmF5TGVuZ3RoOgorICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgorICAgIGNhc2Ug
RGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgor
ICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6Cisg
ICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9y
YWdlTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZERpcmVjdEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUlu
dDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJ
bmRleGVkVHlwZWRBcnJheVVpbnQ4Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRB
cnJheUludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVk
QXJyYXlVaW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVk
U3RyaW5nTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIEdldHRlcjoKKyAg
ICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNldHRlciByZWxpZXMgb24g
Q29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUuCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0dGVyOgorICAgIGNhc2Ug
Q3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1ZVNldHRlcjoKKyAgICBj
YXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICBpZiAobGhzZC5tX2RvbUF0dHJpYnV0
ZSB8fCByaHNkLm1fZG9tQXR0cmlidXRlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbGhzZC5tX2N1c3RvbVNsb3RCYXNlID09IHJoc2QubV9jdXN0b21TbG90QmFz
ZQorICAgICAgICAgICAgJiYgbGhzZC5tX2N1c3RvbUFjY2Vzc29yID09IHJoc2QubV9jdXN0b21B
Y2Nlc3NvcjsKKyAgICB9CisKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjogeworICAgICAgICBh
dXRvJiBsaHNkID0gbGhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAg
IGF1dG8mIHJoc2QgPSByaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAg
ICAgcmV0dXJuIGxoc2QubV9pbnRyaW5zaWNGdW5jdGlvbiA9PSByaHNkLm1faW50cmluc2ljRnVu
Y3Rpb247CisgICAgfQorCisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOiB7CisgICAgICAg
IGF1dG8mIGxoc2QgPSBsaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsKKyAgICAg
ICAgYXV0byYgcmhzZCA9IHJocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAg
ICAgICByZXR1cm4gbGhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCA9PSByaHNkLm1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0CisgICAgICAgICAgICAmJiBsaHNkLm1fbW9kdWxlRW52aXJvbm1lbnQg
PT0gcmhzZC5tX21vZHVsZUVudmlyb25tZW50CisgICAgICAgICAgICAmJiBsaHNkLm1fc2NvcGVP
ZmZzZXQgPT0gcmhzZC5tX3Njb3BlT2Zmc2V0OworICAgIH0KKworICAgIGNhc2UgSW5zdGFuY2VP
ZkhpdDoKKyAgICBjYXNlIEluc3RhbmNlT2ZNaXNzOgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVy
aWM6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4o
KTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4oKTsK
KyAgICAgICAgcmV0dXJuIGxoc2QubV9wcm90b3R5cGUgPT0gcmhzZC5tX3Byb3RvdHlwZTsKKyAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmlu
ZGV4IGJkZDFiMjM3ZDYxOGEyY2NlODI3MjBmNzJjYTc1MzdkZTNmYTcwNjguLjljMmZiM2VhNmFk
MjhiMTc0NGMwOTc3ODhkYzY0YjM1NWI0ZDBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMjgsMTAgKzI4LDEzIEBACiAjaWYgRU5BQkxFKEpJ
VCkKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVi
Um91dGluZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQb2x5UHJvdG9BY2Nlc3NDaGFp
bi5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTc5LDcgKzgyLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQWNj
ZXNzQ2FzZSk7CiAvLyBXZSB3aWxsIHNvbWV0aW1lcyBidWZmZXIgY29tbWl0dGVkIEFjY2Vzc0Nh
c2VzIGluIHRoZSBQb2x5bW9ycGhpY0FjY2VzcyBvYmplY3QgYmVmb3JlIGdlbmVyYXRpbmcKIC8v
IGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgcmVnZW5lcmF0ZSBvbmNlIHdlJ3ZlIGFjY3Vt
dWxhdGVkIChob3BlZnVsbHkpIG1vcmUgdGhhbiBvbmUgbmV3CiAvLyBBY2Nlc3NDYXNlLgotY2xh
c3MgQWNjZXNzQ2FzZSB7CitjbGFzcyBBY2Nlc3NDYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEFjY2Vzc0Nhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hF
QVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIHB1YmxpYzoKICAgICBlbnVtIEFjY2Vzc1R5cGUg
OiB1aW50OF90IHsKQEAgLTE0NywxOSArMTUwLDE5IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2VUeXBlPihuZXcgQWNjZXNzQ2Fz
ZVR5cGUoYXJndW1lbnRzLi4uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsCisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsCiAg
ICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBSZWZQdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBz
dGF0aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYs
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZURl
bGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVD
aGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFjY2Vz
c0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKICAgICBBY2Nlc3NUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KQEAgLTI1MywxMSArMjU2LDM5IEBAIGNsYXNzIEFjY2Vzc0Nhc2Ugewog
I2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVT
dHViSW5mbyYpIHsgfQogI2VuZGlmCi0gICAgCisKKyAgICB2b2lkIGNvbGxlY3RJbnZhcmlhbnRz
Rm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIENvZGVCbG9jayopOworCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2go
bV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90eXBlKSwgbV92
aWFQcm94eSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBlcXVhbEluU2hhcmluZyhjb25zdCBBY2Nlc3NDYXNlJiwgY29uc3QgQWNjZXNzQ2Fz
ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUq
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJik7Ci0gICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsKLSAg
ICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKSA9IGRlZmF1bHQ7CisgICAgQWNj
ZXNzQ2FzZShBY2Nlc3NDYXNlJiYgb3RoZXIpCisgICAgICAgIDogbV90eXBlKFdURk1vdmUob3Ro
ZXIubV90eXBlKSkKKyAgICAgICAgLCBtX3N0YXRlKFdURk1vdmUob3RoZXIubV9zdGF0ZSkpCisg
ICAgICAgICwgbV92aWFQcm94eShXVEZNb3ZlKG90aGVyLm1fdmlhUHJveHkpKQorICAgICAgICAs
IG1fb2Zmc2V0KFdURk1vdmUob3RoZXIubV9vZmZzZXQpKQorICAgICAgICAsIG1fc3RydWN0dXJl
KFdURk1vdmUob3RoZXIubV9zdHJ1Y3R1cmUpKQorICAgICAgICAsIG1fY29uZGl0aW9uU2V0KFdU
Rk1vdmUob3RoZXIubV9jb25kaXRpb25TZXQpKQorICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNz
Q2hhaW4oV1RGTW92ZShvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKSkKKyAgICAgICAgLCBt
X2lkZW50aWZpZXIoV1RGTW92ZShvdGhlci5tX2lkZW50aWZpZXIpKQorICAgIHsgfQorCisgICAg
QWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUob3Ro
ZXIubV90eXBlKQorICAgICAgICAsIG1fc3RhdGUob3RoZXIubV9zdGF0ZSkKKyAgICAgICAgLCBt
X3ZpYVByb3h5KG90aGVyLm1fdmlhUHJveHkpCisgICAgICAgICwgbV9vZmZzZXQob3RoZXIubV9v
ZmZzZXQpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUob3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAg
ICwgbV9jb25kaXRpb25TZXQob3RoZXIubV9jb25kaXRpb25TZXQpCisgICAgICAgICwgbV9wb2x5
UHJvdG9BY2Nlc3NDaGFpbihvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICAs
IG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZpZXIpCisgICAgeyB9CiAKICAgICBBY2Nlc3ND
YXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNzQ2FzZSYpID0gZGVsZXRlOwogICAgIHZvaWQgcmVz
ZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1vcmRpYWw7IH0KQEAgLTI3NSw3ICszMDYsNyBAQCBj
bGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1
c2Ugb2YgaG93IEFjY2Vzc0Nhc2UgcHV0cyBwb3N0LWdlbmVyYXRpb24gdGhpbmdzIGludG8gaXRz
ZWxmLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0
NTYKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CiAKICAgICAvLyBQ
ZXJmb3JtIGFueSBhY3Rpb24gdGhhdCBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGVuZCBv
ZiB0aGUgZXBvY2ggaW4gd2hpY2ggdGhlIGNhc2UKICAgICAvLyB3YXMgY3JlYXRlZC4gUmV0dXJu
cyBhIHNldCBvZiB3YXRjaHBvaW50IHNldHMgdGhhdCB3aWxsIG5lZWQgdG8gYmUgd2F0Y2hlZC4K
QEAgLTMxNSw2ICszNDYsMTY4IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAorY2xhc3MgU2hhcmVhYmxlSklUU3R1YlJvdXRp
bmUgZmluYWwgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgeworcHVibGljOgorICAgIFNoYXJlYWJs
ZUpJVFN0dWJSb3V0aW5lKFZNJiB2bSwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYm
IGtleXMpCisgICAgICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKKyAgICAgICAgLCBtX3ZtKHZt
KQorICAgICAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gJm1fa2V5czsgfQorCisgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiBtX2tleXM7Cit9OworCitjbGFzcyBTaGFyZWRKSVRTdHViU2V0IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsKK3B1YmxpYzoKKyAgICBT
aGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYga2V5cykKKyAgICB7CisgICAg
ICAgIEhhc2hlciBoYXNoZXI7CisgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykKKyAgICAg
ICAgICAgIFdURjo6YWRkKGhhc2hlciwga2V5LT5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFz
aGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0cnVjdCBL
ZXkgeworICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0OworCisgICAgICAgICAgICBLZXkoR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BSUmVnIGV4dHJhR1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIEpJVFN0dWJSb3V0aW5lKiB3cmFw
cGVkKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQpCisgICAgICAgICAgICAg
ICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgICAgICAgICAsIG1fdmFsdWVHUFIodmFs
dWVHUFIpCisgICAgICAgICAgICAgICAgLCBtX2V4dHJhR1BSKGV4dHJhR1BSKQorICAgICAgICAg
ICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgICAgICAgICAsIG1f
dXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAg
ICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgICAgICAgICAg
OiBtX3dyYXBwZWQoYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSkpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nh
c3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorCisgICAg
ICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBi
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBhLm1fd3JhcHBlZCA9PSBi
Lm1fd3JhcHBlZAorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fYmFzZUdQUiA9PSBiLm1fYmFz
ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0gYi5tX3ZhbHVlR1BS
CisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1fZXh0cmFHUFIKKyAg
ICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9zdHViSW5mb0dQUgor
ICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lz
dGVyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYS5tX3dyYXBwZWQgIT0gYi5tX3dyYXBwZWQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEpJVFN0dWJSb3V0aW5lKiBtX3dyYXBwZWQgeyBudWxscHRyIH07CisgICAg
ICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fdmFsdWVHUFI7
CisgICAgICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX3N0
dWJJbmZvR1BSOworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAg
ICAgICB9OworCisgICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxLZXk+OworCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYgcCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFwLm1fd3JhcHBlZCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKCpwLm1f
d3JhcHBlZC0+a2V5cygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0cnVj
dCBTZWFyY2hlciB7CisgICAgICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hlcikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkSklUU3R1YlNldDo6aGFzaChzZWFyY2hl
ci5tX2tleXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBIYXNoOjpLZXkgYSwgY29uc3QgU2VhcmNoZXImIGIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAgICAg
ICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAgICAg
ICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAgICAg
ICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAgICAg
ICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF2ZWMgPSAqYS5tX3dyYXBwZWQtPmtleXMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYnZlYyA9IGIubV9rZXlzOworICAgICAgICAg
ICAgICAgICAgICBpZiAoYXZlYy5zaXplKCkgPT0gYnZlYy5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJ2ZWMuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBY2Nlc3NDYXNl
OjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2luZGV4XSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBHUFJSZWcgbV9iYXNlR1BS
OworICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7
CisgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBSZWdpc3RlclNldCBtX3Vz
ZWRSZWdpc3RlcnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mIG1fa2V5czsKKyAgICB9OworCisgICAgc3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKCpzdHViLT5rZXlz
KCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6
S2V5IGtleSwgSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdm9p
ZCBhZGQoSGFzaDo6S2V5JiYga2V5KQorICAgIHsKKyAgICAgICAgbV9zdHVicy5hZGQoa2V5KTsK
KyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShKSVRTdHViUm91dGluZSogc3R1YikKKyAgICB7Cisg
ICAgICAgIGF1dG8gaXRlciA9IG1fc3R1YnMuZmluZDxQb2ludGVyVHJhbnNsYXRvcj4oc3R1Yik7
CisgICAgICAgIGlmIChpdGVyICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICBtX3N0dWJz
LnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBKSVRTdHViUm91dGluZSogZmluZChjb25zdCBT
ZWFyY2hlciYgc2VhcmNoZXIpCisgICAgeworICAgICAgICBhdXRvIGVudHJ5ID0gbV9zdHVicy5m
aW5kPFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9yPihzZWFyY2hlcik7Cisg
ICAgICAgIGlmIChlbnRyeSAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBIYXNoU2V0PEhhc2g6OktleSwgSGFzaCwgSGFzaDo6S2V5VHJhaXRzPiBtX3N0dWJz
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmluZGV4IGZjOThmNGU0MDBiOGZjNmNjYjg4ZGYwY2Fh
NGM1YTU1NTM2NzljODQuLmIyMjZmYjE2ZjVkYjc0NGY3ZmU1NTZiZWM3NThkN2NlYTA0ZTRhYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKQEAgLTI0NCwx
MCArMjQ0LDggQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
c2V0VXAoQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXAsIENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXIsIEpJVEFycmF5
TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQorICAgIHZvaWQgc2V0VXAoQ29kZUxv
Y2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklU
QXJyYXlNb2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCiAgICAgewotICAgICAgICB0
aGlzLT5ub3RJbmRleEp1bXAgPSBub3RJbmRleEp1bXA7Ci0gICAgICAgIHRoaXMtPmJhZFR5cGVK
dW1wID0gYmFkVHlwZUp1bXA7CiAgICAgICAgIHRoaXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNl
cHRpb25IYW5kbGVyOwogICAgICAgICB0aGlzLT5kb25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKICAg
ICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRo
VGFyZ2V0OwpAQCAtMjYyLDggKzI2MCwyMSBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERF
Q0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCi0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFs
UHRyVGFnPiBub3RJbmRleEp1bXA7Ci0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBiYWRUeXBlSnVtcDsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJh
dGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fc2xvd09wZXJhdGlv
bik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9ub3RJbmRleEp1bXBUYXJnZXQp
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9iYWRUeXBlSnVtcFRhcmdldCk7IH0K
KworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3BlcmF0aW9uOworCisg
ICAgdW5pb24geworICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4gbV9ub3RJbmRleEp1bXA7CisgICAgfTsKKyAgICB1bmlvbiB7CisgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2JhZFR5cGVKdW1wVGFy
Z2V0OworICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG1fYmFkVHlw
ZUp1bXA7CisgICAgfTsKKwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4gZG9uZVRhcmdldDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNzczMjlmM2E0MWUwNGExYzcyZGI2MmMxZDU4ZjRmNWMz
NjM5NzI1MS4uODFhYjk3ZmJkODE4YjFmYjdjMWZiZmVkNDAyNDlmYzkzNzE2M2Y4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNDIwLDYgKzQyMCwx
MSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB7CiAgICAgICAgIHJl
dHVybiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAgICAgfQorCisgICAgYm9v
bCB1c2VTaGFyZWRJQygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSklUQ29kZTo6dXNl
U2hhcmVkSUMoaml0VHlwZSgpKTsKKyAgICB9CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjAyZWZjNTQ2
NjYxOTg1NGRhYWE2MjBjNjk3ZmYxY2ZmN2NmMzgzNi4uNmEzMGU2MzhlMjAwY2EwODBlMTRiYWFk
ODdhZThlMTY0ZmY2OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIG1fY3VzdG9tU2xvdEJhc2Uuc2V0TWF5QmVOdWxs
KHZtLCBvd25lciwgY3VzdG9tU2xvdEJhc2UpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAgIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBj
dXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwKICAgICBPcHRpb25hbDxET01B
dHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKQEAgLTYxLDE4ICs2MSwxOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNl
dCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBjdXN0
b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKICAgICByZXN1bHQt
Pm1fZG9tQXR0cmlidXRlID0gZG9tQXR0cmlidXRlOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nl
c3NvciA9IGN1c3RvbUdldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihj
dXN0b21HZXR0ZXIpIDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsCitS
ZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsCiAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluLCBib29sIHZpYVByb3h5LCAK
ICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0dGVyLCBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UpCiB7CiAgICAgQVNTRVJUKHR5cGUgPT0gU2V0dGVyIHx8IHR5
cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21BY2Nlc3NvclNldHRlcik7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNl
dCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBudWxscHRyLCBjdXN0b21TbG90
QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlk
ZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBudWxs
cHRyLCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKICAg
ICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21TZXR0ZXIgPyBGdW5jdGlvblB0cjxD
dXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tU2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTkxLDkgKzkxLDkgQEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZShjb25zdCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlJiBvdGgKICAg
ICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmlidXRlOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAor
UmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0
U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTM5LDYgKzEzOSw4IEBAIHZvaWQg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlLCBjb25zCiAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5i
YXNlUmVncygpKTsKICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgIGlmIChzdHVi
SW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hH
UFIpOwogCiAgICAgR1BSUmVnIHBhcmFtQmFzZUdQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0yMjMs
NiArMjI1LDExIEBAIHZvaWQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRl
cihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zCiAgICAgZm9yIChGUFJSZWcgcmVn
IDogZnBTY3JhdGNoKQogICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZyk7
CiAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlZ2lz
dGVyc1RvTm90U2F2ZUZvckNDYWxsKCkpOworI2lmIENQVShBUk02NCkKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFy
ZWRJQygpKQorICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KEFSTTY0UmVnaXN0
ZXJzOjpscik7CisjZW5kaWYKIAogICAgIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zIHBhcmFtcyhz
dGF0ZS5tX3ZtLCBXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBT
Y3JhdGNoKSk7CiAgICAgc25pcHBldC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIHBhcmFtcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaAppbmRleCA4NzNlN2MzNTg4OGViM2IxMjFkYmZkN2FmMDZlMmNhYmViN2QzM2Iy
Li4xMDBmYjI3ZWU4NTY2MTZmYjQxODQyNWVjMmM3MjM0OTRhNGFlZjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmgKQEAgLTUzLDE3ICs1MywxNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGZpbmFs
IDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogCiAgICAgdm9pZCBlbWl0RE9NSklUR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiwg
R1BSUmVnIGJhc2VGb3JHZXRHUFIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAg
ICAgIFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRlciwKICAgICAg
ICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0
aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCisg
ICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwK
ICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYsIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwKICAgICAgICAgRnVuY3Rp
b25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciA9IG51bGxwdHIsIEpTT2Jq
ZWN0KiBjdXN0b21TbG90QmFzZSA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmlu
dFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBj
bG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkdldHRlclNldHRlckFjY2Vzc0Nhc2UoKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNw
cAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2JhZTk2ZmIzMjFhLi5lOTgxZDY3
NWQxYmM1ZGQ5YWQ2OTJhMzk1MjY3OWUyYzI4OGExNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAtMjE2LDYgKzIxNiw4IEBAIEFM
V0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVnaXN0ZXIoU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VUYWdHUFIp
OwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKICNlbmRpZgorICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIEdQUlJlZyBzY3JhdGNo
ID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAgIGlmIChhbGxvY2F0b3IuZGlk
UmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CkBAIC0zNzks
OCArMzgxLDUwIEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICByZXR1cm4gbGlua2VkQ29k
ZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vz
c05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gdGFy
Z2V0KQogeworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1
YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Q0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAv
LyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUg
anVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5jaENv
bXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5m
by5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6
OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0Jy
YW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgp
KTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKKworICAgIEZJTkFMSVpFX0NP
REUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQg
anVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNz
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit7CisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAvLyBJZiBtX2NvZGVQdHIgaXMgcG9p
bnRpbmcgdG8gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uLCB0aGlzIG1lYW5zIHRoYXQg
SW5saW5lQWNjZXNzIGNvZGUgaXMgbm90IGEgc3R1YiBvbmUuCisgICAgICAgIC8vIFdlIHJld3Jp
dGUgdGhpcyB3aXRoIHRoZSBzdHViLWJhc2VkIGRpc3BhdGNoaW5nIGNvZGUgb25jZSwgYW5kIGNv
bnRpbnVlIHVzaW5nIGl0IHVudGlsIHdlIHJlc2V0IHRoZSBjb2RlLgorICAgICAgICBpZiAoc3R1
YkluZm8ubV9jb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkgPT0gc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpIHsKKyAgICAgICAgICAgIENDYWxsSGVs
cGVycyBqaXQ7CisKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cigmc3R1YkluZm8pLCBzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgIGpp
dC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgICAgICAgICBib29s
IG5lZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRp
b25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisKKyAgICAgICAgICAgIEZJTkFM
SVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgc3R1
YiBjYWxsIik7CisgICAgICAgIH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAg
IGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CkBAIC0zOTQsNiArNDM4LDI2IEBAIHZvaWQgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklu
bGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7CiB9CiAKK3ZvaWQgSW5saW5lQWNj
ZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9
IGppdC5qdW1wKCk7CisKKyAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNh
dXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisg
ICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxp
bmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNv
ZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlv
bk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJU
KGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKworICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZl
ciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOworfQor
Cit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUNvZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykK
K3sKKyAgICByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJs
b2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4ZjIyNjQwNmM3
ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQuLmViNzZmZjM5NmQyODhlY2RiZTNhZjEwMTdmMzI0M2Fh
YTc0NDBhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmgKQEAgLTEwNCwxMCArMTA0LDE0IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3Rh
dGljIGJvb2wgaXNDYWNoZWFibGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJy
YXkqKTsKICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJl
U3R1YkluZm8mLCBKU0FycmF5Kik7Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChT
dHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
Pik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1Yklu
Zm8mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVN0cmluZ0xlbmd0aChT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogCisgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9p
ZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2
b2lkIHJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5B
Y2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKKwogICAgIC8vIFRoaXMgaXMg
aGVscGZ1bCB3aGVuIGRldGVybWluaW5nIHRoZSBzaXplIG9mIGFuIElDIG9uCiAgICAgLy8gdmFy
aW91cyBwbGF0Zm9ybXMuIFdoZW4gYWRkaW5nIGEgbmV3IHR5cGUgb2YgSUMsIGltcGxlbWVudAog
ICAgIC8vIGl0cyBwbGFjZWhvbGRlciBjb2RlIGhlcmUsIGFuZCBsb2cgdGhlIHNpemUuIFRoYXQg
d2F5IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Rh
bmNlT2ZBY2Nlc3NDYXNlLmNwcAppbmRleCAyMWYyNDUzYmFjN2FmYWU3NzI0MWNiMDRhMjVkMjBm
ZGQ5OTNiYzM0Li45OTQ5MDhkNjhiNjJiYmUwNmUwOWFhMGIzN2U3N2MxMTBjNjY5MmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNj
ZXNzQ2FzZS5jcHAKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCitS
ZWY8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
SlNPYmplY3QqIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBwcm90b3R5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIHN0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBwcm90b3R5cGUpKTsKIH0KIAogdm9pZCBJbnN0YW5jZU9mQWNjZXNz
Q2FzZTo6ZHVtcEltcGwoUHJpbnRTdHJlYW0mIG91dCwgQ29tbWFQcmludGVyJiBjb21tYSkgY29u
c3QKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6ZHVtcEltcGwo
UHJpbnRTdHJlYW0mIG91dCwgQ29tbWFQcmludGVyJiBjb21tYSkgY29uc3QKICAgICBvdXQucHJp
bnQoY29tbWEsICJwcm90b3R5cGUgPSAiLCBKU1ZhbHVlKHByb3RvdHlwZSgpKSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBj
b25zdAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0
CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPiByZXN1bHQobmV3
IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0
YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKaW5kZXggNjllMmIzMWFhOTRh
NTlkMzBkZmI0Y2FmMjI0NDk5ZDYwMjc3ODQ3Yy4uYWQ3MWU2OTQyZjQ0OTJmYThhYmRlYWFjN2Vh
MGZjNDZiNzA3OWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKQEAgLTM0LDE1ICszNCwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEluc3RhbmNlT2ZBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nh
c2UgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBBY2Nlc3NDYXNlOworICAgIGZyaWVuZCBj
bGFzcyBBY2Nlc3NDYXNlOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAg
ICBWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiwKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSk7CiAgICAgCiAg
ICAgSlNPYmplY3QqIHByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgp
OyB9CiAgICAgCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYp
IGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNv
bnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogICAg
IAogICAgIH5JbnN0YW5jZU9mQWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAKaW5kZXggNjMwMWRjMjMzNjkzM2Q2NzZjM2JlOWU5MGM2MDE4OWExMzE3MzgxNy4uMzRi
MWE4MDI3ODg5NWY3MWFiZmU2ODI5NjljZGU0MzBmMzJlN2Q2MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlLmNwcApAQCAtMzksMTggKzM5LDE4IEBAIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6Oklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAg
bV9pbnRyaW5zaWNGdW5jdGlvbi5zZXQodm0sIG93bmVyLCBpbnRyaW5zaWNGdW5jdGlvbik7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
OjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGlu
dHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBl
QWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRy
aW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFj
Y2Vzc0NoYWluKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRyaW5zaWNH
ZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUs
IGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNz
Q2hhaW4pKSk7CiB9CiAKIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6On5JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDYyODcwMDQx
NTg3MzFkNWI4ZmViNTA2MzUzZGU1NTliNjQ0NzY0NDYuLjQ3YWYxYTJiZjFkZDZjYjkxMzYyNjMy
MTAxOTNiNDdhM2ZmMmFiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaApAQCAtNDIsOSArNDIsOSBA
QCBjbGFzcyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nh
c2UgewogICAgIHN0YXRpYyBib29sIGNhbkVtaXRJbnRyaW5zaWNHZXR0ZXIoSlNGdW5jdGlvbios
IFN0cnVjdHVyZSopOwogICAgIHZvaWQgZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0
cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiog
aW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CisgICAg
c3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
bG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZp
bmFsOwogCiAgICAgfkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFj
ZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IDI5NTZkZDBjZDVkMGVhZTYxYTA4ZTNkYzc2NWJmNzQzNDQx
YzVmOGQuLmMyOWMxZGRmYWY0ODE1NTY2MTUxNzA4NWE4OGUxOWEwNzNhYmU3ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3ND
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5jcHAKQEAgLTQ1LDE4ICs0NSwxOCBAQCBNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaAogICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KHZtLCBvd25lciwgbW9kdWxlRW52aXJv
bm1lbnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNl
T2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCwgU2NvcGVPZmZz
ZXQgc2NvcGVPZmZzZXQpCitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBK
U01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCwgU2NvcGVPZmZzZXQgc2NvcGVP
ZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG1vZHVsZU5hbWVz
cGFjZU9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQsIHNjb3BlT2Zmc2V0KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50
aWZpZXIsIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQsIHNjb3BlT2Zm
c2V0KSk7CiB9CiAKIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6On5Nb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCmluZGV4IDkyYTBiOGEzNWI1
NDcxNjI0MTMwZDY1MDY1M2QwNWJmNWQ3OTMzNzcuLmQ0Mzk1MGJmMDYzMTM3Y2Y3NzNiODRjNGFh
ZTQ5NDRiMDRjOWEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaApAQCAtNDQsOSArNDQsOSBAQCBj
bGFzcyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2Ug
ewogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsgfQogICAgIFNjb3BlT2Zmc2V0IHNjb3Bl
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU9mZnNldDsgfQogCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCosIEpTTW9kdWxlRW52aXJv
bm1lbnQqLCBTY29wZU9mZnNldCk7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBTY29wZU9mZnNldCk7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNj
ZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZW1pdChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGZhbGxUaHJvdWdoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuaAppbmRleCA1ZDkwNTQ1OTc0ZjFlZDM3ZjI4Y2FmM2EyYWViMzQ2
YTQ5MTBhMjgzLi4wODYzZTE1OTg1MDlkNDYwY2ZkOTY4NzA5YTJmMWM3ZjY4YzY2MGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRl
IDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg5LDYgKzkwLDMyIEBAIGNsYXNz
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICByZXR1cm4gbV9kYXRhLT5tX3ZlY3Rvci5lbmQoKTsKICAgICB9CisKKyAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEhhc2hlciBoYXNoZXI7CisgICAg
ICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogKnRoaXMpCisgICAgICAgICAgICBhZGQoaGFzaGVy
LCBjb25kaXRpb24uaGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAg
fQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgbGhzLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAg
IHsKKyAgICAgICAgaWYgKGxocy5zaXplKCkgIT0gcmhzLnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgYXV0byBsaXRlciA9IGxocy5iZWdpbigpOworICAgICAgICBh
dXRvIHJpdGVyID0gcmhzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBsaXRlciAhPSBsaHMuZW5k
KCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAgICAgICAgIGlmICghKCpsaXRlciA9PSAqcml0
ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBsaHMsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiByaHMpCisgICAgeworICAgICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKKyAgICB9
CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yT2JqZWN0KEpTT2JqZWN0Kikg
Y29uc3Q7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yQ29uZGl0aW9uS2luZChQcm9w
ZXJ0eUNvbmRpdGlvbjo6S2luZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAwM2EyZjY3MWY3NDQ2ZTRh
Y2FkY2Q3NGI5Yzg3ZTg5YTdkMDlhMDE1Li5iYzQ5NzU2YTcwMTBhYTU2NzYyNTk3NTQ0MWQ4YjVi
ZTIyMjJmMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJp
bnQoIjoiLCBtX2NvZGUpOwogfQogCi12b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFs
bFdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKK3Zv
aWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKIHsKLSAg
ICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEluc3Rh
bGxXYXRjaHBvaW50KAotICAgICAgICB3YXRjaHBvaW50cywgaml0LT5jb2RlQmxvY2soKSwgc3R1
YkluZm8sIGNvbmRpdGlvbik7CisgICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjpl
bnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCh3YXRjaHBvaW50cywgY29kZUJsb2Nr
LCBzdHViSW5mbywgY29uZGl0aW9uKTsKIH0KIAogdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OnJlc3RvcmVTY3JhdGNoKCkKQEAgLTczLDcgKzcyLDEwIEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlv
blN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6c3Vj
Y2VlZCgpCiB7CiAgICAgcmVzdG9yZVNjcmF0Y2goKTsKLSAgICBzdWNjZXNzLmFwcGVuZChqaXQt
Pmp1bXAoKSk7CisgICAgaWYgKGppdC0+Y29kZUJsb2NrKCktPnVzZVNoYXJlZElDKCkpCisgICAg
ICAgIGppdC0+cmV0KCk7CisgICAgZWxzZQorICAgICAgICBzdWNjZXNzLmFwcGVuZChqaXQtPmp1
bXAoKSk7CiB9CiAKIGNvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omxp
dmVSZWdpc3RlcnNGb3JDYWxsKCkKQEAgLTEyNiwxMCArMTI4LDExIEBAIGF1dG8gQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChjb25zdCBS
ZWdpc3RlclNlCiAgICAgfTsKIH0KIAotYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKSAtPiBTcGls
bFN0YXRlCithdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEp
IC0+IFNwaWxsU3RhdGUKIHsKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzID0gYWxsb2Nh
dG9yLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgbGl2ZVJlZ2lzdGVycy5leGNsdWRlKGNhbGxlZVNh
dmVSZWdpc3RlcnMoKSk7CisgICAgbGl2ZVJlZ2lzdGVycy5tZXJnZShleHRyYSk7CiAKICAgICBj
b25zdGV4cHIgdW5zaWduZWQgZXh0cmFTdGFja1BhZGRpbmcgPSAwOwogICAgIHVuc2lnbmVkIG51
bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9IFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgqaml0LCBsaXZl
UmVnaXN0ZXJzLCBleHRyYVN0YWNrUGFkZGluZyk7CkBAIC0yNTIsNyArMjU1LDcgQEAgUG9seW1v
cnBoaWNBY2Nlc3M6On5Qb2x5bW9ycGhpY0FjY2VzcygpIHsgfQogCiBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICBjb25zdCBHQ1NhZmVDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2FzZXNUb0FkZCkKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vz
c0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIApAQCAtMjY4LDkgKzI3MSw5IEBAIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIC8vICAg
YWRkIG1vcmUgdGhpbmdzIGFmdGVyIGZhaWx1cmUuCiAgICAgCiAgICAgLy8gRmlyc3QgZW5zdXJl
IHRoYXQgdGhlIG9yaWdpbmFsQ2FzZXNUb0FkZCBkb2Vzbid0IGNvbnRhaW4gZHVwbGljYXRlcy4K
LSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOworICAg
IFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG9yaWdpbmFsQ2FzZXNUb0FkZC5zaXplKCk7ICsraSkgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2Vz
VG9BZGRbaV0pOworICAgICAgICBhdXRvIG15Q2FzZSA9IFdURk1vdmUob3JpZ2luYWxDYXNlc1Rv
QWRkW2ldKTsKIAogICAgICAgICAvLyBBZGQgaXQgb25seSBpZiBpdCBpcyBub3QgcmVwbGFjZWQg
YnkgdGhlIHN1YnNlcXVlbnQgY2FzZXMgaW4gdGhlIGxpc3QuCiAgICAgICAgIGJvb2wgZm91bmQg
PSBmYWxzZTsKQEAgLTM0Niw5ICszNDksOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHlt
b3JwaGljQWNjZXNzOjphZGRDYXNlcygKIH0KIAogQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSgKLSAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQorICAg
IGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFJlZjxBY2Nlc3NDYXNl
PiBuZXdBY2Nlc3MpCiB7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwg
Mj4gbmV3QWNjZXNzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNj
ZXNzZXM7CiAgICAgbmV3QWNjZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3QWNjZXNzKSk7CiAgICAg
cmV0dXJuIGFkZENhc2VzKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgc3R1YkluZm8sIFdURk1vdmUo
bmV3QWNjZXNzZXMpKTsKIH0KQEAgLTQ0MCw3ICs0NDMsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRK
U0xvYwogICAgIHVuc2lnbmVkIHNyY0luZGV4ID0gMDsKICAgICB1bnNpZ25lZCBkc3RJbmRleCA9
IDA7CiAgICAgd2hpbGUgKHNyY0luZGV4IDwgbV9saXN0LnNpemUoKSkgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRl
eCsrXSk7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9s
aXN0W3NyY0luZGV4KytdKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYXNlIGhhZCBi
ZWVuIGdlbmVyYXRlZCwgdGhlbiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGluIG1fbGlz
dCBpbiBjYXNlIHdlCiAgICAgICAgIC8vIGZhaWwgdG8gcmVnZW5lcmF0ZS4gVGhhdCBjYXNlIG1h
eSBoYXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBjb2RlIHRoYXQgaXQK
QEAgLTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNj
ZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIGlmIChzdHVi
SW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxv
Y2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJ
bmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRjaEdQUiA9IGFsbG9jYXRvci5h
bGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDUsNiBAQCBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0g
ICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0YXRlLmppdCA9ICZqaXQ7Ci0K
LSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KLSAgICAgICAgYWxsb2Nh
dG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKICAgICBib29sIGdl
bmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MjEsMTIgKzUyMCwzMCBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2Fz
ZXMpLCAiXG4iKTsKLSAgICAKKworICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7CisgICAgYm9v
bCBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGZhbHNlOworICAgIGJvb2wgY2FuQmVTaGFyZWQg
PSB0cnVlOworICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKKyAgICBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGtleXMoY2FzZXMuc2l6ZSgpKTsKKyAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7CisgICAgICAgIGRvZXND
YWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOworICAgICAgICBpZiAo
ZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50cnktPnR5cGUoKSA9PSBB
Y2Nlc3NDYXNlOjpTZXR0ZXIpCisgICAgICAgICAgICBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9
IHRydWU7CisgICAgICAgIGtleXNbaW5kZXhdID0gZW50cnk7CisgICAgICAgICsraW5kZXg7Cisg
ICAgfQorICAgIHN0YXRlLm1fZG9lc0NhbGxzID0gZG9lc0NhbGxzOworICAgIHN0YXRlLm1fZG9l
c0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxsczsKKyAgICAvLyBH
ZXR0ZXIgLyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2gg
aXMgdGllZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVu
c2hhcmVhYmxlLgorICAgIGlmIChkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykKKyAgICAgICAgY2Fu
QmVTaGFyZWQgPSBmYWxzZTsKKwogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UncmUgY29udmluY2Vk
IHRoYXQgJ2Nhc2VzJyBjb250YWlucyB0aGUgY2FzZXMgdGhhdCB3ZSB3YW50IHRvIEpJVCBub3cg
YW5kIHdlCiAgICAgLy8gd29uJ3QgY2hhbmdlIHRoYXQgc2V0IGFueW1vcmUuCiAgICAgCiAgICAg
Ym9vbCBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayA9IHRydWU7Ci0gICAgYm9vbCBoYXNKU0dl
dHRlclNldHRlckNhbGwgPSBmYWxzZTsKICAgICBib29sIG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNr
ID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAg
ICBib29sIG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayA9IGZhbHNlOwpAQCAtNTQyLDEwICs1NTks
NzAgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgfQogICAgICAgICBjb21taXQo
bG9ja2VyLCB2bSwgc3RhdGUud2F0Y2hwb2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sICpuZXdD
YXNlKTsKICAgICAgICAgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgJj0gbmV3Q2FzZS0+Z3Vh
cmRlZEJ5U3RydWN0dXJlQ2hlY2soc3R1YkluZm8pOwotICAgICAgICBpZiAobmV3Q2FzZS0+dHlw
ZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2Fz
ZTo6U2V0dGVyKQotICAgICAgICAgICAgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsID0gdHJ1ZTsKKyAg
ICAgICAgaWYgKG5ld0Nhc2UtPnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgIGNhbkJlU2hh
cmVkID0gZmFsc2U7CisgICAgfQorICAgIGlmIChuZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgfHwg
bmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrKQorICAg
ICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCisgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBz
dHViOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkgJiYgY2FuQmVTaGFyZWQpIHsK
KyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXIgc2VhcmNoZXIgeworICAgICAgICAg
ICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAg
ICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ubV9z
dHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAg
ICAgICBrZXlzCisgICAgICAgIH07CisgICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJz
LT5maW5kKHNlYXJjaGVyKTsKKyAgICB9IGVsc2UKKyAgICAgICAga2V5cyA9IHsgfTsKKworICAg
IGF1dG8gZmluaXNoQ29kZUdlbmVyYXRpb24gPSBbJl0oUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiYm
IHN0dWIpIHsKKyAgICAgICAgbV9zdHViUm91dGluZSA9IFdURk1vdmUoc3R1Yik7CisgICAgICAg
IG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgaWYg
KCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX3dlYWtSZWZl
cmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUu
d2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6
OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRp
bmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAgICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7Cisg
ICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOworCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAgICAgICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0
aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQor
ICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRl
ZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CisKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgbV9zdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSk7CisgICAgfTsKKworICAgIGlmIChzdHViKSB7CisgICAgICAgIGZvciAoYXV0byYgYWNj
ZXNzQ2FzZSA6IGNhc2VzKQorICAgICAgICAgICAgYWNjZXNzQ2FzZS0+Y29sbGVjdEludmFyaWFu
dHNGb3JDb2RlUmV1c2Uoc3RhdGUsIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybiBmaW5pc2hD
b2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKICAgICB9CiAKKyAgICBDQ2FsbEhlbHBlcnMg
aml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsKKworICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlLm1fZG9lc0pTR2V0dGVyU2V0
dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgc3Rh
Y2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0gaWYg
d2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNrLXBv
aW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJlZ2lzdGVyIGFuZCBpdCBpcyBr
ZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1dGFibGUgY2FsbCBkb2VzIG5v
dCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rpbmcgc3RhY2stcG9pbnRlciBh
ZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzLiBCdXQgdGhpcyBj
b3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFjay1wb2ludGVyLCBhbmQgbWFr
ZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8gVG8gZW5zdXJlIFBBQy10YWdn
aW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVyIHRvIHRoZSBhcHByb3ByaWF0
ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIH0KKworICAgIHN0YXRl
LnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJlc2Vy
dmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAKICAgICBpZiAoY2FzZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5saWtlbHksIGJ1dCB3ZSBtYWtl
IGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGpp
dC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc2Nyw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9s
eW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMgPSBudWxs
cHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRp
b25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2Vw
dGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAgIGlmIChzdGF0ZS5uZWVkc1Rv
UmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMp
IHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgICAgIC8vIE5v
dGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hlbiBkb2luZyBnZW5lcmljVW53
aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAgICAgICAvLyBOb3RlIGFsc28g
dGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20gZ2V0dGVyL3NldHRlci4gQ3Vz
dG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2ICs4MDcsMTUgQEAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRs
aW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICAgfQog
CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBmYWlsdXJlLmxp
bmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGluZyBv
biBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8gdGhl
IHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNhbGxlZCAobm90IGp1bXBlZCku
CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxsIHRvIHRoZSB0aHVuayB3aGlj
aCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAgICAvLyBBbmQgd2Ugc2hvdWxk
IGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBCYXNlbGluZUpJVC4KKyAgICAg
ICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKSwg
SklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKwogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZl
cihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENv
bXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUo
KSkgewogICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKQEAg
LTczOSw5ICs4MjUsMTIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKIAogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHN1Y2Nlc3NMYWJlbCA9IHN0dWJJbmZvLmRvbmVM
b2NhdGlvbjsKIAotICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFi
ZWwpOwotCi0gICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
QVNTRVJUKHN0YXRlLnN1Y2Nlc3MuZW1wdHkoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGxpbmtC
dWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwpOworICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICB9
CiAgICAgCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBzdHViSW5mby5jb2RlT3JpZ2lu
KSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1YiBmb3IgIiwgbGlzdER1bXAo
Y2FzZXMpLCAiXG4iKTsKQEAgLTc0OSwyOSArODM4LDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9jCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBjb2Rl
ID0gRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1ZmZlciwgSklU
U3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICIlcyIsIHRvQ1N0cmluZygiQWNjZXNzIHN0dWIg
Zm9yICIsICpjb2RlQmxvY2ssICIgIiwgc3R1YkluZm8uY29kZU9yaWdpbiwgIiB3aXRoIHJldHVy
biBwb2ludCAiLCBzdWNjZXNzTGFiZWwsICI6ICIsIGxpc3REdW1wKGNhc2VzKSkuZGF0YSgpKTsK
LQotICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7Ci0gICAgVmVjdG9yPEpTQ2VsbCo+IGNlbGxz
VG9NYXJrOwotICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykKLSAgICAgICAgZG9lc0NhbGxz
IHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7Ci0gICAgCi0gICAgbV9zdHVi
Um91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxvY2ssIGRvZXND
YWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwgY29kZUJs
b2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nKTsKLSAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7
Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2Vh
a1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4oV1RGTW92ZShz
dGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFs
Ojp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAi
XG4iKTsKICAgICAKLSAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKLSAgICBtX2xpc3Quc2hy
aW5rVG9GaXQoKTsKLSAgICAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5kIHJlc3Vs
dEtpbmQ7Ci0gICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFu
dExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQotICAgICAgICByZXN1bHRLaW5kID0g
QWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxDb2RlOwotICAgIGVsc2UKLSAg
ICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0Nv
ZGU7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwg
Y29kZS5jb2RlKCkpOworICAgIHN0dWIgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCBXVEZN
b3ZlKGtleXMpLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3Zl
KHN0YXRlLm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxl
cnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CisKKyAgICBpZiAoY29kZUJs
b2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChjYW5CZVNoYXJlZCkKKyAgICAgICAg
ICAgIHZtLm1fc2hhcmVkSklUU3R1YnMtPmFkZChTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXko
c3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0dWJJbmZvLnJlZ3MudGhpc0dQ
Uiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNlZFJlZ2lzdGVycywgc3R1Yi5n
ZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3Zl
KHN0dWIpKTsKIH0KIAogdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6YWJvdXRUb0RpZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCmlu
ZGV4IDI5MjAzMjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFiMzRhZWNiNDEuLjBmYWJlN2ZhMjNm
NzFmODA0NDI0MDI4YjEyMThkYjgxNmM2YTQ4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC0xNDEsMTAgKzE0MSwxMCBA
QCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8gV2hlbiB0aGlzIGZhaWxzIChyZXR1
cm5zIEdhdmVVcCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xkIHN0dWIgaW50YWN0IGJ1dCB5b3Ug
c2hvdWxkIG5vdCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMgbWV0aG9kIGFnYWluIGZvciB0aGF0
IFBvbHltb3JwaGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
YWRkQ2FzZXMoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwg
Q29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0b3I8UmVmUHRyPEFjY2Vz
c0Nhc2U+LCAyPik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENhc2UoCi0gICAg
ICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgICAgICBj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IHJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
OwogICAgIApAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAg
ICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJh
dGlvblN0YXRlOwogICAgIAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiwgMj4gTGlzdFR5cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+LCAyPiBMaXN0VHlwZTsKICAgICAKICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvPiYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwK
QEAgLTE5Niw2ICsxOTYsOCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAg
ICAgOiBtX3ZtKHZtKSAKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAg
ICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNl
dHRlckNhbGxzKGZhbHNlKQorICAgICAgICAsIG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAs
IG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkK
ICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAg
ICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNpdGVJbmRleChmYWxzZSkKQEAgLTIyNSw4ICsyMjcs
MTAgQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7CiAgICAgVmVjdG9y
PFdyaXRlQmFycmllcjxKU0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKICAgICBCYWc8Q2FsbExpbmtJ
bmZvPiBtX2NhbGxMaW5rSW5mb3M7CisgICAgYm9vbCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxz
IDogMTsKKyAgICBib29sIG1fZG9lc0NhbGxzIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNo
cG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxX
YXRjaHBvaW50KENvZGVCbG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAK
ICAgICB2b2lkIHJlc3RvcmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgs
NyArMjUyLDcgQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVn
aXN0ZXJTZXQmIGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxp
bmcoKTsKIAogICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGwoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBT
cGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2Vw
dGlvbnMoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9y
ZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBT
cGlsbFN0YXRlJik7CiAgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwoY29uc3QgU3BpbGxTdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAKaW5kZXggY2MyOTczYzk0ZTExNjJhMzg5ZTJlZjUwZWVhNmEzYjM0ZTc1
ZmE5ZC4uNGJmNzgwZWQzMTc2NmVkZTZiY2M1NjA0NDZhNTA3OWFjYmNjMTJmMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNl
LmNwcApAQCAtMzgsMTkgKzM4LDE5IEBAIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFj
Y2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2VzCiAgICAgbV92
aWFQcm94eSA9IHZpYVByb3h5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJv
eHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9u
YWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFp
bikKK1JlZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwg
V2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIEFTU0VSVCh0eXBlID09IExvYWQgfHwg
dHlwZSA9PSBNaXNzIHx8IHR5cGUgPT0gR2V0R2V0dGVyIHx8IHR5cGUgPT0gUmVwbGFjZSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgUHJveHlhYmxlQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFp
bikpKTsKIH0KIAogUHJveHlhYmxlQWNjZXNzQ2FzZTo6flByb3h5YWJsZUFjY2Vzc0Nhc2UoKQog
ewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6
Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25l
KCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJveHlhYmxlQWNjZXNzQ2FzZT4gcmVz
dWx0KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJl
c2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKaW5kZXggZGMzOWUyNmNh
MmY0YjJiN2FiYTEyYjVhNTVmMzI2NjQ0MTBlZmE1Yy4uZTg0Mzg1Y2E3NWM5Zjc1MmU4ZThlMTZj
ZGRlMGFiY2FjN2JjYzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgUHJv
eHlhYmxlQWNjZXNzQ2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIAogICAgIFdhdGNocG9pbnRT
ZXQqIGFkZGl0aW9uYWxTZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9uYWxT
ZXQuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNl
PiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgYm9vbCB2aWFQcm94
eSA9IGZhbHNlLCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBs
KFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB+UHJveHlhYmxlQWNjZXNz
Q2FzZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBjOGU2YmM2M2EzNmEzOWI4NDU4YjkwMGNi
MmE1MmVmNGYxNTExMjBmLi44ZGY1ODFlNDY0ZjBlMDJlMzQ3NzU1ZmM3OTBkMjdjYjg5NDI1YTQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVy
ZVN0dWJJbmZvKEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAg
ICAsIHByb3BlcnR5SXNJbnQzMihmYWxzZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2Up
CiB7CisgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1
YkluZm86On5TdHJ1Y3R1cmVTdHViSW5mbygpCkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSgpCiB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCi0gICAgY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayogY29kZUJsb2NrLCBFQ01BTW9kZSBlY21hTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudCwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCisgICAgY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBFQ01BTW9kZSBlY21hTW9kZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudCwgUmVmUHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCiB7CiAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC0xNTUsNyArMTU2LDcgQEAgQWNjZXNzR2VuZXJhdGlv
blJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICBpZiAobV9jYWNoZVR5
cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB1LnN0dWItPmFk
ZENhc2UobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgV1RGTW92ZShhY2Nlc3NDYXNlKSk7
CisgICAgICAgICAgICByZXN1bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwgY29kZUJs
b2NrLCAqdGhpcywgYWNjZXNzQ2FzZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiSGFkIHN0dWIsIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsK
QEAgLTE3MCw5ICsxNzEsOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJ
bmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3Jw
aGljQWNjZXNzPigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKKyAgICAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gcHJldmlvdXNDYXNlID0gQWNjZXNzQ2Fz
ZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7Cisg
ICAgICAgICAgICBhdXRvIHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVT
dHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOwogICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FzZSkKICAgICAgICAgICAgICAgICBhY2Nlc3NDYXNlcy5hcHBlbmQoV1RGTW92ZShw
cmV2aW91c0Nhc2UpKTsKICAgICAgICAgICAgIApAQCAtMjc2LDcgKzI3Nyw3IEBAIHZvaWQgU3Ry
dWN0dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tl
ciwgQ29kZUJsb2NrKiBjCiAgICAgICAgIHJlc2V0SW5CeUlEKGNvZGVCbG9jaywgKnRoaXMpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6Ci0gICAgICAg
IHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CisgICAgICAgIHJlc2V0SW5zdGFuY2VPZihjb2RlQmxv
Y2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVC
eUlEOgogICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9y
bWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKaW5kZXggODgyNTY4YzI2ZWFkNjJlNDBlYWU3ZjI3MDgwZjA5MjFlZGVjNzY0NS4u
OTVlN2RiYjg2MzhhYjkyZjc3MTMzODcxZjZmYTQ2ZDkzNWZjZmRmYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTg3LDcg
Kzg3LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5SWRS
ZXBsYWNlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJh
c2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5
T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgYWRkQWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRk
QWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNj
ZXNzQ2FzZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNl
JiwgQ29kZUJsb2NrKik7CiAKQEAgLTM0NCwxOSArMzQ0LDMwIEBAIGNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvIHsKIHB1YmxpYzoKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4gc3RhcnQ7IC8vIFRoaXMgaXMgZWl0aGVyIHRoZSBzdGFydCBvZiB0aGUgaW5saW5lIElD
IGZvciAqYnlJZCBjYWNoZXMuIG9yIHRoZSBsb2NhdGlvbiBvZiBwYXRjaGFibGUganVtcCBmb3Ig
J2luc3RhbmNlb2YnIGNhY2hlcy4KICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBkb25lTG9jYXRpb247Ci0gICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFn
PiBzbG93UGF0aENhbGxMb2NhdGlvbjsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4gc2xvd1BhdGhTdGFydExvY2F0aW9uOwogCisgICAgdW5pb24geworICAgICAg
ICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IG1fc2xvd1BhdGhDYWxsTG9jYXRp
b247CisgICAgICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3BlcmF0aW9u
OworICAgIH07CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IG1fY29kZVB0cjsKKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlUHRyKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX2NvZGVQdHIpOyB9
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgc2xvd1BhdGhTdGFydExv
Y2F0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX3Nsb3dPcGVyYXRp
b24pOyB9CisKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwogCi0gICAgR1BSUmVnIGJh
c2VHUFI7Ci0gICAgR1BSUmVnIHZhbHVlR1BSOworICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxp
ZEdQUlJlZyB9OworICAgIEdQUlJlZyB2YWx1ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICB1
bmlvbiB7CiAgICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBl
R1BSOwogICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CiAgICAgICAgIEdQUlJlZyBicmFuZEdQ
UjsKICAgICB9IHJlZ3M7CisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFIgeyBJbnZhbGlkR1BSUmVn
IH07CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7CiAgICAg
Ly8gRklYTUU6IFszMi1iaXRzXSBDaGVjayBpZiBTdHJ1Y3R1cmVTdHViSW5mbzo6YmFzZVRhZ0dQ
UiBpcyB1c2VkIHNvbWV3aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAppbmRleCA4YWRlYWQ1MGY0NTU2Y2ZmMjVlN2M3Yzk5NzgzMDRkNDE3NzA5NzQ3Li40
NzY1NGE3NmRiNWExMTNmMGZjYjZiZjY4YTNkMjJhY2JjNmEwMjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xNTQsNiArMTU0LDExIEBAIGNsYXNz
IEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAgICAgICAgIG1fY2FsbHMuYXBw
ZW5kKENhbGxMaW5rUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZnVuY3Rpb24pKTsKICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBjYWxsKGFkZHJlc3MsIE9wZXJh
dGlvblB0clRhZyk7CisgICAgfQogICAgIAogICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmlu
ZGV4IDk4MWU4NmNkN2RkYjAxY2E0OTU0M2I0ZTUzNzYwMDFiZTgxNjAxMjYuLjI5YWQ4NmVjZjRm
MzQxYTFiMjZmZDE5NDUxYTBmMGQ1MTg1OGVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTE4OCw2ICsxODgsOCBAQCBjbGFz
cyBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
Q2FsbFNsb3dQYXRoR2VuZXJhdAogICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3Vt
ZW50czsKIH07CiAKKworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiBp
bmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAg
ICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0
aW9uLApAQCAtMjYzLDYgKzI2NSw2NyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25B
cnJheSwgc291cmNlQXJyYXkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlw
ZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CitjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+
IHsKK3B1YmxpYzoKKyAgICBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRv
cigKKyAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRk
cmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAg
ICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVu
dHMpCisgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRUeXBl
Pihmcm9tLCBqaXQsIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKKyAgICAgICAgLCBt
X3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAsIG1fc2xvd1BhdGhPcGVyYXRpb25B
ZGRyZXNzKHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcykKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1
bmN0aW9uKQorICAgICAgICAsIG1fYXJndW1lbnRzKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pCisgICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykKKyAgICB7CisgICAg
fQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHNpemVfdC4uLiBBcmd1bWVudHNJbmRleD4KKyAg
ICB2b2lkIHVucGFja0FuZEdlbmVyYXRlKFNwZWN1bGF0aXZlSklUKiBqaXQsIHN0ZDo6aW5kZXhf
c2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+KQorICAgIHsKKyAgICAgICAgQVNTRVJUKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpOworICAgICAgICB0aGlzLT5zZXRVcChq
aXQpOworICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBtX2Z1bmN0aW9uOwor
ICAgICAgICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1
YkluZm8pLCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3Nh
bWU8UmVzdWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1ZSkKKyAgICAgICAgICAgIGppdC0+Y2Fs
bE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBzdGQ6
OmdldDxBcmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJh
dGlvbkFkZHJlc3MsIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBzdGQ6OmdldDxBcmd1
bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0
KTsKKyAgICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGpp
dCkgZmluYWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtl
X2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+
Ojp2YWx1ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0
aW9uVHlwZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3Vt
ZW50czsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBS
ZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBT
cGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVz
cywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1
bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5m
bywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxs
TW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0
VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3Vs
YXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4u
IGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHVi
SW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0
LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRp
ZiAvLyBFTkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0
ZTZkMjhmOC4uMDVhZDc5Y2E2OWY2ZDgwYjg5ZTA3NWU2ODI4NGE2MjZkMzRhYmQ2NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEw
MjYsMjQgKzEwMjYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9k
ZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAg
ICAgICAgYmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVy
OjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7
CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
IH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUx
LDcgKzEwNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBu
b2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NU
eXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VS
ZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewog
ICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHVi
SW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVn
cyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFz
ZS51c2UoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdl
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFj
Y2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNh
c2UgVW50eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAg
R1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsK
KyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAK
ICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTEwOTYsNyArMTEyMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZv
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNj
ZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRh
Rm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMTExMSwxNCArMTEzNSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJ
ZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpOwpAQCAtMTEyOCwyMCArMTE1NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
cmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0K
ICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTExNzAsMjIgKzEyMTQsMjcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+
Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBub2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgICAgIH0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAg
ICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRS
ZWdzLnBheWxvYWRHUFIoKTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQy
KCkpOworCiAgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0Nl
bGwpKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
a2V5UmVncykpOwogCkBAIC0xMTk0LDIwICsxMjQzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAg
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hH
UFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5m
bygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNl
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
a2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAg
ICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEz
MDAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsK
KyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOwogCkBAIC0xMjQ4LDE0ICsxMzE4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0g
bV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElm
TmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUsCi0gICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29t
cGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFk
ZEluQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihX
VEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNTYxLDkgKzM2NDIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlMKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9w
KCkgPT0gR2V0UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9k
ZSwgbV9ncmFwaC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBz
cGVjdWxhdGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBPcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgfQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisg
ICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworCiAgICAgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFu
ZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTM1
NzQsMTQgKzM2NjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVO
YW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgSklUR2V0QnlW
YWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAg
ICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZSwgcHJvcGVydHks
IHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1
dG8gYmFzZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkg
eworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAg
cmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAg
ICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkp
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAg
ICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAg
LTM1ODksOCArMzY4Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRl
TmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93
bkNlbGwKLSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2UucGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOwor
ICAgICAgICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
LnBheWxvYWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAg
ICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwyOCArMzY5OSw0MCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUp
CiB7CiAgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAg
IGNhc2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQo
bm9kZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdl
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxs
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxk
KG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxs
ID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5h
bWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1h
dEpTKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzIyLDI5ICszODMxLDQwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAg
T3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdl
IGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBu
ZWVkCiAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVG
aWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNo
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5v
ZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQo
Tm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJh
bmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNo
aWxkMigpLCBicmFuZEdQUik7CkBAIC0zNzU4LDE2ICszODc4LDI0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwg
dXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklU
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVz
ZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJyYW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNz
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTM3NzgsOSArMzkwNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzc5MiwxNiArMzkyNiwyNCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZv
R1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVz
dWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5k
R1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xv
d1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKQEAgLTM5MTksMjIgKzQwNjEsMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92
ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIs
IEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFs
dWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3Vs
dEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0
Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVn
aXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJv
dG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAg
IHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdz
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVS
ZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VP
ZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0zOTQ1LDYgKzQwOTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAgICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBl
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTUyLDEzICs0MTAxLDE4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJl
ZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0g
cHJvdG90eXBlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKLSAgICAgICAgY29t
cGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFs
dWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIp
OworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzdHViSW5mb0dQ
Uiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAKICAgICAgICAgYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzk2OCwx
MiArNDEyMiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2Rl
KiBub2RlKQogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgo
KSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIAor
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHByb3RvdHlw
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAKKyAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTM5ODksNyAr
NDE0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5v
ZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQ
UiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2Vs
bHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BS
LCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CiAgICAgCiAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
QEAgLTEzMDE5LDQ2ICsxMzE3OSw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9J
bmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHVi
SW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsK
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0
S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgp
LCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogewor
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMp
OwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBz
Y3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5v
dERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKIHsK
KyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8u
ZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Cisg
ICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQ
Uiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJl
Y3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDY5
MCwxOCArMTQ4NjgsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBl
KE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNw
aWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVk
IHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAg
ICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJl
Z2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9H
UFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJl
Y29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChj
b2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIs
CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLCBz
dHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ3MTEsOSArMTQ4OTEsMTYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0
aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0g
ICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9
CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MmUxZThjZDUyYTA0ODZlNjEwYzVj
NDkwYzNiYTBhOTE3ZGM4OWYzLi44YzMyOTM2MDgwMWMzOWVhNzViZGQ0ZjgzZTYyNDVlOTEyMjI1
ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC03MTksMTYgKzcxOSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAKICAgICB2b2lk
IGNvbXBpbGVDaGVja0RldGFjaGVkKE5vZGUqKTsKIAotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lz
dGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNN
b2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtp
bmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBp
bGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lk
IGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhU
YXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlk
KENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVk
R2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQ
UiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29t
cGlsZXI6Okp1bXBMaXN0KCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICB2b2lkIGNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBi
YXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFz
ZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcgdGhpc1BheWxvYWRH
UFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBH
UFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdl
dEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVn
IGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXls
b2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6
SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUqKTsKQEAgLTc1MSw3ICs3NTEs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBnZW5lcmljSlNWYWx1ZU5vblBl
ZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgZ2Vu
ZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0g
ICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1
ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcg
c2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2Fz
ZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQ
UiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENv
bXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU92
ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKQEAgLTk0OSw2ICs5NDksMjYgQEAgY2xhc3MgU3Bl
Y3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIFJlc3Vs
dFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAg
ICAgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwKKyAgICB2b2lkPgor
ICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIFJlc3VsdFJl
Z1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsK
KyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3Rk
OjplbmFibGVfaWZfdDwKKyAgICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojpo
YXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRk
cmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsK
KyAgICAgICAgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRp
b25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CiAgICAgICAgIC8v
IERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVyLgpAQCAtOTg4LDYg
KzEwMDgsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gbV9qaXQu
YXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckV4dGVy
bmFsQ2FsbCgpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIG1faml0LmFwcGVuZENhbGwoYWRkcmVzcyk7
CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kT3BlcmF0aW9uQ2FsbChjb25z
dCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAg
cHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAtMTAxMCw2ICsxMDM3LDI4IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogCisgICAgdm9pZCBh
cHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGxT
ZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEdQUlJlZyByZXN1bHQxLCBH
UFJSZWcgcmVzdWx0MikKKyAgICB7CisgICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAg
ICAgIG1faml0LnNldHVwUmVzdWx0cyhyZXN1bHQxLCByZXN1bHQyKTsKKyAgICB9CisKKyAgICB2
b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IGFwcGVuZENhbGxTZXRSZXN1bHQoYWRkcmVzcywgcmVzdWx0UmVncy5ncHIoKSk7CisjZWxzZQor
ICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJlc3VsdFJlZ3MucGF5bG9hZEdQ
UigpLCByZXN1bHRSZWdzLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGI1N2Mz
N2FhMDVkZDQ5MDkxYzdmYTM2NTBmOGJiZmY3NTIzN2Y2MzkuLmMxYjVkMDYxYzNjNWE0YTY1MDZj
YjdjNjBlZTI5NjdmYzIxNmE2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMTY4LDE1ICsxNjgsMTYgQEAgYm9v
bCBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcmIHRhZ0dQUiwg
R1BSUmVnJiBwYXlsb2FkR1BSLAogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUg
dHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmln
aW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkK
IHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2Fk
R1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgaWRlbnRpZmllciwg
c2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBi
YXNlLnRhZ0dQUigpLCBiYXNlLnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQu
cGF5bG9hZEdQUigpLCBzdHViSW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1v
ZGUsIHR5cGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAotICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBi
YXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIsCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwg
R1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0
ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKKyAgICBVTlVTRURfUEFSQU0o
c3R1YkluZm9HUFIpOwogICAgIC8vIFRoaXMgaXMgYSBoYWNreSBmaXggZm9yIHdoZW4gdGhlIHJl
Z2lzdGVyIGFsbG9jYXRvciBkZWNpZGVzIHRvIGFsaWFzIHRoZSBiYXNlIHBheWxvYWQgd2l0aCB0
aGUgcmVzdWx0IHRhZy4gVGhpcyBvbmx5IGhhcHBlbnMKICAgICAvLyBpbiB0aGUgY2FzZSBvZiBH
ZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3aGljaCBoYXMgYSByZWxhdGl2ZWx5IGV4
cGVuc2l2ZSByZWdpc3RlciBhbGxvY2F0aW9uIHN0b3J5IGFscmVhZHkgc28gd2UgcHJvYmFibHkg
ZG9uJ3QgbmVlZCB0bwogICAgIC8vIHRyaXAgb3ZlciBvbmUgbW92ZSBpbnN0cnVjdGlvbi4KQEAg
LTIwMCw4ICsyMDEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAg
IAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRp
ZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRH
UFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCB0eXBlKTsK
KyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdz
KGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFn
R1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZywgdHlwZSk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjI4LDE1ICsyMjksMTYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKAotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRo
aXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BS
UmVnIHJlc3VsdFBheWxvYWRHUFIsCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQ
UiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdl
dCkKIHsKKyAgICBVTlVTRURfUEFSQU0oc3R1YkluZm9HUFIpOwogICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgCiAgICAgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25I
YW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAg
ICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0g
ICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFs
dWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhp
c1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50
aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1
ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpLCBJbnZhbGlkR1BSUmVnKTsKICAgICAK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCkBAIC0yMzQxLDggKzIzNDMs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MudGFn
R1BSKCkpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgYmFzZVJlZ3Ms
IHByb3BlcnR5UmVncywgcmVzdWx0UmVncyk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9w
ZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogCiAgICAgICAgICAgICBpZiAo
bV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVj
U3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmlu
ZyA9IHRydWU7CkBAIC0zNDA1LDcgKzM0MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0
VGFnLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQ
YXlsb2FkLmdwcigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZh
bGlkR1BSUmVnLCB0aGlzR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRo
aXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZhbGlk
R1BSUmVnLCB0aGlzR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIEludmFsaWRH
UFJSZWcsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2Rl
KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM0MjUsNyArMzQyNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgICAgICAg
ICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHRoaXNWYWx1ZS5qc1Zh
bHVlUmVncygpKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCB0
aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAg
IGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIs
IGJhc2VQYXlsb2FkR1BSLCB0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIG5vdENlbGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCBiOTExOGI2MmU4N2Q5NzBhYzU0NjFmNjNiZDNjMzgwZmI4YjAxMjYwLi4zMzZiMWE5NWQy
NDZlNzE5NGE3NzQxMDI2NTNjMzI5ZDM0MzRmNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE0NywxMiArMTQ3LDEyIEBA
IEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIH0KIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdp
c3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNN
b2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwg
YmFzZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9k
ZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5n
cHIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGls
bFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxS
ZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAg
LTE2MCwyNiArMTYwLDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAgIC8vIFdl
J3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVk
IHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxz
ZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgICAg
ICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdp
c3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCB0eXBlKTsKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCi0gICAgICAgIHNw
aWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRl
bnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAg
ICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBw
cm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgc3Bp
bGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwg
aWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlk
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BS
LCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6
SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUg
PSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0
SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE4NywyMCArMTk3LDMw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSCiAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQ
UiwgZmFsc2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIsIGZhbHNlKTsKICAgICB1
c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICBpZiAoc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIs
IGZhbHNlKTsKICAgICAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlzR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0
ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUiksIHN0dWJJbmZvR1BSKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwK
LSAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBi
YXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0
aW1pemUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6
OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAg
ICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
KyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
YmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KICAgICAKICAg
ICBtX2ppdC5hZGRHZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMjY4MSwxNiArMjcwMSwy
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKLQorICAgICAgICAgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBwcm9wZXJ0eSk7CisKKyAg
ICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBw
cm9wZXJ0eS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDEpKTsKKwogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1f
aml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5l
ZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0yNzAwLDggKzI3
MjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUikp
OwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpH
ZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5
R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAg
ICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlw
ZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDExICsyNzM5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1Yklu
Zm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlW
YWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTM5ODQsOSArNDAxOSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogewogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UgJiYgbm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC0zOTk0LDE0ICs0
MDM2LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdp
dGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1
bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpA
QCAtNDAxMyw3ICs0MDYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2Vs
bChKU1ZhbHVlUmVncyhiYXNlR1BSKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpKSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRX
aXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVz
dWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxs
TGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IDgxNjdmYTNkMDUyYzEwYmRmMWI2ZjY0OTBjZTM1OTA3ZGFkOGJm
MzUuLjJjODVkOTkzZGIyODRlNGY3YjUwZTAwMTVjMDk3NjcyM2ViYmViZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTM5NzgsNiArMzk3
OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRF
eGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhj
ZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtMzk5OSwxMCArNDAwMCwxMSBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0u
Z3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7
CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOwor
ICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsK
IAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJh
dG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5h
bWUsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVn
cyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVy
dHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgICAgICBpZiAo
IWJhc2VJc0NlbGwpCkBAIC00MDE2LDEzICs0MDE4LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VH
UFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xv
d1BhdGhDYWxsKTsKQEAgLTQxMTAsNiArNDEyNCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtNDEz
MCwxMCArNDE0NSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBicmFuZEdQ
UiA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nl
c3NUeXBlLAotICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAorICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
YnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBub3RDZWxsOwogICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAtNDE1OSwxMyArNDE3
NSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaWYgKG5vdENl
bGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAg
ICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsK
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1
bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAot
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rp
b24oYWNjZXNzVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgSW52
YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5j
dGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7
CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0
aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDUxNiw2ICs0NTQ0LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVl
UmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7
CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBQdXRCeUlkRmx1c2gsIHdlIG1pZ2h0
IHdhbnQgdG8gbGF0ZS1jbG9iYmVyIHZvbGF0aWxlIHJlZ2lzdGVycy4KICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjg0OApAQCAtNDUzOCwxMCAr
NDU2NywxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIEpTIHNl
dHRlciBjYWxsIElDcyBnZW5lcmF0ZWQgYnkgdGhlIFB1dEJ5SWQgSUMgd2lsbCBuZWVkIHRoaXMu
CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZv
clVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBh
cmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0
byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBl
Y21hTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwgc3R1YkluZm9HUFIsIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFN
b2RlLAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAtNDU1MywxMiArNDU4NCwyNCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5j
dGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgSW52YWxp
ZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9u
KCksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENh
bGwpOwpAQCAtNTIzOSw2ICs1MjgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8g
MSA6IDA7CiAKICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CiAKQEAgLTUyNTksMTAgKzUzMDMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAotICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAorICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJvcGVydHlJc1N0cmluZzsKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHByb3BlcnR5SXNJbnQzMjsK
QEAgLTUyODAsMTMgKzUzMjUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAg
ICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
bm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCByZXN1
bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQ
YXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNTgzNiw3ICs1ODkzLDcg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90
Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgICAgIHBhdGNocG9pbnQt
Pm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZU
TEpJVCkgPyAyIDogMTsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhj
ZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTU4NTYsOSArNTkxMywxMSBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKTsKICAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5n
cHIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3JhdGNo
KDApOworICAgICAgICAgICAgICAgIGF1dG8gc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgxKSA6IEludmFsaWRHUFJS
ZWc7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkp
OworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHNjcmF0Y2hHUFIpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gc2NyYXRjaEdQUik7CiAKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNl
KSk7CkBAIC01ODc0LDcgKzU5MzMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1
YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1z
WzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9
IHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFt
c1syXS5ncHIoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVn
cyhwYXJhbXNbMl0uZ3ByKCkpOwpAQCAtNTg4NCwxOSArNTk0MywyMCBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFs
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0
b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdw
U2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0
dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdw
U2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1Zh
bHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAgICAgICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKIAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKQEAgLTU5MDUsMTIgKzU5NjUsMjQgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BS
LCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCku
bGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTIy
NDIsOCArMTIzMTQsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2lu
dEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQ
YXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTEyMjYwLDEwICsxMjMzMiwx
MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
SGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogCisgICAg
ICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6
Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTEyMjc0LDEyICsx
MjM0OCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbklu
QnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5n
cHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRz
KCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93
UGF0aENhbGwpOwpAQCAtMTI0ODYsNyArMTI1NzIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocHJvdG90eXBlKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cikpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOworICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMyA6IDI7CiAgICAgICAgIHBhdGNocG9pbnQtPnJlc3Vs
dENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OwogICAgICAgICAKQEAgLTEyNTAyLDYgKzEyNTg4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcGFyYW1zWzJdLmdwcigpOwog
ICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsK
ICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEp
OworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDogSW52YWxpZEdQUlJl
ZzsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
ZG9uZUp1bXA7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkgewpAQCAtMTI1MjMs
MTAgKzEyNjEwLDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJv
eDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKLSAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQ
UiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90b3R5
cGVJc09iamVjdCk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRo
KGppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
ZG9uZSA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHBh
cmFtcy5hZGRMYXRlUGF0aCgKQEAgLTEyNTM3LDEyICsxMjYyNiwyNCBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3Vs
dEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCB2YWx1ZUdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHVi
SW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRH
UFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6
YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2Fs
bCk7CkBAIC0xMzk4Niw2ICsxNDA4Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMg
aXMgYSBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBw
ZXJmb3JtYW5jZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJz
IHZvbGF0aWxlIHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3Ru
ZXNzLCB0aG91Z2gsIHNpbmNlIHRoZQpAQCAtMTQwMTQsMTAgKzE0MTE2LDEyIEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndp
bmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMu
Z3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gQm94PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJ
VCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSLCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwMzAsMTIgKzE0MTM0LDI0IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24s
IHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJ
bmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1sw
XS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50
aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVu
Y3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZp
ZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRo
QmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xNDA2MCw4ICsxNDE3Niw4IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlzVmFs
dWUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8g
MSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2Vw
dGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CkBAIC0xNDA4MywxMCArMTQxOTksMTIgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMs
IGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2go
MCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBC
b3g8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFt
c1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOworICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNb
Ml0uZ3ByKCkpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdl
bmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDk5LDEyICsxNDIxNywyNCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0u
Z3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sy
XS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygp
KSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBh
cmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1z
WzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3By
KCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENh
bGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENh
bGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmlu
ZGV4IDJhZGQ0OTRjNTMyYWFlYThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThm
YjFlNzkyNmM2YTA3MTgzNzMxNTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBGVEwgewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4
OwogCiBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1Bcmdz
LCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywg
Q0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rl
ciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQog
ICAgICwgbV9udW1BcmdzKG51bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJl
Z2lzdGVyKQpAQCAtNjMsNiArNjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENh
bGxDb250ZXh0KAogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1
bWVudFJlZ2lzdGVycyk7CiAgICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcp
CiAgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKyAgICBpZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJl
Y3RDYWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMu
ZmlsdGVyKHVzZWRSZWdpc3RlcnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNh
bGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhD
YWxsQ29udGV4dDo6flNsb3dQYXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xv
d1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+IGNhbGxUYXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3Ro
dW5rU2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOwor
ICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1f
YXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNs
b3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFk
ZHJlc3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNl
dCwgbnVsbHB0ciwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0
KTsKIH0KIAogU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2
bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0
MCwyMiBAQCBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZt
LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGNhbGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9
IGtleVdpdGhUYXJnZXQoY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNs
b3dQYXRoQ2FsbChtX2ppdC5jYWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0
LmFkZExpbmtUYXNrKAorICAgICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHRodW5rID0KKyAgICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRo
dW5rKHZtLCByZXN1bHQua2V5KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVz
dWx0LmNhbGwoKSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUo
KSkpOworICAgICAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4pCiB7CiAgICAgaWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdh
YzlmM2ZhODBjMTJhLi5kNmYyODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1
ICs1NCwxNyBAQCBjbGFzcyBTbG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkg
dGhpbmd5IHRoYXQgd2lsbCBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zm
c2V0cyBhbmQgc3VjaC4KIGNsYXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAg
IFNsb3dQYXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxw
ZXJzJiwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93
UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYs
IHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0
Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAg
Ly8gTk9URTogVGhlIGNhbGwgdGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBi
ZSBsaW5rZWQgYnkgdGhlIEpJVCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJl
IGlzIG5vIG5lZWQgZm9yIHlvdSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2Fs
bCBtYWtlQ2FsbChWTSYsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7
CisgICAgU2xvd1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsK
IAogcHJpdmF0ZToKICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtl
eSBrZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAg
UmVnaXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxp
bmdDb252ZW50aW9uUmVnaXN0ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2Fs
bE9wZXJhdGlvbigKIHsKICAgICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNs
b3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihB
cmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRl
eHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSAr
IDEsIHJlc3VsdEdQUiwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50
czx2b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0g
Y29udGV4dC5tYWtlQ2FsbCh2bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDgg
QEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRz
Li4uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRo
Q2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNl
cHRpb25UYXJnZXQsCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcg
cmVzdWx0R1BSLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENh
bGwgY2FsbDsKKyAgICB7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2Vk
UmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGly
ZWN0Q2FsbDx2b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsK
KyAgICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYg
KGV4Y2VwdGlvblRhcmdldCkKKyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVt
aXRFeGNlcHRpb25DaGVjayh2bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisg
ICAgVk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJz
JiBqaXQsIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwg
R1BSUmVnIHJlc3VsdEdQUiwKKyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAg
ICBpZiAoY2FsbFNpdGVJbmRleCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxP
cGVyYXRpb24odm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlv
biwgcmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBT
dGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBl
cnMmIGppdCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QqIGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxs
U2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdl
dCwgZnVuY3Rpb24sCisgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQz
MDZjNjIwMzNhODM5MDhlNmZjYzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFk
MzM3MmJlZjU1MTNlZmU1YWEzOWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1f
dXNlZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAi
LCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1l
bnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmlu
dCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1f
b2Zmc2V0LCAiLCBpbmRpcmVjdE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxU
YXJnZXQgPSAiLCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwg
IiwgYXJndW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3
NjEzODQyYmRkMzNkLi4wY2U2MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAg
LTUxLDExICs1MSwxMiBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQ
YXRoQ2FsbEtleSgKICAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRS
ZWdpc3RlcnMsCi0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBv
ZmZzZXQsIGludDMyX3QgaW5kaXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJz
KHNldCkKICAgICAgICAgLCBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRp
b25QdHJUYWc+KCkpCiAgICAgICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lz
dGVycykKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9m
ZnNldChpbmRpcmVjdE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDEx
IEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29u
c3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1
bWVudFJlZ2lzdGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X29mZnNldDsgfQorICAgIGludDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X2luZGlyZWN0T2Zmc2V0OyB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFy
Z2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBh
cmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENh
bGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBv
ZmZzZXQoKSwgaW5kaXJlY3RPZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2Fs
bEtleSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAg
IDogbV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1f
b2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRl
ZFZhbHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRl
ZFZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkz
LDE4ICs5MywyMCBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdXNlZFJlZ2lzdGVycyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAg
ICYmIG1fY2FsbFRhcmdldCA9PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1f
b2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3Ro
ZXIubV9vZmZzZXQKKyAgICAgICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9p
bmRpcmVjdE9mZnNldDsKICAgICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+Ojpo
YXNoKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAg
ICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1f
Y2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9m
ZnNldDsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJz
OwogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJl
Z2lzdGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0Owor
ICAgIHB0cmRpZmZfdCBtX29mZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZz
ZXQgeyAwIH07CiB9OwogCiBzdHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZhOTMz
MTMzYzBiMzZjODY2MTNhZC4uZDkyMDJhM2Q0MTllNWNiMmE1OWUzMWZiZTg1YTRhZDUzYmU0OTQx
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgs
OCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmlj
R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZm
ZXIpOwogICAgIAogICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2Ny
YXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0
aCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86
Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMSk7CiAKICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtH
ZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9m
KGRvdWJsZSk7CiAgICAgfQogICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5v
bkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQ
UkluZm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxl
cjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBr
ZXkuYXJndW1lbnRSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBr
ZXkuYXJndW1lbnRSZWdpc3RlcnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAg
ICAgIGRvbnRDbG9iYmVyLnNldChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNs
b2JiZXJDaGVjayhqaXQsIFdURk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVs
cGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJs
eUhlbHBlcnM6OkNhbGwgY2FsbDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAg
Y2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
Y2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwga2V5LmluZGly
ZWN0T2Zmc2V0KCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgaml0LmxvYWRQdHIoQXNzZW1i
bHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
a2V5Lm9mZnNldCgpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBq
aXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVk
Tm9uUmV0dXJuR1BSKTsKQEAgLTIzMiw3ICsyMzksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3Qg
UwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKLSAgICBwYXRjaEJ1
ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOworICAgIGlmIChrZXkuY2FsbFRhcmdl
dCgpKQorICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZU
TCBzbG93IHBhdGggY2FsbCB0aHVuayBmb3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5k
ZXggMzU0Zjk1NDdiNGFiZjMyODk2ZDFjZWI0ZWEyMDBmYmI0YTRkZWNjZC4uYmY4YTA4MDQwY2Vj
ODdiNjRmNzdjMzZhZWFkYmZlZDlkZTQwMjc0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxF
KEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgpAQCAtNjUyLDcgKzY1Myw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0
VmlydHVhbENhbGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAg
ICAgICAgIGF1dG8gY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8
SklUQ29tcGlsYXRpb25QdHJUYWc+KGNhbGwpOwogICAgICAgICBsaW5rQnVmZmVyLmFkZE1haW5U
aHJlYWRGaW5hbGl6YXRpb25UYXNrKFs9LCAmdm1dICgpIHsKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVh
bFRodW5rRm9yKHZtLCAqaW5mbyk7Ci0gICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgICAgICAg
ICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFs
VGh1bmssIHZtLCB7IH0pKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVh
ckNhbGwoY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4odmlydHVhbFRodW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUw
MzMyMGVhYTcyZDg5ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4
OTdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3
LDcgKzIwNyw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogCiAgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50
IHR5cGVzIHBhc3NlZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAv
LyBleHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2Vk
IG9uIHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0Nv
bGxlY3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDgg
KzIxOSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewog
ICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVk
IGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAg
ICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3Ro
ZXIpCisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMs
IHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVk
IGg+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBm
LCBnLCBoPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhl
ci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVz
dGluYXRpb25zOwpAQCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90
aGVyLmNyb3NzRGVzdGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdB
cmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1H
UFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291
cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRl
c3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBh
cmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVz
aFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewot
ICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2Vz
ICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBS
U291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNb
bnVtRlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAx
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQ
UlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
ICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBS
UmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEs
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgq
dGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2Vz
XSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNy
b3NzU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwg
R1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVn
QXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEs
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBy
ZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3Vy
Y2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1H
UFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBw
dXNoTm9uQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+
IHJlc3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNv
dXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251
bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBv
a2U+IGFkZEdQUkV4dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmco
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0
dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdH
UFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJn
KEdQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0
aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAx
PiBhZGRQb2tlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAg
ICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJ
TkRPV1MpICYmIENQVShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhl
bHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQo
dW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zm
c2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3Vt
ZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8g
Q2xhbmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQ
UlJlZzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJl
Y3RseSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFN
KG5vbkFyZ0dQUnMpOworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFy
Z3M7CiAgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAg
ICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEs
MTUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1l
bnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50
R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBj
YWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5z
aWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50
LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50
R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1
bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0
ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBw
b2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJl
bnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZSk7CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAK
QEAgLTM3Niw4ICszODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlI
ZWxwZXJzIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6
YXRpb24gdGltZSBleHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVj
dXJzaXZlIHRlbXBsYXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdU
eXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9p
ZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4u
LiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENF
UFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZv
VHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdS
ZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5Miwz
MSArNDAzLDMxIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBk
b3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRv
dWJsZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hh
bGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJn
cy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
SlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJl
Z3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVn
aXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFs
dWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJn
cy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAt
NDI0LDggKzQzNSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BV
KE1JUFMpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAg
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVl
LCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAg
LTQ2OSwyNSArNDgwLDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVt
YmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cyArIDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFy
ZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2su
Ci0gICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4u
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwg
YXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VS
UkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50
UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VS
ZWdzLmFyZ0NvdW50KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJn
KSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1
bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJn
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0
eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BS
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFy
Z3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJn
MiwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJz
ID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQg
Y3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7
CiAKICAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7
Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7
CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNl
UmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJn
cy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
MSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSArIDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2UgKyAyKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZSArIDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJn
cy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3Mp
CisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVl
IHBheWxvYWQsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1Jl
Z2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5n
cHIoKSk7CkBAIC01NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFz
c2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1
ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdS
ZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1
bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdH
UFIoKSk7CkBAIC01NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMp
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAg
QUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8
VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxB
cmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0
aXZlSklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMg
bm9uLWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2Fs
bCBvcGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2Ug
ZXZlciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRz
IHdlIHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdo
aWNoIHNvdW5kcwpAQCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFy
Z3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwg
QXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkg
PD0gNCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6
ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUs
IEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVO
VF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUp
ID09IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4p
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFPjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYg
c3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50
ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAg
fHwgc3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJn
cykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8v
IFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxs
eSBhbm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJn
cz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNf
c2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAm
JiBzdGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisg
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJn
cy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAg
ICAgfQpAQCAtNjM5LDggKzY1MCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNl
dCB1cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7
CiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFy
aXR5ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVs
cGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51
bUZQUlNvdXJjZXMsIEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJS
ZWc+KGFyZ1NvdXJjZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1G
UFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAot
cHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50
cnlJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgdXNpbmcgRmlyc3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfc2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29y
a3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJp
dC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25U
eXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkg
Y2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4u
KTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8g
VGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNz
IHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3Mp
LCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAg
fQorICAgIH0KIAotI2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9u
VHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9B
UkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4g
YXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdz
KQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5
IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAz
Mi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25U
eXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkg
Y2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAw
PigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVw
QXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwg
MCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJh
bWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BS
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRo
aXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0
aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJh
aXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFz
aWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwg
MCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBs
PE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5w
dXNoTm9uQXJnKGZ1bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAg
ICAgfQogCi0jdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlw
ZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRk
cmVzcy5iYXNlLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAg
dm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
CmluZGV4IGY3YWEzMjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLjE4NTQ2OWVh
OWNlNzM5MWZjYTdkNDRkNzE4ZWNiMzZjOTdiZGJlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhl
YXAuaCIKQEAgLTM5LDggKzQwLDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogR0NBd2FyZUpJVFN0
dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2
bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMpCiAgICAgOiBKSVRTdHVi
Um91dGluZShjb2RlKQorICAgICwgbV92bSh2bSkKKyAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMp
KQogewogICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0aGlzKTsKIH0KQEAgLTQ5
LDYgKzUyLDkgQEAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5l
KCkgeyB9CiAKIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50
KCkKIHsKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQorICAgICAgICBtX3ZtLm1fc2hh
cmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKwogICAgIGlmIChtX2lzSmV0dGlzb25lZCkgewog
ICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVlZGVkIGZvciB3aGVuIHRoZSBzeXN0ZW0gc2h1dHMg
ZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAgICAgLy8gdGhlIEpJVCBzdHViIHJvdXRpbmUgc2V0
IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0IGFyb3VuZCB0byBkZWxldGluZwpAQCAtNzUsOSAr
ODEsOSBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6ZGVsZXRlRnJvbUdDKCkKIH0KIAog
TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGlu
ZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsCisgICAgY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgY29uc3QgSlNDZWxsKiBvd25lciwKICAg
ICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxM
aW5rSW5mb3MpCi0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pCisgICAgOiBH
Q0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpCiAgICAgLCBtX2Nl
bGxzKGNlbGxzLnNpemUoKSkKICAgICAsIG1fY2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5r
SW5mb3MpKQogewpAQCAtMTA2LDkgKzExMiw5IEBAIHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHVi
Um91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9
CiAKIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0Nl
bGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZv
PiYmIGNhbGxMaW5rSW5mb3MsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4+JiYga2V5cywgIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwq
PiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRl
eCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkKLSAgICA6IE1hcmtpbmdHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9z
KSkKKyAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUo
a2V5cyksIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29k
ZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMp
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9j
a1dpdGhFeGNlcHRpb25IYW5kbGVyLT5jb2RlT3JpZ2lucygpKQpAQCAtMTU0LDYgKzE2MCw3IEBA
IHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6Om9ic2VydmVa
ZXJvUmVmQ291bnQoKQogCiBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5l
KAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
IGNvZGUsCisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsCiAgICAg
Vk0mIHZtLAogICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgYm9vbCBtYWtlc0NhbGxzLApA
QCAtMTY1LDE4ICsxNzIsMTggQEAgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91
dGluZSgKICAgICBpZiAoIW1ha2VzQ2FsbHMpIHsKICAgICAgICAgLy8gQWxsb2NhdGluZyBDYWxs
TGlua0luZm9zIG1lYW5zIHdlIHNob3VsZCBoYXZlIGNhbGxzLgogICAgICAgICBBU1NFUlQoY2Fs
bExpbmtJbmZvcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKSVRT
dHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlYWJs
ZUpJVFN0dWJSb3V0aW5lKHZtLCBjb2RlLCBXVEZNb3ZlKGtleXMpKSk7CiAgICAgfQogICAgIAog
ICAgIGlmIChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykgewogICAgICAgICBSRUxFQVNF
X0FTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFu
ZGxlcnMtPmppdFR5cGUoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxz
LCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywg
ZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0s
IFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29k
ZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4
KSk7CiAgICAgfQogCiAgICAgaWYgKGNlbGxzLmlzRW1wdHkoKSAmJiBjYWxsTGlua0luZm9zLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKGNv
ZGUsIHZtKTsKKyAgICAgICAgcmV0dXJuIEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKGNv
ZGUsIHZtLCBXVEZNb3ZlKGtleXMpKTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1v
dmUoY2FsbExpbmtJbmZvcykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMs
IFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRl
eCA0OGJlZmJjNDg3ZmNhMjU3MGM2NWM5MjlmOTRkMThlNmNlMWNhOWZkLi4yM2MzOTgyM2Q4MGE3
ODJjNTQ0NjJjYmVmNDdjNWViMjQ3OGI5ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIERGRyB7CiBjbGFzcyBDb2RlT3JpZ2luUG9vbDsKIH0KIAorY2xhc3MgQWNjZXNzQ2FzZTsK
IGNsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogCkBAIC01NCwx
MiArNTUsMTIgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAvLyBsaXN0IHdoaWNoIGRvZXMg
bm90IGdldCByZWNsYWltZWQgYWxsIGF0IG9uY2UpLgogY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKLSAgICBHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYsIFZNJik7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4mJik7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwog
Ci0gICAgc3RhdGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKKyAgICBzdGF0
aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYga2V5cykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cykpKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpAQCAtNjgsNiArNjksOCBA
QCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewog
ICAgICAgICBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwodmlzaXRvcik7CiAgICAgfQogICAg
IAorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAmbV9rZXlzOyB9CisKICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOwog
ICAgIAogcHJvdGVjdGVkOgpAQCAtODEsNiArODQsOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogCiAgICAgYm9vbCBtX21heUJlRXhlY3V0
aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNKZXR0aXNvbmVkIHsgZmFsc2UgfTsKKyAgICBW
TSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1fa2V5czsKIH07
CiAKIC8vIFVzZSB0aGlzIGlmIHlvdSB3YW50IHRvIG1hcmsgb25lIGFkZGl0aW9uYWwgb2JqZWN0
IGR1cmluZyBHQyBpZiB5b3VyIHN0dWIKQEAgLTg4LDcgKzkzLDcgQEAgY2xhc3MgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIGNsYXNzIE1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIHB1Ymxp
YzoKICAgICBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAgICAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0Nl
bGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsK
KyAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKICAg
ICB+TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogICAgIAogcHJvdGVj
dGVkOgpAQCAtMTA5LDcgKzExNCw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKIAotICAgIEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNv
bnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERp
c3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhj
ZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIGNvbnN0IEpT
Q2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYs
IENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKICAgICB+R0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAogICAgIHZvaWQgYWJvdXRU
b0RpZSgpIGZpbmFsOwpAQCAtMTMyLDYgKzEzNyw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklU
CiAvLyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogLy8gICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKIC8v
ICAgIFZNJiB2bSwKKy8vICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlz
LAogLy8gICAgY29uc3QgSlNDZWxsKiBvd25lciwKIC8vICAgIGJvb2wgbWFrZXNDYWxscywKIC8v
ICAgIC4uLik7CkBAIC0xNDMsNyArMTQ5LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5l
V2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8v
IHdheS4KIAogUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKLSAgICBj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBj
b25zdCBKU0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCisgICAgY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIEZpeGVkVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4mJiBrZXlzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXND
YWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNh
bGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVy
cywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2YTUx
NmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgwMDc3YjBjNGE1
NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDYwLDYgKzQ2
MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3Vt
ZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1
IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQ
UjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4
OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNl
cnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24g
V2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6eDY7IC8vIHJl
Z1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0gQVJNNjRSZWdp
c3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQ
UjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsg
Ly8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBB
Uk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCmluZGV4IDU1NTYzMDM3YWViNThmZWM5YjNmMDNmN2NmZWUxZmMwZGUz
ZWNlMjMuLjQxZDhiOGY4MjBiOTI3NjZhNzE2YWFhOGQ2M2RmMWI1ZDhmYTgwNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkwMiwxMiArOTAyLDEyIEBAIHZvaWQgSklUOjpsaW5r
KCkKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29tcGlsYXRpb25JbmZvIDogbV9i
eVZhbENvbXBpbGF0aW9uSW5mbykgewogICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFi
bGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5ub3RJbmRleEp1bXA7Ci0gICAg
ICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0
clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4g
bm90SW5kZXhKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1w
KS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1
bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRy
VGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKIAogICAgICAgICAgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1w
OwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0
clRhZz4gYmFkVHlwZUp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBl
SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwogCkBAIC05MTYsMTQg
KzkxNiwxOSBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFy
Z2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9j
YXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRh
cmdldCkpOwogCiAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPnNl
dFVwKAotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCwKLSAgICAgICAgICAgICAgICBiYWRU
eXBlSnVtcCwKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLAogICAgICAgICAgICAg
ICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKICAgICAgICAgICAgICAgICBieVZh
bENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCiAgICAgICAgICAgICAgICAgZG9uZVRhcmdl
dCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwKICAgICAgICAgICAgICAgICBz
bG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbklu
Zm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFn
Z2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGls
YXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0
LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5k
ZXhKdW1wID0gbm90SW5kZXhKdW1wOworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25J
bmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3NWM5Y2I5
NmIxMzY1MzJmMDg2MWYyZjBhODA1OGVmYzZiMDU2YjI0Li4zMWM3YTE1MDI4ZDk1NTMwNjZmYjdh
ODlkMmMxZjVlYTk2M2MzZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI5NCw2ICsy
OTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25DYWxs
OwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsKEFkZHJlc3MgZnVuY3Rpb24p
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24sIE9wZXJhdGlvblB0clRhZyk7
CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIENh
bGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk1LDM5ICs0MDAsMzkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFuZCB6
ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAgICAgLy8gU3RydWN0dXJl
IGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2FzZXMuIEZhbGwtdGhyb3Vn
aAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdUMCwgYW5kIGl0IGlzIG5v
dCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKSB7IHJldHVybiBl
bWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMyU2hhcGUpOyB9Ci0g
ICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBl
eHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdEFy
cmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
KTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1w
TGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsgcmV0dXJuIGVtaXRDb250
aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBlKTsg
fQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKKyAgICAgICAgSnVt
cExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBleHBlY3RlZFNo
YXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFn
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbyk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNv
bnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbyk7CiAKICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW4gcmVnVDEs
IGJhc2UgaXMgaW4gcmVnVDAuIHJlZ1QyIGNvbnRhaW5zIGluZGVjaW5nIHR5cGUuCiAgICAgICAg
IC8vIFRoZSB2YWx1ZSB0byBzdG9yZSBpcyBub3QgeWV0IGxvYWRlZC4gUHJvcGVydHkgaXMgaW50
LWNoZWNrZWQgYW5kCiAgICAgICAgIC8vIHplcm8tZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVj
a2VkLiBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4KICAgICAgICAgLy8gcmV0dXJucyB0
aGUgc2xvdyBjYXNlcy4KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1
bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgSW50MzJTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbywgSW50MzJTaGFwZSk7
CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBM
aXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlLCBEb3VibGVTaGFwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbywgRG91YmxlU2hhcGUp
OwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1w
TGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3Vv
dXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgfQogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlw
ZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENvbnRpZ3Vv
dXNTaGFwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlz
dCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwor
ICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3As
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
QnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZh
bChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBK
dW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSk7CiAKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKQEAg
LTg3MCwxMyArODc1LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
Pik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhD
YWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4pOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTWV0YWRhdGE+CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIEFkZHJlc3MsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bD4KQEAgLTg4Niw2ICs4OTUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxs
T3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4u
IGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RD
YWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyhHUFJJ
bmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAj
aWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KICAgICAgICAgc3RydWN0IGlzNjRCaXRUeXBlIHsKQEAgLTkwNiw2ICs5MjMsMTcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CiAgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIC8vIHg2
NCBXaW5kb3dzIGNhbm5vdCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBp
cyBsYXJnZXIgdGhhbiA2NCBiaXRzLgorICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0
VHlwZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46
OnZhbHVlKQorICAgICAgICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRk
cmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQ
YXRoUmV0dXJuVHlwZShBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQp
KTsKKyAgICAgICAgfQogI2Vsc2UgLy8gT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9w
ZXJhdGlvbiwgQXJncy4uLiBhcmdzKQpAQCAtOTEzLDYgKzk0MSwxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOwog
ICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9u
KTsKICAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRh
cmdldCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAg
ICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5vbkFy
Z0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2VuZGlmIC8vIE9TKFdJTkRPV1Mp
ICYmIENQVShYODZfNjQpCiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGEsIHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC05MjMsNiArOTU4LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBz
dGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQs
IHZvaWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRh
dGEsIEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3Mp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9w
ZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0
YSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0KTsK
KyAgICAgICAgfQorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b25XaXRoUmVzdWx0KE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzLCBBcmdzLi4uIGFyZ3MpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCmluZGV4IDFiNDlkNDg5ZGFhMmI3ODZhYjc5MzkyZjlhMzRlYmM2NDRjZGFiMTguLjM3
NGJhMzBjN2Y3NjcxMzc5NDcwZTRkZDlkNGRhODM2NWRhMzYwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMzk4LDggKzM5OCw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRC
eUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVu
dGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00MzIsOCArNDMyLDE1IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDCiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVy
YXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihpZGVudCkucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJ
bmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVu
dGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICBhdXRvIGRvbmUgPSBqdW1wKCk7CiAKICAgICBub3RP
YmplY3QubGluayh0aGlzKTsKQEAgLTQ4MCw4ICs0ODcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgUmVn
aXN0ZXJTZXQgcHJlc2VydmVkUmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKTsKICAgICAgICAgcHJlc2VydmVkUmVncy5hZGQodmFsdWVHUFIpOwogICAgICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKLSAgICAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5h
bWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVn
cyhkb25lR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVz
ZXJ2ZWRSZWdzLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwgSlNWYWx1
ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCByZWdUMywgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKQEAgLTQ5OSw4ICs1MDYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgSnVtcExp
c3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVH
UFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKIAogICAg
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRC
eUlkKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgcmVnVDQsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBw
ZW5kKGdlbik7CkBAIC01MjgsMTYgKzUzNSwyMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Qwog
ICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogICAgICAgICBKdW1wTGlzdCBub3RPYmpl
Y3Q7CiAgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRH
UFIpKTsKLSAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVz
dWx0R1BSKSk7CiAKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9w
ZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2Vu
ID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKICAgICAgICAgCiAgICAgICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7
CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQ
UikpOwogCisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2Zp
bGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCiAgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsKICAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CiAgICAgICAgIGVtaXRKdW1wU2xv
d1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwpAQCAtNTU2LDggKzU3MCwxMyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93QwogCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVW
UmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwotCisgICAgICAgIENhbGwgY2FsbDsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkg
eworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCB2YWx1ZVZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1
bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAKaW5kZXggZWNjNGU1ZjNmZjZkMDdmOTljMDc4NGRkNGMxMmRlYmEwZTIxMGRj
Zi4uMTUyNTE0YWZkY2FjNzgyYWM5Yzg3NGU1NTBhZmZiOWM3MjhiZWEwNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMzk2LDEyICszOTYsMTQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxv
Y2ssCisgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksCiAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLAogICAgICAgICBKU1ZhbHVlUmVncyh0
YWdJdGVyYXRvckdQUiwgcGF5bG9hZEl0ZXJhdG9yR1BSKSwKICAgICAgICAgbmV4dFJlZ3MsCisg
ICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAg
IAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTUwNSwxMiArNTA3LDE0IEBA
IHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZChwYXlsb2FkVmFsdWVHUFIpOwogICAg
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLAor
ICAgICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5k
ZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAgICAgICBwcmVzZXJ2ZWRSZWdz
LAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwKICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAg
ICAgICAgIGRvbmVSZWdzLAorICAgICAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAg
IEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC01MzMsMTIg
KzUzNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKIAogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQs
CiAgICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBD
YWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAg
ICAgICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAgICAgICAg
IHJlc3VsdFJlZ3MsCisgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNj
ZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgKaW5kZXggNmZhNzI0NGVmMGEwOGM5ZjA0N2EzMjIwNGY3MzdkMjkyODcx
OTA2Zi4uODc3NzBiZjg0OGEzYWZhOWRkYmYwYjE4MjIzN2YxM2NhMGUyYmJiYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTUyLDEzICs1MiwxNSBAQCBjbGFzcyBUcmFja2Vk
UmVmZXJlbmNlczsKIGNsYXNzIFZNOwogCiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90IHsK
LSAgICBOb25lLAotICAgIEhvc3RDYWxsVGh1bmssCi0gICAgSW50ZXJwcmV0ZXJUaHVuaywKLSAg
ICBCYXNlbGluZUpJVCwKLSAgICBERkdKSVQsCi0gICAgRlRMSklUCisgICAgTm9uZSA9IDBiMDAw
LAorICAgIEhvc3RDYWxsVGh1bmsgPSAwYjAwMSwKKyAgICBJbnRlcnByZXRlclRodW5rID0gMGIw
MTAsCisgICAgQmFzZWxpbmVKSVQgPSAwYjAxMSwKKyAgICBERkdKSVQgPSAwYjEwMCwKKyAgICBG
VExKSVQgPSAwYjEwMSwKIH07CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdpZHRoT2ZKSVRU
eXBlID0gMzsKK3N0YXRpY19hc3NlcnQoV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoc3RhdGljX2Nh
c3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxKSVRUeXBlPj4oSklUVHlwZTo6RlRMSklUKSkgKyAx
ID09IHdpZHRoT2ZKSVRUeXBlKTsKIAogY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxKSVRDb2RlPiB7CiBwdWJsaWM6CkBAIC0xNTYsNiArMTU4LDE1IEBAIGNsYXNz
IEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogICAgICAg
ICByZXR1cm4gaml0VHlwZSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUg
PT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgdXNlU2hh
cmVkSUMoSklUVHlwZSBqaXRUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VT
aGFyZWRJQygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCk7CisgICAg
fQorCiAgICAgdmlydHVhbCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIGVudW0gY2xhc3MgU2hhcmVBdHRyaWJ1
dGUgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggZjUyYzNjNzYyMTVhYTMyNmRkZTlmODk4NTYy
OThjM2RlNjQ2MjJjZS4uMmZlOGI5YjhlMzFjOGJkYmEzNzE0MmE2ZjYwODc4NGJkYjQzZmRiMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKQEAgLTQzLDkgKzQzLDEwIEBAIHN0YXRpYyBTdHJ1Y3R1cmVTdHViSW5mbyog
Z2FyYmFnZVN0dWJJbmZvKCkKIH0KIAogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwK
ICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKICAgICA6IG1fY29kZUJsb2Nr
KGNvZGVCbG9jaykKKyAgICAsIG1faml0VHlwZShqaXRUeXBlKQogewogICAgIG1fc3R1YkluZm8g
PSBtX2NvZGVCbG9jayA/IG1fY29kZUJsb2NrLT5hZGRTdHViSW5mbyhhY2Nlc3NUeXBlLCBjb2Rl
T3JpZ2luKSA6IGdhcmJhZ2VTdHViSW5mbygpOwogICAgIG1fc3R1YkluZm8tPmNhbGxTaXRlSW5k
ZXggPSBjYWxsU2l0ZTsKQEAgLTYwLDIwICs2MSwyMiBAQCB2b2lkIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yOjpmaW5hbGl6ZSgKIAogICAgIG1fc3R1YkluZm8tPmRvbmVMb2NhdGlvbiA9IGZhc3RQ
YXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9kb25lKTsKIAotICAgIG1fc3R1Yklu
Zm8tPnNsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyht
X2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dQYXRoQ2FsbExvY2F0aW9uID0g
c2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CiAg
ICAgbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25P
ZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zbG93UGF0aEJlZ2luKTsKIH0KIAogSklUQnlJZEdl
bmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGUsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lz
dGVycykKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAs
IG1fdmFsdWUodmFsdWUpCiB7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9h
ZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwog
ICAgIG1fc3R1YkluZm8tPnJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHVi
SW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHVi
SW5mby0+dmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsKQEAgLTgzLDEzICs4NiwxNSBAQCBK
SVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
IHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvcjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9j
YXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0
aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0g
bV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCiB2b2lkIEpJVEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5s
aW5lSUNTaXplKQogeworICAgIC8vIFdlIGdlbmVyYXRlIHRoZSBzYW1lIGNvZGUgcmVnYXJkbGVz
cyBvZiB3aGV0aGVyIFNoYXJlZElDIGlzIGVuYWJsZWQgYmVjYXVzZSB3ZSBzdGlsbCBuZWVkIHRv
IHVzZSBJbmxpbmVBY2Nlc3MKKyAgICAvLyBmb3IgdGhlIHBlcmZvcm1hbmNlIHJlYXNvbi4KICAg
ICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fz
c2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpOwogICAgIG1fc2xvd1BhdGhKdW1wID0gaml0Lmp1
bXAoKTsKQEAgLTEwMSw5ICsxMDYsOSBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaQogfQogCiBK
SVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0
VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJh
c2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAgICAsIG1faXNMZW5ndGhBY2Nlc3MocHJvcGVydHlO
YW1lLnVpZCgpID09IGNvZGVCbG9jay0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgp
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHZhbHVlLnRhZ0dQ
UigpKTsKQEAgLTExNSw5ICsxMjAsOSBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNS
ZWdzKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZh
bHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgdmFs
dWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzLCBHUFJSZWcgc3R1Yklu
Zm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVy
cywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNS
ZWdzLnBheWxvYWRHUFIoKSAhPSB0aGlzUmVncy50YWdHUFIoKSk7CiAKQEAgLTEzMywxMCArMTM4
LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5
SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLAorICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1
YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoLCAKICAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2lu
ZCBwdXRLaW5kKQotICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFs
dWUsIHN0dWJJbmZvR1BSKQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAg
ICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7CkBAIC0xNzEsMTQgKzE3NiwxNSBAQCBWX0pJVE9wZXJh
dGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1KSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxH
ZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJl
c3VsdCwgR1BSUmVnIHNjcmF0Y2gpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCitK
SVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ss
IGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5
VmFsLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IGZhbHNlOwogICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5
bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7
CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIo
KTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAg
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAg
ICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTE5MSwyNiArMTk3
LDMwIEBAIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9
IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29k
ZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Ns
b3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7CiB9CiAKLXZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlWYWxH
ZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAg
IEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRU
eXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1Bh
dGhTdGFydExvY2F0aW9uOwogfQogCi1KSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgR1BSUmVnIHNjcmF0Y2gpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKK0pJVERl
bEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNl
ZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSB0
cnVlOwogICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigp
KTsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9zdHViSW5m
by0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VS
VChiYXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFz
ZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CkBAIC0yMjMsMjIgKzIzMywyNSBAQCBKSVREZWxCeUlk
R2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcgogdm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAg
IG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOwor
ICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJv
dXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5w
YXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklU
RGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExp
bmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShM
aW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJU
KG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAg
ICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQ
YXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1
YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0K
IAogSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQot
ICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBB
Y2Nlc3NUeXBlOjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAg
ICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6
SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAgICAvLyBG
SVhNRTogV2UgYXJlIG5vdCBzdXBwb3J0aW5nIGZhc3QgcGF0aCBmb3IgImxlbmd0aCIgcHJvcGVy
dHkuCiAgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5TmFtZSk7CkBAIC0yNTEsMTUgKzI2NCwxNSBA
QCB2b2lkIEpJVEluQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogfQogCiBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAorICAgIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBw
cm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQUlJl
ZyBzY3JhdGNoMiwgYm9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0KQotICAgIDogSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKKyAgICA6IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBt
X3N0dWJJbmZvLT5iYXNlR1BSID0gdmFsdWU7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQ7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm90b3R5cGVHUFIgPSBwcm90b3R5cGU7Cisg
ICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAg
ICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjc5LDIxICsy
OTIsMjQgQEAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigK
IAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJiBqaXQpCiB7Ci0gICAgbV9qdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBt
X3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0
VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1f
c3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwog
ICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
IHsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQ
YXRoLCBzbG93UGF0aCwKLSAgICAgICAgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4obV9qdW1wKSk7Ci0gICAgCi0gICAgZmFzdFBhdGgubGluayhtX2p1bXAubV9qdW1w
LCBzbG93UGF0aC5sb2NhdGlvbk9mPE5vUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pKTsKKyAgICBC
YXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5m
by0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1KSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklU
R2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQotICAgIDogQmFzZShjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMp
CitKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBl
LCB1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3Jlc3VsdChyZXN1
bHQpCiB7CkBAIC0zMDIsNiArMzE4LDcgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBt
X3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHVi
SW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVU
YWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CkBAIC0zMTIsMjAgKzMyOSwyMyBAQCBKSVRHZXRCeVZh
bEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
ZGVPcmlnaW4gY29kZQogdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0
aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAg
ICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsK
KyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJS
b3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQu
cGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNT
RVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQ
YXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4o
bV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBh
dGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2Nv
ZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpCi0gICAg
OiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwg
dXNlZFJlZ2lzdGVycykKK0pJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5
cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BSKQor
ICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0g
QWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBl
OjpTZXRQcml2YXRlQnJhbmQpOwogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IGZhbHNlOwpAQCAtMzMzLDYgKzM1Myw3IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVy
YXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsCiAg
ICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1Yklu
Zm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIg
PSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJh
c2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYuYnJhbmRUYWdHUFIg
PSBicmFuZC50YWdHUFIoKTsKQEAgLTM0MywxNiArMzY0LDE5IEBAIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsCiB2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsK
LSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
KTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1f
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBq
aXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lk
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVy
JiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpm
aW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9m
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFz
dFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisg
ICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRM
b2NhdGlvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggZDZjYTZlMTZhM2Yz
MmM2NDBmOTZjYjI1NTE5NTU0OGIwZjJlYjY1MS4uYjY5MDg3ODU3NjQzOGQ5N2Q5OTQzMGFjNjNk
OTE3YmMyZWM5M2Y0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNDEsMTIgKzQxLDEyIEBAIGNsYXNzIENvZGVCbG9j
azsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBp
bnQ4X3Q7CitlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCiBjbGFzcyBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvciB7CiBwcm90ZWN0ZWQ6CiAgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Io
KSB7IH0KLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKENvZGVCbG9jayos
IEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKICAgICAKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8oKSBjb25zdCB7IHJldHVybiBtX3N0dWJJbmZvOyB9CkBAIC02NSw2
ICs2NSw3IEBAIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICAKIHByb3RlY3Rl
ZDoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEpJVFR5cGUgbV9qaXRUeXBlOwog
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIG1fZG9uZTsKQEAgLTc3LDggKzc4LDggQEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgSklUQnlJZEdlbmVyYXRvcigp
IHsgfQogCiAgICAgSklUQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpOwog
CiBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QK
QEAgLTEwMSwxMyArMTAyLDEzIEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fc2xvd1Bh
dGhKdW1wOwogfTsKIAotY2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKK2NsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklU
QnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigpIHsgfQog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hl
YWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hl
YWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vzc1R5cGUpOwogICAgIAogICAgIHZvaWQgZ2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogCkBAIC0xMTUsMjYgKzExNiwyNiBAQCBj
bGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAg
IGJvb2wgbV9pc0xlbmd0aEFjY2VzczsKIH07CiAKLWNsYXNzIEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoK
ICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRX
aXRoVGhpc0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB0aGlzUmVncyk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2
b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CiAKLWNsYXNzIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRQdXRC
eUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgog
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6
OnN0cmljdCgpKQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0g
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtp
bmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAKICAg
ICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0NSwx
NCArMTQ2LDE0IEBAIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdl
bmVyYXRvciB7CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCi1jbGFzcyBKSVREZWxCeVZh
bEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRE
ZWxCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAg
IEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigK
LSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAg
ICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5m
b0dQUiwgR1BSUmVnIHNjcmF0Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1Bh
dGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0xNzAsMTQgKzE3MSwxNCBAQCBjbGFzcyBKSVREZWxC
eVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBK
SVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2Ns
YXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1Ymxp
YzoKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVREZWxCeUlkR2VuZXJh
dG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7
CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAor
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xv
d1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0xOTUsNDIgKzE5Niw1MCBAQCBjbGFzcyBKSVRE
ZWxCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNz
IEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJ
VEluQnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1Ymxp
YzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEluQnlJZEdlbmVyYXRv
cigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9p
ZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRJbnN0
YW5jZU9mR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNz
IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IgewogcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cjsKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKCkgeyB9CiAgICAgCiAgICAgSklUSW5zdGFu
Y2VPZkdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsCi0g
ICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHNjcmF0Y2gxLCBH
UFJSZWcgc2NyYXRjaDIsCisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcg
cmVzdWx0LAorICAgICAgICBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCiAgICAgICAgIGJv
b2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlKTsKICAgICAKICAgICB2b2lkIGdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1
bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1w
OworICAgIH0KKwogICAgIHZvaWQgZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVm
ZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOwogCiBwcml2YXRlOgotICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fanVtcDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQ
YXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBCYXNlID0gSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7
IH0KIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yNTEsMTQg
KzI2MCwxNCBAQCBjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93
UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgOiBw
dWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCk7CisgICAgICAgIENvZGVC
bG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAppbmRleCBlNzljZDM2ZWY1N2Q3YmRjZWNlMTc2OGQwNTg4YWZl
ZWQ4ODg1MDE1Li4yOGE2NDMzN2UyZjA4ZjVmMjBhZGE3MzdiYjc2YmNiNDczNjIyOGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMzMsMTcgKzMzLDE3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9y
QXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5
TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAg
ICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsK
KyAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBl
LCBieVZhbEluZm8pOwogICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICByZXR1cm4gZW1pdERv
dWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVt
aXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAg
ICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQo
Y3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1
b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2Fz
ZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChj
dXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdEFycmF5U3Rv
cmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyOCw2ICsxMjgsMTMgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2soY29uc3QgRnVuY3QKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQor
eworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIGFwcGVuZENhbGwoZnVuY3Rpb24pOwor
ICAgIGV4Y2VwdGlvbkNoZWNrKCk7Cit9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0
KQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKIHsKQEAgLTE1Nyw2ICsxNjQsMTYgQEAgQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVz
cyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRTdG9y
ZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0
aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQogewpAQCAtMTcxLDYgKzE4OCwx
OSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEm
IG1ldGFkYXRhLCBBZGRyZXNzIGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAg
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIp
OworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxz
ZQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIEpTVmFsdWVSZWdzKHJldHVy
blZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5W
YWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewogICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25DZWxsKHJlZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAppbmRleCBiZDU1YTNkMDUxNmQ0NmI2N2FlNTk3YjZjM2E0ZjU4N2I1ZmRkNzMwLi40NWEw
NzUxYzk2YzZhMmFjZThiNjRmZjA0ZjM0OTAzY2RkMWY3NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE2NCwxMyArMTY0LDE4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJl
c3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUKICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisg
ICAgICAgIHJlZ1Q1LAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2luc3RhbmNl
T2ZzLmFwcGVuZChnZW4pOwogICAgIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsK
QEAgLTE4Niw3ICsxOTEsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBKSVRJbnN0
YW5jZU9mR2VuZXJhdG9yJiBnZW4gPSBtX2luc3RhbmNlT2ZzW21faW5zdGFuY2VPZkluZGV4Kytd
OwogICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotICAgIENhbGwgY2Fs
bCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5m
bygpLCByZWdUMiwgcmVnVDEpOworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZTsKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyLCByZWdU
MSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCkBAIC0xNzE5LDcg
KzE3MzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgIAogICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRz
LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1
MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0Lgot
ICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBl
bWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlw
ZSwgbnVsbHB0cik7CiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0cnVlKSkpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xNzM0
LDggKzE3NDYsMTMgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2RlQmxv
Y2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIkJhc2VsaW5l
IGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgp
KTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRU
eXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMp
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7
CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2Rl
KCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9j
YXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1
cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAgIH0KIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTc2OSwxMSArMTc4NiwxMiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBv
dGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xv
d0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBi
YWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShj
dXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgCiAgICAg
bW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdU
MCk7CiAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlw
ZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0g
bGFiZWwoKTsKQEAgLTE3OTksNyArMTgxNywxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFz
X2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudAog
ICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFs
SW5mbyk7CisKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQ7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihieVZhbEluZm8pLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbjxkZWNsdHlwZShvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KT4o
QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IHJlZ1QwLCByZWdUMSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgfSBlbHNlCisgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQs
IGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwg
cmVnVDEsIGJ5VmFsSW5mbyk7CiAKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxD
b21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBj
YWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmlu
ZGV4IDhkYjM1OWViZDhjZDA1NjY5NzNiODYzYzQ4Njc0MWE3ZmFlMjI0NWUuLjRkNzQxMjZiZTFl
M2RlNDMwZDNhNmQ5Y2I3ZmRkYjZkYzg2ZjdlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTE2MiwxMyArMTYyLDE1IEBAIHZvaWQgSklU
OjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvdG8pOwogICAgIAogICAgIEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJl
c3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUKICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisg
ICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChnZW4pOwogICAgIAogICAg
IGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7CkBAIC0xMTgzLDcgKzExODUsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8s
IFJldHVybkFkZHJlc3NQdAogICAgIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3Ro
ZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dD
YXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2Rl
LCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9k
ZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAK
QEAgLTExOTgsNyArMTIwMCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQ
cm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1f
Y29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJC
YXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVw
IiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2Vk
VmFsdWUoKSk7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2Fs
bDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVz
c1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKIH0KIApAQCAtMTIzNCw3ICsxMjM2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBM
aXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwg
bW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJh
eU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAKICAgICBhZGRTbG93Q2FzZShiYWRUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDIx
YWYzNjUzMDlkMjc5MzM3MWRlNmViNDAwYjQ0NjhhYTgzNzBiMjUuLjAyOTJiOWI4YzRlY2UyN2E4
MTY3NTAwYTM1ZDQxMjU2NTQ5ZDYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtMTAwMiw3ICsxMDAyLDEwIEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhCiAgICAgaWYgKHJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewog
ICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAg
ICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbEdlbmVy
aWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFs
R2VuZXJpYyk7CiAgICAgfQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwo
Z2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNt
YU1vZGUpKTsKIH0KQEAgLTEwOTQsNyArMTA5NywxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KgogICAgIGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAg
ICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9v
a1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAg
ICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVy
bkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFs
dWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKQEAgLTEyNzgsNyArMTI4NCwxMCBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KgogICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0
aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1p
emUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3Rp
UGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERS
RVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVC
bG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJf
UkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOwogICAgIH0K
IAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTI1NjcsNyArMjU3NiwxMSBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgRW5jb2Rl
ZEpTVmFsdWUsIChKUwogICAgICAgICBpZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0g
MTAKICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkp
IHsKICAgICAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgotICAgICAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVS
Tl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CisgICAgICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAg
ICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA2NDQ2
N2U5YTI1ZTE0NzdlMWVjMDYzNWQ0MDk3NTRkOGU3NTM5MmVmLi5kMTcyZWRmMTE3ZjdhODMxYWVj
NzNlOWU0ZGQwZjRhNjMzNDVmZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNjksMTIgKzY5LDE1IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAg
ICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgcmVzdWx0UmVncyk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlc3VsdFJlZ3MsIHJlZ1QyKTsKICAgICAgICAgaWYgKGlzT3BlcmFu
ZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
Ci0gICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYWRkU2xvd0Nhc2UoKTsKICAgICAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAg
ICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIHJlc3VsdFJlZ3MpOwpAQCAtOTMsOCArOTYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
UwogCiAgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICAgICAgSklUR2V0QnlW
YWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgICAg
ICsrbV9nZXRCeVZhbEluZGV4OworICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOworCiAgICAgICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTE4
LDcgKzEyMSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIocHJvZmlsZSksIHByb2ZpbGVHUFIpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOworICAgICAgICBDYWxsIGNhbGw7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlW
YWxPcHRpbWl6ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJu
VmFsdWVHUFIpOwpAQCAtMTM4LDcgKzE0NSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAg
IGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTE1Nyw5ICsxNjUsMTAgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVw
YXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVH
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRp
cmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5y
ZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKQEAgLTE4MiwxMCArMTkxLDEzIEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwog
CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhw
cm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRSZWdzLCByZWdUMik7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQor
ICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayks
IHJlc3VsdFJlZ3MpOwpAQCAtMjAxLDggKzIxMyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
CiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0
b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgKyttX2dldEJ5VmFs
SW5kZXg7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0
QnlWYWxJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTIyNiw3ICsyMzcsMTEgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmUKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBz
dHViSW5mb0dQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBlbHNl
CisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNDUsNyArMjYwLDggQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgog
ICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAo
IUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIs
IHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAt
MjYzLDkgKzI3OSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVh
ZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0
LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAg
IGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtMjg1
LDEwICszMDIsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoYmFzZUdQUiwgYmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZh
dGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHJlZ1QyKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nl
cy5hcHBlbmQoZ2VuKTsKIAogICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQg
dGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVy
cy4KQEAgLTMwMiw4ICszMjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRl
eF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVC
cmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwog
CiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzI4LDkgKzM0NywxNCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0
aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKT46OkFy
Z3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0UHJp
dmF0ZUJyYW5kT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKICNlbmRpZgorCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKIH0KIApAQCAtMzQ2LDEwICszNzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9w
cml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIApAQCAtMzU3LDggKzM4NCw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJh
bmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAgICArK21fcHJpdmF0ZUJy
YW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4g
PSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCkBAIC0zODMsNyArNDA5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVj
a19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3Bl
cmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlv
blRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3Vt
ZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6
ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNoZWNrUHJp
dmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTQxNSw4ICs0NDUsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAg
ICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleDsKICAgICBpZiAoIXByb3BlcnR5TmFtZUlzSW50ZWdl
ckNvbnN0YW50KSB7Ci0gICAgICAgIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdElu
dChyZWdUMSk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAg
YXV0byBpc0ludDMyID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7CisgICAgICAgICAgICBmYXJKdW1w
KEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzSW50MzIubGluayh0aGlzKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5v
dEludChyZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAg
IH0KICAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICAgICAgemVy
b0V4dGVuZDMyVG9Xb3JkKHJlZ1QxLCByZWdUMSk7CiAgICAgfQpAQCAtNDMyLDIzICs0NjgsMjQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIEpJVEFycmF5TW9kZSBtb2RlID0gY2hvb3NlQXJyYXlNb2RlKHBy
b2ZpbGUpOwogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFs
SW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5m
byk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAg
ICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUs
IGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgot
ICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBhZGRT
bG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xv
d0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTQ1
Nyw3ICs0OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2Rl
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJ
VDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5n
VHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7CkBAIC00NjUsNyArNTAyLDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2Vu
ZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAg
ICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAg
ICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJy
YW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICAg
ICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBU
YXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBl
LmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKwogICAgIAogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIp
OwogICAgIEp1bXAgb3V0T2ZCb3VuZHMgPSBicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBB
ZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKQEAgLTUx
NSw3ICs1NjEsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRl
Y29kZS5tX3ZhbHVlOwpAQCAtNTIzLDcgKzU2OSwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
KQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdl
U2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3Jy
ZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFn
ZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZv
LT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAg
ICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0z
MihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdl
U2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhP
ZmZzZXQoKSkpKTsKIApAQCAtNTY4LDggKzYyMyw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdUMCwgdmFsdWUsIHJlZ1QxKTsK
IAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAot
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVj
bWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0
cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8g
RklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2
ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC01ODAsNyArNjM1LDEzIEBAIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtp
bmQgcHV0S2luZCwKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICBnZW4u
c2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUu
cmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZv
Ojpub25BcmdHUFIwLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAg
IH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlv
bigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHVi
SW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFw
cGVuZChqdW1wKCkpOwogCkBAIC02MzgsOCArNjk5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BS
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAg
IGF1dG8qIG9wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRp
bWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7Ci0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb24pOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBieVZhbEluZm8tPm1fc2xvd09w
ZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9w
ZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5k
Q2FsbChpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC02NTcsNyArNzIxLDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtNjc1
LDkgKzc0MCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BSLCBlY21hTW9kZUdQ
Uik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBD
b25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9w
ZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2Fs
bCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQ
UjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOwpAQCAtNjk2LDgg
Kzc2MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmVnVDAsIGJhc2UpOwogCi0gICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBh
dGNoYWJsZUp1bXAoKTsKLSAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgUGF0Y2hh
YmxlSnVtcCBmYXN0UGF0aEptcDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJ
bmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAgICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICB9CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxh
YmVsKCk7CiAgICAgCkBAIC03NDMsNyArODE0LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
CiAgICAgbW92ZShUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSwgcHV0S2luZEdQUik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9wcml2YXRlX25h
bWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUp
OworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBw
ZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBA
IC03NjEsNyArODM2LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwpAQCAtNzc5LDkgKzg1NSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxs
RwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFt
ZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQ
UiwgYnlWYWxJbmZvR1BSLCBwdXRLaW5kR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxs
IGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1
cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtODQ2LDExICs5MjMsMTQgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKICAgICBKSVREZWxCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAo
IUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dD
YXNlKCk7CiAgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVn
VDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC04OTgsMTUgKzk3OCwxOCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUu
dmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplOworICAgIGVsc2UKKyAg
ICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFs
dWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0g
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLQogICAgIGJv
eEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQpAQCAtOTE4LDcgKzEwMDEsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC05MzUsOSArMTAxOSwxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGly
ZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmlu
ZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJK
dW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJl
dCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVs
X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC05NTYsMTAgKzEwNDEsMTMgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHByb3BlcnR5KTsKICAgICBKSVREZWxCeVZhbEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDMsIHJlZ1QyKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAg
ICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAtMTAwOCwxNSArMTA5Niwx
OCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdl
bi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0
aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTEwMjgsNyArMTExOSw4IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0
KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEwNDUsOSArMTEz
NywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2lu
ZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3Rl
YWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGpp
dC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAg
ICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKQEAgLTEwNjgsOCAr
MTE2MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVz
dWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdU
MCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTExMCw3ICsxMjAzLDExIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTMzLDggKzEyMzAsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3Ms
IEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTExNzYsNyArMTI3MywxMSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
R2V0QnlJZERpcmVjdE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKKyAg
ICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEyMDcsOCArMTMw
OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdz
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0
UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMjMzLDggKzEzMzQsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsK
IAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRC
eUlkc1dpdGhUaGlzLmFwcGVuZChnZW4pOwpAQCAtMTI3NSw3ICsxMzc2LDExIEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CiAgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEyOTQsNyArMTM5OSw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQg
aml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEzMTEsOSAr
MTQxNywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwg
Y2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2Yg
cmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAg
ICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTEzNTQsNyArMTQ2MSwxMSBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBw
ZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxs
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFs
dWVHUFIpOwpAQCAtMTM3Myw3ICsxNDg0LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAg
ICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTM5Miw5ICsxNTA0LDEwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfcHJlcGFyZUNhCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNh
bGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJl
dHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGpp
dC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAg
aml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbCIpOwpAQCAtMTQxOCwxMSArMTUzMSwx
MCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJh
c2VWUmVnKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
Ci0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwg
ZWNtYU1vZGUoYnl0ZWNvZGUpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksCiAgICAgICAgIGRp
cmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7Ci0gICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTE0NjUsNyArMTU3Nywx
MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAg
ICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkp
OwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAKQEAgLTE0ODEsNyArMTU5Nyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAot
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIy
OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTE1MDAsOSArMTYxNywxMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0
YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8v
IG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAg
ICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xNTIxLDggKzE2MzksOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcp
OwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCkp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywg
KmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNTY0LDcgKzE2
ODIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjc1NCw4ICsyODc2LDggQEAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0
S2luZCBwdXRLaW5kLAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOwogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywg
cmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjc2NSw3
ICsyODg3LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICAvLyBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdl
IGhhdmUgdG8gcmVsb2FkIHRoZSB0YWcuCiAgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwog
Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBt
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhy
ZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3
Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxP
cGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0
eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRp
b24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBn
ZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAo
KSk7CiAKQEAgLTI4MTcsMjkgKzI5NDUsMjkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8KIAog
ICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRy
KTsKICAgICAgICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRB
cnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7
CiAgICAgICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSB0eXBlZEFycmF5
VHlwZUZvckpJVEFycmF5TW9kZShhcnJheU1vZGUpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkp
Ci0gICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVj
b2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBl
ZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIsIHR5cGUpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSBCaWdJbnQ2NEFycmF5IC8g
QmlnVWludDY0QXJyYXkgaW4gSUMKICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgQmlnSW50NjRB
cnJheSAvIEJpZ1VpbnQ2NEFycmF5IG5ldmVyIGNvbWVzIGhlcmUuCiAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTgzCiAgICAgICAgICAg
ICBBU1NFUlQoaXNGbG9hdCh0eXBlKSk7Ci0gICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Rmxv
YXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIHR5cGUpOworICAgICAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yODY2LDggKzI5OTQsMTQgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8KICAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAg
ICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbF9kaXJlY3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2lu
dCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRh
Z2dlZFZhbHVlKCkpOwogICAgIH0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlW
YWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFn
PihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVz
cykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsK
KyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9
IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5t
X2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykp
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQog
Ly8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlv
biB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4
cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgpAQCAtMjkwNiw4ICszMDQwLDEzIEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BCiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9u
YW1lIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBv
aW50ICVwIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1f
Y29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBi
eVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29k
ZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8
UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQ
dHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRl
eEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0g
ZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1f
bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykp
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2Vu
ZXJpYykpOworICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0yOTQ0LDE1ICsz
MDgzLDIwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgICAgICJCYXNlbGluZSBwdXRf
YnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QpID8gIl9kaXJlY3QiIDog
IiIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVC
bG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJ
bmZvLT5zdHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkp
OwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVy
bkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFn
PihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9
PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVy
YXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBU
YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZv
LT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93
T3BlcmF0aW9uID0gcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9ub3RJbmRl
eEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsK
KyAgICB9CiB9CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVy
IHRyYW5zbGF0aW9uIHVuaXQgKEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2Zm
IHRoZSB0d28gZXhwZWN0ZWQgc3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCiB0ZW1wbGF0ZSB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsPihC
eVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
KTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElk
PE9wUHV0QnlWYWxEaXJlY3Q+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQs
IENhY2hlYWJsZUlkZW50aWZpZXIpOwogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI5NjgsNyArMzExMiwxNiBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERv
dWJsZVNoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlz
Q29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3Vi
bGVTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5m
by0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAg
ICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVk
SW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBl
KSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1
YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNM
ZW5ndGgoKSkpKTsKICAgICBsb2FkRG91YmxlKEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwg
VGltZXNFaWdodCksIGZwUmVnVDApOwpAQCAtMjk3Nyw3ICszMTMwLDcgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSkKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlKQogewog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTk1
LDcgKzMxNDgsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5k
ZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZv
KSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgaW5k
ZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1w
KEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihO
b3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhp
bmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3Mo
YmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0
Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkVmFsdWUo
QmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwgcmVzdWx0KTsKQEAgLTMw
MDQsNyArMzE2Niw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgcmV0dXJuIHNsb3dD
YXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklU
OjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0zMDIzLDcgKzMxODUsMTYgQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBhZGQzMihU
cnVzdGVkSW1tMzIoLUFycmF5U3RvcmFnZVNoYXBlKSwgaW5kZXhpbmcsIHNjcmF0Y2gpOwotICAg
IGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMy
KFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5j
aDMyKEJlbG93T3JFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwg
c2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEFycmF5
U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0zMDM1LDcgKzMyMDYsNyBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBQYXRjaGFibGVKdW1wJiBiYWRUeQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6
SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMw
NjAsNyArMzIzMSwxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJy
YXlUeXBlKHR5cGUpKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1
dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJ
bW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAo
QWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHVi
Um91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUo
dHlwZSkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5
cGUodHlwZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0g
YnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVBy
b2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpAQCAtMzExMSw3ICszMjkyLDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2Rl
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5
cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxl
OwpAQCAtMzEzNiw3ICszMzE3LDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBl
ZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAgICAgSnVt
cExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9y
VHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAg
ICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwg
VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAg
ZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0
aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBl
ZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5C
b3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1p
dEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRl
eCBjMjJjNzcwNDI4OWFiYjA4MmY5ZGRmMjBkOGMyZmY2NjVkZmQ1NmUyLi4wZTNiZTZhZjg0MmNl
OWQwMjYyMTM1ZGVkNTZjOWIwYWViZGUwYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0TG9hZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJl
Z3MucGF5bG9hZEdQUigpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwg
YmFzZVJlZ3MudGFnR1BSKCkpOwogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksCi0gICAgICAgIGJhc2VSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAg
IGJhc2VSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCByZWdUNCk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9kZWxCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3BlcnR5LCBwcm9wZXJ0
eVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgcmVnVDQpOwor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0
eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKIAogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OwpAQCAtMjU3LDggKzI1Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlW
YWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgcmVzdWx0UmVncyk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVzdWx0UmVncywgSW52
YWxpZEdQUlJlZyk7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0eSkp
CiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKICAg
ICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtMzA1LDggKzMwNSw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgcmVzdWx0UmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRS
ZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5VmFscy5hcHBl
bmQoZ2VuKTsKQEAgLTM5Myw4ICszOTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CiAKICAgICBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CkBAIC00MzMsOCArNDMzLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJp
dmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRS
ZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFj
Y2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDg2LDE2ICs0ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpJVEFycmF5TW9kZSBtb2RlID0gY2hvb3NlQXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRj
aCAobW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJ
bnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91Ymxl
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91
YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRp
Z3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5
VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7
CkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1No
YXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywg
SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CkBAIC01MjAsNiArNTIwLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWQKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKKyAgICBVTlVTRURfUEFSQU0oYnlW
YWxJbmZvKTsKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoQ29udGlndW91c1NoYXBlKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CkBAIC01NzIs
NyArNTczLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBi
eXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0
QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOwpAQCAtNTgxLDYgKzU4Miw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJy
YXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5m
byk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CkBAIC02NjAsOCAr
NjYyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQ
UlJlZywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRC
eUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTcwMSw4ICs3MDMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAK
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVn
cywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpHZXRC
eUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpA
QCAtNzQ4LDggKzc1MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxp
ZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRC
eUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc5MSw4ICs3OTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7
CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJl
Z3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCBy
ZWdUMyksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRo
VGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTgzNSw5ICs4MzcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52
YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwg
ZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKICAgICAKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC04ODIsOCArODg0LDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCiAgICAg
SklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywg
KmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJSb3V0aW5lLmgKaW5kZXggODgxNDY0MGU2YWNjZWFjMWI5YjA2OGE0MGM4OTQyODM0ODZjZGZh
Yi4uMmJmODhiMjllZWFhMWZlZjQzM2Q3OTY4MWY2NGRiMzhjMmZkYjM1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtMzUsNiArMzUsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogY2xhc3MgVk07CiAKK2NsYXNz
IEFjY2Vzc0Nhc2U7CisKIC8vIFRoaXMgaXMgYSBiYXNlLWNsYXNzIGZvciBKSVQgc3R1YiByb3V0
aW5lcywgYW5kIGFsc28gdGhlIGNsYXNzIHlvdSB3YW50CiAvLyB0byBpbnN0YW50aWF0ZSBkaXJl
Y3RseSBpZiB5b3UgaGF2ZSBhIHJvdXRpbmUgdGhhdCBkb2VzIG5vdCBuZWVkIGFueQogLy8gaGVs
cCBmcm9tIHRoZSBHQy4gSWYgaW4gZG91YnQsIHVzZSBvbmUgb2YgdGhlIG90aGVyIHN0dWIgcm91
dGluZXMuIEJ1dApAQCAtOTgsNiArMTAwLDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAg
IC8vIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFZNJik7CiAKKyAgICB2
aXJ0dWFsIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgb2Jz
ZXJ2ZVplcm9SZWZDb3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYwNjg2MjczZGRh
ODFjYmI2ZDAxY2QyMWRkMDk4OWNjNmUyYjguLjQ0NzA1NWJmZThhYmVmYWE1NmZlNzhlODA2OGQy
Y2M2Njg5MzIzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5r
SW5mby5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxDb2RlT3JpZ2lu
LmgiCkBAIC02Nyw3ICs2OCw3IEBAIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIs
IENhbGxGcmFtZSogY2FsbGVyRnJhbWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBW
ZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFycmF5PHVpbnQz
Ml90PiYmIGZhc3RDb3VudHMpCi0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwg
dm0pCisgICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0sIHsgfSkKICAgICAs
IG1fdmFyaWFudHMoY2FzZXMuc2l6ZSgpKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFz
dENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAzNTkz
Y2NlODg2MDg4MDE4MzQ2YTgwOGU1Zjg2NDc4NzFhNDQxYjI5Li4yZTM1NTJhNmQ0MDQ1NGU2MGUw
OWQxNzNlODAxZDE2MWNkNWMxMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKQEAgLTcxLDggKzcxLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitzdGF0aWMg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgcmV0dXJuIHN0dWJJbmZvLm1fc2xvd09w
ZXJhdGlvbi5yZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCk7CisgICAgQ29kZUxvY2F0aW9uQ2Fs
bDxKU0ludGVybmFsUHRyVGFnPiBjYWxsID0gc3R1YkluZm8ubV9zbG93UGF0aENhbGxMb2NhdGlv
bjsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUVHlwZTo6RlRMSklUKSB7CiAgICAgICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPiB0
YXJnZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+KGNh
bGwpOwpAQCAtMTA1LDYgKzEwOCwxNSBAQCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dl
ZDxPcGVyYXRpb25QdHJUYWc+KCkpOwogfQogCitzdGF0aWMgdm9pZCByZXBhdGNoU2xvd1BhdGhD
YWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBzdHViSW5mby5tX3Nsb3dPcGVy
YXRpb24gPSBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8ubV9zbG93UGF0aENhbGxMb2NhdGlvbiwgbmV3Q2FsbGVlRnVuY3Rpb24p
OworfQorCiBlbnVtIElubGluZUNhY2hlQWN0aW9uIHsKICAgICBHaXZlVXBPbkNhY2hlLAogICAg
IFJldHJ5Q2FjaGVMYXRlciwKQEAgLTIwOSw3ICsyMjEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqCiAgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAg
ICAgIGNvbnN0IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1l
IHx8IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNl
PiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VDZWxsKSkgewpAQCAt
MjE5LDcgKzIzMSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAg
ICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJy
YXlMZW5ndGgoc3R1YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0QXJyYXlMZW5ndGgobG9ja2VyKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTIyNywxMCArMjM5LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayoKIAogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNv
ZGVCbG9jaywgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGgsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZUNlbGwpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5zZXQgJiYgSW5saW5lQWNj
ZXNzOjppc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAg
ICAgICAgICAgICAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0dWJJ
bmZvKSkgewogICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJ
bmxpbmVBY2Nlc3M6OmdlbmVyYXRlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0U3RyaW5nTGVuZ3RoKGxvY2tlcik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0yODIsMTIgKzI5NSwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
CiAgICAgICAgICAgICAgICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCiAgICAgICAgICAgICAg
ICAgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAgICAg
ICAgICAgICAgJiYgIWxvYWRUYXJnZXRGcm9tUHJveHkpIHsKLQogICAgICAgICAgICAgICAgIGJv
b2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVy
dHlBY2Nlc3Moc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8o
KSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90
QmFzZSgpID09IGJhc2VWYWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0
YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxm
KGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtNDI1LDcgKzQzNyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayoKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJh
c2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM5LDcgKzQ1MSw3IEBAIHZvaWQgcmVwYXRj
aEdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU1ZhbHVlIGJhCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZUdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVV
cE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2lu
ZCkpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFw
cHJvcHJpYXRlR2V0QnlGdW5jdGlvbihraW5kKSk7CiB9CiAKIApAQCAtNTI5LDcgKzU0MSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Okdl
dEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRp
ZmllcigpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtNTQwLDcgKzU1Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiB2b2lkIHJl
cGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKIHsKICAgICBpZiAodHJ5Q2FjaGVBcnJheUdldEJ5VmFsKGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBiYXNlLCBpbmRleCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUp
Ci0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMpOworICAgICAgICBy
ZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkdldEJ5VmFs
R2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5j
dGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVj
bHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCkBAIC02MzYsNyArNjQ4LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQg
PT0gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gUHV0S2luZDo6
RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNh
Y2hlOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAg
ICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5iYXNl
KCkgPT0gYmFzZVZhbHVlICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKSkgewogICAgICAgICAgICAg
aWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkgewpA
QCAtNjU4LDcgKzY3MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5
SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVT
ZWxmUHJvcGVydHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2VsZlBhdGNo
LCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZh
bHVlKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlh
dGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9j
aywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtODAxLDcgKzgxMyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwog
Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Cisg
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04MTUsNyArODI3LDcgQEAgdm9p
ZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSlNWYWx1ZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVQdXRCeUlEKGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBz
dHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFw
cHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVHZW5l
cmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAogc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBi
YXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFN
b2RlIGVjbWFNb2RlKQpAQCAtODQ2LDcgKzg1OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
CiAgICAgICAgIGlmIChvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAg
cmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAg
ICAgICAgaWYgKHNsb3QuaXNEZWxldGVIaXQoKSkgewogICAgICAgICAgICAgUHJvcGVydHlPZmZz
ZXQgbmV3T2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKQEAgLTg3NCw3ICs4ODYsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvYwogICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkp
IHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5j
bGFzc0luZm8oKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkp
OwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwor
ICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2lu
Z0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
ODkxLDkgKzkwMyw5IEBAIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgaWYgKHRyeUNhY2hl
RGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVw
T25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5l
cmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtp
bmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
RGVsZXRlQnlJZEdlbmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOwor
ICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVy
YXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOwogICAgIH0KIH0KIApAQCAtOTM3LDcgKzk0OSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgICAg
ICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6OkluQnlJZFNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQs
IHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9m
ZnNldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLmluaXRJbkJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUs
IHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTg0LDcgKzk5
Niw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKIAogICAgICAg
ICBMT0dfSUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8o
KSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCisgICAgICAg
IFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAg
ICAgdm0sIGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nh
c2U6OkluTWlzcywgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkg
OiBpbnZhbGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nh
c2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBw
cm9wZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOwpAQCAtOTkzLDcgKzEwMDUsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVu
dCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xMDA3LDcgKzEwMTksNyBAQCB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KgogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0
cnlDYWNoZUluQnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVy
dHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWQpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZCk7CiB9CiAKIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTAzMiw3ICsx
MDQ0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJh
bmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWY8QWNj
ZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZt
LCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1
YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01B
TW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMDQwLDcg
KzEwNTIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVC
cmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRSZXBs
YWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0
eSkpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAg
ICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVD
b2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwNTQsNyAr
MTA2Niw3IEBAIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRl
QnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJ
bmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCkBAIC0xMDkx
LDcgKzExMDMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRl
QnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OlNldFByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0
ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
KTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVT
ZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdT
dHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElE
LCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA5OSw3ICsxMTExLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9j
aywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1
bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExMTMsNyArMTEyNSw3IEBAIHZv
aWQgcmVwYXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJ
bmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJp
dmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMTMzLDcgKzExNDUs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAg
ICAKICAgICAgICAgSlNDZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNz
Q2FzZT4gbmV3Q2FzZTsKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwgcHJvdG90eXBlVmFsdWUpOwogICAgICAgICBpZiAocHJvdG90eXBl
KSB7CiAgICAgICAgICAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdmFsdWUp
KSB7CkBAIC0xMTY4LDkgKzExODAsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlSW5zdGFuY2VPZigKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVt
cCgKLSAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCi0gICAgICAgICAg
ICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAg
ICAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gcmVzdWx0LmNvZGUoKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcCgKKyAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAorICAgICAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTE4NSw3
ICsxMjAxLDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VP
ZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUsIHN0
dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKIHN0
YXRpYyB2b2lkIGxpbmtTbG93UGF0aFRvKFZNJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8s
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZVJlZikKQEAg
LTEyMDIsNyArMTIxOCw3IEBAIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNJiB2bSwgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxM
aW5rSW5mbyk7CiAgICAgbGlua1Nsb3dQYXRoVG8odm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRo
dW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1
YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsK
IH0KIAogc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKQEAg
LTEzMjAsNyArMTMzNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtWaXJ0dWFsRm9yKFZNJiB2bSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJCiAKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1
YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlu
a0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdh
cmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlu
a0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRo
dW5rLCB2bSwgeyB9KSk7CiAgICAgY2FsbExpbmtJbmZvLnNldENsZWFyZWRCeVZpcnR1YWwoKTsK
IH0KIApAQCAtMTY0MSwxNCArMTY1NywyNiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogCiB2
b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgR2V0QnlLaW5kIGtpbmQpCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBy
ZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1p
emluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2Ug
R2V0QnlLaW5kOjpOb3JtYWw6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKKyAgICBjYXNlIEdl
dEJ5S2luZDo6V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkRpcmVjdDoKKyAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAg
IGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0
ZU5hbWVCeUlkOgorICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNz
Tm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBicmVhazsK
KyAgICB9CiB9CiAKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgdXNpbmcgRnVuY3Rpb25UeXBlID0gZGVj
bHR5cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgRnVuY3Rp
b25UeXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlw
ZT4ocmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6
ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxs
VGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIEZ1
bmN0aW9uVHlwZSBvcHRpbWl6ZWRGdW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKQEAgLTE2NjUsNDUgKzE2OTMsNDggQEAg
dm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbykKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogCi0gICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXpl
ZEZ1bmN0aW9uKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcHRpbWl6ZWRGdW5jdGlvbik7CisgICAgSW5saW5lQWNj
ZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAog
dm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQogewogICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6
Tm9ybWFsKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsK
KyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVsc2UKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICAgICAg
cmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNz
Tm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCi1zdGF0aWMgdm9p
ZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQorc3RhdGlj
IHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0
dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
KyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICBzdHViSW5mby5tX2Nv
ZGVQdHIgPSBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgZWxzZQorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCiB2b2lkIHJlc2V0SW5CeUlEKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7
CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vz
cyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICByZXNldFBhdGNo
YWJsZUp1bXAoc3R1YkluZm8pOworICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
KyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNK
dW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAK
IHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHVi
SW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1Bh
dGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGlt
aXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCmluZGV4IDMxMzc5ZGM0ZTVhOWRjMmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1MWEuLjNh
MTlmZDM2NTQ5ZDFhODQ4MDlmOTRkYWRhMmRmYmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVj
dHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2Rl
QmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGQ5NDk3ZWJkNGYwYmE2ZjYyNTc5ZGNkNTQy
M2E3Yjk4NDdlOTQ0ZTIuLjdlMGU1OTMyNzQ1YjhhYWVkYjk5MGQ5OGRhNjYyNzc4NDM1Y2UyMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM2
LDYgKzUzNiw4IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAg
IHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
ICAgICB2KEJvb2wsIHVzZVRvcExldmVsQXdhaXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRoZSBh
d2FpdCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYoQm9v
bCwgdmVyYm9zZUV4ZWN1dGFibGVQb29sQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUMsIGlzQVJNNjQoKSwgTm9ybWFsLCBudWxscHRy
KSBcCisgICAgdihCb29sLCB1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5vcm1h
bCwgbnVsbHB0cikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDYwZjk4ZjU2M2E3NmVkZWRhNTJhMDcyODgzZTRiYWZl
YmQ3MmRlZTUuLjVmMTQ1ZWYzN2YxZDQ3NTMyNDUyZjg0Njk1NzQ0OTgzMGVlYzEzMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJWTS5oIgogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgog
I2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1
ZGUgIkJpZ0ludE9iamVjdC5oIgpAQCAtNTY2LDYgKzU2Nyw3IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNj
ZXNzKQogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1
bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7CiAgICAgICAgIGdldENUSUludGVybmFs
RnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBtX3NoYXJl
ZEpJVFN0dWJzID0gbWFrZVVuaXF1ZTxTaGFyZWRKSVRTdHViU2V0PigpOwogICAgIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogCkBAIC02NDksNiArNjUxLDEwIEBAIFZNOjp+Vk0oKQogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NjcmF0Y2hCdWZmZXJzLnNpemUoKTsgKytpKQogICAg
ICAgICBWTU1hbGxvYzo6ZnJlZShtX3NjcmF0Y2hCdWZmZXJzW2ldKTsKICNlbmRpZgorCisjaWYg
RU5BQkxFKEpJVCkKKyAgICBtX3NoYXJlZEpJVFN0dWJzID0gbnVsbHB0cjsKKyNlbmRpZgogfQog
CiB2b2lkIFZNOjpwcmltaXRpdmVHaWdhY2FnZURpc2FibGVkQ2FsbGJhY2sodm9pZCogYXJndW1l
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAyZDNjZDQ2Njg4OGJjZTNhZmI1
YTg4OTM2MTcyNzU4ZjE4YzkzZmE2Li40ZGU5NWY2MzhiMWUyMzg1OWExYjM0ZTkxN2RjOTNhYTJm
OWYzNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE3NCw2ICsxNzQsNyBA
QCBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAj
ZW5kaWYKIGNsYXNzIFNoYWRvd0NoaWNrZW47CitjbGFzcyBTaGFyZWRKSVRTdHViU2V0OwogY2xh
c3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNl
UHJvdmlkZXJDYWNoZTsKQEAgLTg0MSwxMSArODQyLDEzIEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SklUVGh1bmtzPiBqaXRTdHVi
czsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldENUSVN0dWIo
VGh1bmtHZW5lcmF0b3IpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRKSVRTdHViU2V0PiBt
X3NoYXJlZEpJVFN0dWJzOwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoRlRM
X0pJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKICNlbmRp
ZgorCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9u
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBO
YXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNp
YywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429994</attachid>
            <date>2021-05-27 23:50:52 -0700</date>
            <delta_ts>2021-05-28 02:13:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210527235051.patch</filename>
            <type>text/plain</type>
            <size>425390</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5lMDgwNjBjY2E3YWRkODE0
MmJkNjdkNDVjZmIwYzljODMwNGM0NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNjcgQEAKKzIwMjEtMDUtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaDoK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9u
ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhJQ0NhbGwpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRD
YWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAq
IGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2Fs
bENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6
OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1Bh
dGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICog
ZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsS2V5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5Lmg6
CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpTbG93UGF0aENhbGxLZXkpOgor
ICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aW5kaXJlY3RPZmZzZXQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6d2l0aENhbGxUYXJnZXQpOgor
ICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpoYXNoIGNvbnN0KToKKyAgICAgICAg
KiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKToKKyAgICAgICAgKiBqaXQvQ0Nh
bGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
QXJnQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaFJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaEV4dHJhUmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjpwdXNoTm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjphZGRHUFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxl
Y3Rpb246OmFkZEdQUkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdD
b2xsZWN0aW9uOjphZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJn
Q29sbGVjdGlvbjo6YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2FsY3Vs
YXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZvckFyZ3Vt
ZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJH
VU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50c0VudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRm9ySW5k
aXJlY3RDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUp
OgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291
bnQpOgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5n
R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAg
ICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZVNoYXJl
ZElDKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlk
R2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlND
OjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6
OkpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlk
R2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
SW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUp
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9y
OjpKSVRQdXRCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVElu
QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5l
cmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9h
ZEZvckFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJ
bmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFi
bGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19v
cF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2Rp
cmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXREb3Vi
bGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0xvYWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9y
YWdlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgICog
aml0L0pJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5lOjprZXlz
IGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgor
ICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVhZFB1dElDQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTbG93UGF0aENhbGwp
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEdl
dEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6cmVwYXRjaEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
RGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQpOgorICAgICAg
ICAoSlNDOjp0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRj
aENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVTZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNlT2Yp
OgorICAgICAgICAoSlNDOjpsaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0dWFs
Rm9yKToKKyAgICAgICAgKEpTQzo6cmVzZXRHZXRCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNldFBh
dGNoYWJsZUp1bXApOgorICAgICAgICAoSlNDOjpyZXNldEluQnlJRCk6CisgICAgICAgIChKU0M6
OnJlc2V0SW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlc2V0Q2hlY2tQcml2YXRlQnJhbmQp
OgorICAgICAgICAoSlNDOjpyZXNldFNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp+
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNv
bnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IGU1MTc1N2U5YjhmYzY0Mjg3ODI3YzE2ZDAyZDIxY2My
MThmYjEzMjYuLjgzY2IzNmQwNmY4MzEyYzg5NWY2YTQ5YjI1NmJiZWMzNDYyNzNlMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0yMzQsOCAr
MjM0LDggQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAg
ICBDb2RlTG9jYXRpb25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAgICAgewotICAg
ICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAgICAgICAgQVNT
RVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFTU0VSVChjYWxs
LmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQoIWNhbGwuaXNG
bGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8dGFn
PihnZXRMaW5rZXJBZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKSkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNhZGExZmMwMzRj
Yzc0MWQuLmU1YjBiMmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjRFLmgKQEAgLTIyMCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVy
PENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcg
dGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFn
IHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklUQ2FnZSgpIHx8
IGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBsb2Fk
NjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
LSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAgICAgY2Fs
bChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVCh0YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxvYWQ2NChhZGRy
ZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAg
ICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFU
ZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGxP
cGVyYXRpb24oY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVyYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVm
Zjc4MjI2MmU3MTg1Yjg3NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNzJjMzZhOGE5ZmQ0MWZkNWM0
ZDViMTFkOWI2YjQ3NTY4YjRiYzA2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3ND
YXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNz
Q2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwx
MCArMTA1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0
eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nl
c3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwz
NCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNp
dGlvbigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRp
b24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUo
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJl
LT5wcmV2aW91c0lEKCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERl
bGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQ
cml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVC
cmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZh
dGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0
UHJpdmF0ZUJyYW5kKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZh
dGVCcmFuZCgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihu
ZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52
YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIs
IGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2Fz
ZTo6fkFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsx
ODgsOSBAQCBKU09iamVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGNvbmRpdGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitS
ZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3Vs
dC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDgg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVl
UmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsK
KyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAg
ICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiAr
MTA2Myw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJl
Z3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsx
MTQ4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVn
cygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEy
MTEsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
dmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdz
KCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKQEAgLTEzMTcsNiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRo
R3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZv
R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAg
ICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVT
Y3JhdGNoR1BSKCk7CkBAIC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0
ZSk7CiB9CiAKK3ZvaWQgQWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2Fz
ZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6
CisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFy
Z3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6
CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMy
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRp
Z3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJ
bnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0
dGVyOgorICAgIGNhc2UgU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAg
Y2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgor
ICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZz
ZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7Cisg
ICAgICAgICAgICBpZiAoIWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJy
U3RydWN0dXJlID0gc3RydWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAg
ICAgICAgIGN1cnJTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50
cyh2bSwgb2Zmc2V0KCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNv
bmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3Bl
cnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsK
KyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9u
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5v
dywgd2Ugb25seSBhbGxvdyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5
Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0
dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewor
ICAgICAgICAgICAgLy8gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQg
d2UgcmVxdWlyZSB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAg
ICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1
ZS4KKworICAgICAgICAgICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1l
dDogIiwgY29uZGl0aW9uLCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0
IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVy
ZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZSh2bSk7CisgICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJh
cnJpZXI8SlNDZWxsPih2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAt
MTQxNyw3ICsxNTAyLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3Rv
QWNjZXNzQ2hhaW4pOwogCiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5
RWZmb3J0OjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxs
V2F0Y2hwb2ludChjb25kaXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9p
bnQoY29kZUJsb2NrLCBjb25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtMTU4Miw3ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRv
ZXMgdGhlIG5lY2Vzc2FyeSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4K
ICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2Nr
LT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNl
dChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGwoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRv
IHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OlNwaWxsU3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVl
KSB7CiAgICAgICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgw
Miw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAjZW5kaWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBh
Y2Nlc3MuY2FsbExpbmtJbmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAg
ICAgaWYgKG1fdHlwZSA9PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0
cyh2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0x
NzIzLDggKzE4MTQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwogCi0gICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkg
LSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2
ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9p
bnRlck9mZnNldCA9IChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0
ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbjsKKyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBj
YWxsSGFzUmV0dXJuVmFsdWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVS
ZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7
CiAKQEAgLTE4NDUsNyArMTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBw
ZW5kKGppdC5iYXJyaWVyQnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1By
b3h5Ojp0YXJnZXRPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGls
bFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0
RXhjZXB0aW9ucygpOworCisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1Rv
UHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0
KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0
ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2Vw
dGlvbnMoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2Fs
bCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRS
ZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZv
Lm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3Jh
dGNoR1BSKTsKIAogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpA
QCAtMTkzMyw2ICsyMDMzLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBp
ZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAg
ICAgICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9
IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCkBAIC0yMDMxLDYgKzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQ
Uik7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0y
MTkxLDYgKzIyOTcsMTMgQEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5
VHlwZShBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3No
YXJlZEpJVFN0dWJzKQorICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlz
KTsKKyAgICBKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYg
QVNTRVJUX0VOQUJMRUQKIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTA3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hh
cmluZyhjb25zdCBBY2Nlc3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAg
ICAvLyBXZSBkbyBub3QgY2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBp
ZiBlaXRoZXIgb2YgdGhlbSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxo
cy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhz
LmFkZGl0aW9uYWxTZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5t
X3R5cGUgIT0gcmhzLm1fdHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMu
bV9vZmZzZXQgIT0gcmhzLm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGxocy5tX3ZpYVByb3h5ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGxocy5tX3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1faWRlbnRpZmllciAhPSByaHMu
bV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRp
dGlvblNldCAhPSByaHMubV9jb25kaXRpb25TZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHN3aXRjaCAobGhzLm1fdHlwZSkgeworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFRyYW5z
aXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6
CisgICAgY2FzZSBEZWxldGVNaXNzOgorICAgIGNhc2UgUmVwbGFjZToKKyAgICBjYXNlIE1pc3M6
CisgICAgY2FzZSBHZXRHZXR0ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAgICBjYXNlIEluTWlzczoK
KyAgICBjYXNlIEFycmF5TGVuZ3RoOgorICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgorICAgIGNhc2Ug
RGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgor
ICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6Cisg
ICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9y
YWdlTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZERpcmVjdEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUlu
dDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJ
bmRleGVkVHlwZWRBcnJheVVpbnQ4Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRB
cnJheUludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVk
QXJyYXlVaW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVk
U3RyaW5nTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIEdldHRlcjoKKyAg
ICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNldHRlciByZWxpZXMgb24g
Q29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUuCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0dGVyOgorICAgIGNhc2Ug
Q3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1ZVNldHRlcjoKKyAgICBj
YXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICBpZiAobGhzZC5tX2RvbUF0dHJpYnV0
ZSB8fCByaHNkLm1fZG9tQXR0cmlidXRlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbGhzZC5tX2N1c3RvbVNsb3RCYXNlID09IHJoc2QubV9jdXN0b21TbG90QmFz
ZQorICAgICAgICAgICAgJiYgbGhzZC5tX2N1c3RvbUFjY2Vzc29yID09IHJoc2QubV9jdXN0b21B
Y2Nlc3NvcjsKKyAgICB9CisKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjogeworICAgICAgICBh
dXRvJiBsaHNkID0gbGhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAg
IGF1dG8mIHJoc2QgPSByaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAg
ICAgcmV0dXJuIGxoc2QubV9pbnRyaW5zaWNGdW5jdGlvbiA9PSByaHNkLm1faW50cmluc2ljRnVu
Y3Rpb247CisgICAgfQorCisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOiB7CisgICAgICAg
IGF1dG8mIGxoc2QgPSBsaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsKKyAgICAg
ICAgYXV0byYgcmhzZCA9IHJocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAg
ICAgICByZXR1cm4gbGhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCA9PSByaHNkLm1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0CisgICAgICAgICAgICAmJiBsaHNkLm1fbW9kdWxlRW52aXJvbm1lbnQg
PT0gcmhzZC5tX21vZHVsZUVudmlyb25tZW50CisgICAgICAgICAgICAmJiBsaHNkLm1fc2NvcGVP
ZmZzZXQgPT0gcmhzZC5tX3Njb3BlT2Zmc2V0OworICAgIH0KKworICAgIGNhc2UgSW5zdGFuY2VP
ZkhpdDoKKyAgICBjYXNlIEluc3RhbmNlT2ZNaXNzOgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVy
aWM6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4o
KTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4oKTsK
KyAgICAgICAgcmV0dXJuIGxoc2QubV9wcm90b3R5cGUgPT0gcmhzZC5tX3Byb3RvdHlwZTsKKyAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmlu
ZGV4IGJkZDFiMjM3ZDYxOGEyY2NlODI3MjBmNzJjYTc1MzdkZTNmYTcwNjguLjljMmZiM2VhNmFk
MjhiMTc0NGMwOTc3ODhkYzY0YjM1NWI0ZDBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMjgsMTAgKzI4LDEzIEBACiAjaWYgRU5BQkxFKEpJ
VCkKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVi
Um91dGluZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQb2x5UHJvdG9BY2Nlc3NDaGFp
bi5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTc5LDcgKzgyLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQWNj
ZXNzQ2FzZSk7CiAvLyBXZSB3aWxsIHNvbWV0aW1lcyBidWZmZXIgY29tbWl0dGVkIEFjY2Vzc0Nh
c2VzIGluIHRoZSBQb2x5bW9ycGhpY0FjY2VzcyBvYmplY3QgYmVmb3JlIGdlbmVyYXRpbmcKIC8v
IGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgcmVnZW5lcmF0ZSBvbmNlIHdlJ3ZlIGFjY3Vt
dWxhdGVkIChob3BlZnVsbHkpIG1vcmUgdGhhbiBvbmUgbmV3CiAvLyBBY2Nlc3NDYXNlLgotY2xh
c3MgQWNjZXNzQ2FzZSB7CitjbGFzcyBBY2Nlc3NDYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEFjY2Vzc0Nhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hF
QVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIHB1YmxpYzoKICAgICBlbnVtIEFjY2Vzc1R5cGUg
OiB1aW50OF90IHsKQEAgLTE0NywxOSArMTUwLDE5IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2VUeXBlPihuZXcgQWNjZXNzQ2Fz
ZVR5cGUoYXJndW1lbnRzLi4uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsCisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsCiAg
ICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBSZWZQdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBz
dGF0aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYs
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZURl
bGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVD
aGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFjY2Vz
c0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKICAgICBBY2Nlc3NUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KQEAgLTI1MywxMSArMjU2LDM5IEBAIGNsYXNzIEFjY2Vzc0Nhc2Ugewog
I2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVT
dHViSW5mbyYpIHsgfQogI2VuZGlmCi0gICAgCisKKyAgICB2b2lkIGNvbGxlY3RJbnZhcmlhbnRz
Rm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIENvZGVCbG9jayopOworCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2go
bV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90eXBlKSwgbV92
aWFQcm94eSwgbV9zdHJ1Y3R1cmUuZ2V0KCksIG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBlcXVhbEluU2hhcmluZyhjb25zdCBBY2Nlc3NDYXNlJiwgY29uc3QgQWNjZXNzQ2Fz
ZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUq
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJik7Ci0gICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsKLSAg
ICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKSA9IGRlZmF1bHQ7CisgICAgQWNj
ZXNzQ2FzZShBY2Nlc3NDYXNlJiYgb3RoZXIpCisgICAgICAgIDogbV90eXBlKFdURk1vdmUob3Ro
ZXIubV90eXBlKSkKKyAgICAgICAgLCBtX3N0YXRlKFdURk1vdmUob3RoZXIubV9zdGF0ZSkpCisg
ICAgICAgICwgbV92aWFQcm94eShXVEZNb3ZlKG90aGVyLm1fdmlhUHJveHkpKQorICAgICAgICAs
IG1fb2Zmc2V0KFdURk1vdmUob3RoZXIubV9vZmZzZXQpKQorICAgICAgICAsIG1fc3RydWN0dXJl
KFdURk1vdmUob3RoZXIubV9zdHJ1Y3R1cmUpKQorICAgICAgICAsIG1fY29uZGl0aW9uU2V0KFdU
Rk1vdmUob3RoZXIubV9jb25kaXRpb25TZXQpKQorICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNz
Q2hhaW4oV1RGTW92ZShvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKSkKKyAgICAgICAgLCBt
X2lkZW50aWZpZXIoV1RGTW92ZShvdGhlci5tX2lkZW50aWZpZXIpKQorICAgIHsgfQorCisgICAg
QWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUob3Ro
ZXIubV90eXBlKQorICAgICAgICAsIG1fc3RhdGUob3RoZXIubV9zdGF0ZSkKKyAgICAgICAgLCBt
X3ZpYVByb3h5KG90aGVyLm1fdmlhUHJveHkpCisgICAgICAgICwgbV9vZmZzZXQob3RoZXIubV9v
ZmZzZXQpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUob3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAg
ICwgbV9jb25kaXRpb25TZXQob3RoZXIubV9jb25kaXRpb25TZXQpCisgICAgICAgICwgbV9wb2x5
UHJvdG9BY2Nlc3NDaGFpbihvdGhlci5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICAs
IG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZpZXIpCisgICAgeyB9CiAKICAgICBBY2Nlc3ND
YXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNzQ2FzZSYpID0gZGVsZXRlOwogICAgIHZvaWQgcmVz
ZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1vcmRpYWw7IH0KQEAgLTI3NSw3ICszMDYsNyBAQCBj
bGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1
c2Ugb2YgaG93IEFjY2Vzc0Nhc2UgcHV0cyBwb3N0LWdlbmVyYXRpb24gdGhpbmdzIGludG8gaXRz
ZWxmLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0
NTYKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CiAKICAgICAvLyBQ
ZXJmb3JtIGFueSBhY3Rpb24gdGhhdCBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGVuZCBv
ZiB0aGUgZXBvY2ggaW4gd2hpY2ggdGhlIGNhc2UKICAgICAvLyB3YXMgY3JlYXRlZC4gUmV0dXJu
cyBhIHNldCBvZiB3YXRjaHBvaW50IHNldHMgdGhhdCB3aWxsIG5lZWQgdG8gYmUgd2F0Y2hlZC4K
QEAgLTMxNSw2ICszNDYsMTY4IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAorY2xhc3MgU2hhcmVhYmxlSklUU3R1YlJvdXRp
bmUgZmluYWwgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgeworcHVibGljOgorICAgIFNoYXJlYWJs
ZUpJVFN0dWJSb3V0aW5lKFZNJiB2bSwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYm
IGtleXMpCisgICAgICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKKyAgICAgICAgLCBtX3ZtKHZt
KQorICAgICAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gJm1fa2V5czsgfQorCisgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiBtX2tleXM7Cit9OworCitjbGFzcyBTaGFyZWRKSVRTdHViU2V0IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsKK3B1YmxpYzoKKyAgICBT
aGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYga2V5cykKKyAgICB7CisgICAg
ICAgIEhhc2hlciBoYXNoZXI7CisgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykKKyAgICAg
ICAgICAgIFdURjo6YWRkKGhhc2hlciwga2V5LT5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFz
aGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0cnVjdCBL
ZXkgeworICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0OworCisgICAgICAgICAgICBLZXkoR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BSUmVnIGV4dHJhR1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIEpJVFN0dWJSb3V0aW5lKiB3cmFw
cGVkKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQpCisgICAgICAgICAgICAg
ICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgICAgICAgICAsIG1fdmFsdWVHUFIodmFs
dWVHUFIpCisgICAgICAgICAgICAgICAgLCBtX2V4dHJhR1BSKGV4dHJhR1BSKQorICAgICAgICAg
ICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgICAgICAgICAsIG1f
dXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAg
ICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgICAgICAgICAg
OiBtX3dyYXBwZWQoYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSkpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nh
c3Q8SklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorCisgICAg
ICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBi
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBhLm1fd3JhcHBlZCA9PSBi
Lm1fd3JhcHBlZAorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fYmFzZUdQUiA9PSBiLm1fYmFz
ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0gYi5tX3ZhbHVlR1BS
CisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1fZXh0cmFHUFIKKyAg
ICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9zdHViSW5mb0dQUgor
ICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lz
dGVyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYS5tX3dyYXBwZWQgIT0gYi5tX3dyYXBwZWQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEpJVFN0dWJSb3V0aW5lKiBtX3dyYXBwZWQgeyBudWxscHRyIH07CisgICAg
ICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fdmFsdWVHUFI7
CisgICAgICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX3N0
dWJJbmZvR1BSOworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAg
ICAgICB9OworCisgICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxLZXk+OworCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYgcCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFwLm1fd3JhcHBlZCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKCpwLm1f
d3JhcHBlZC0+a2V5cygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0cnVj
dCBTZWFyY2hlciB7CisgICAgICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hlcikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkSklUU3R1YlNldDo6aGFzaChzZWFyY2hl
ci5tX2tleXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBIYXNoOjpLZXkgYSwgY29uc3QgU2VhcmNoZXImIGIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAgICAg
ICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAgICAg
ICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAgICAg
ICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAgICAg
ICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF2ZWMgPSAqYS5tX3dyYXBwZWQtPmtleXMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYnZlYyA9IGIubV9rZXlzOworICAgICAgICAg
ICAgICAgICAgICBpZiAoYXZlYy5zaXplKCkgPT0gYnZlYy5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJ2ZWMuc2l6ZSgp
OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBY2Nlc3NDYXNl
OjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2luZGV4XSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBHUFJSZWcgbV9iYXNlR1BS
OworICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7
CisgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBSZWdpc3RlclNldCBtX3Vz
ZWRSZWdpc3RlcnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mIG1fa2V5czsKKyAgICB9OworCisgICAgc3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKCpzdHViLT5rZXlz
KCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6
S2V5IGtleSwgSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdm9p
ZCBhZGQoSGFzaDo6S2V5JiYga2V5KQorICAgIHsKKyAgICAgICAgbV9zdHVicy5hZGQoa2V5KTsK
KyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShKSVRTdHViUm91dGluZSogc3R1YikKKyAgICB7Cisg
ICAgICAgIGF1dG8gaXRlciA9IG1fc3R1YnMuZmluZDxQb2ludGVyVHJhbnNsYXRvcj4oc3R1Yik7
CisgICAgICAgIGlmIChpdGVyICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICBtX3N0dWJz
LnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBKSVRTdHViUm91dGluZSogZmluZChjb25zdCBT
ZWFyY2hlciYgc2VhcmNoZXIpCisgICAgeworICAgICAgICBhdXRvIGVudHJ5ID0gbV9zdHVicy5m
aW5kPFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9yPihzZWFyY2hlcik7Cisg
ICAgICAgIGlmIChlbnRyeSAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBIYXNoU2V0PEhhc2g6OktleSwgSGFzaCwgSGFzaDo6S2V5VHJhaXRzPiBtX3N0dWJz
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmluZGV4IGZjOThmNGU0MDBiOGZjNmNjYjg4ZGYwY2Fh
NGM1YTU1NTM2NzljODQuLmIyMjZmYjE2ZjVkYjc0NGY3ZmU1NTZiZWM3NThkN2NlYTA0ZTRhYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKQEAgLTI0NCwx
MCArMjQ0LDggQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
c2V0VXAoQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXAsIENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXIsIEpJVEFycmF5
TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQorICAgIHZvaWQgc2V0VXAoQ29kZUxv
Y2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklU
QXJyYXlNb2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCiAgICAgewotICAgICAgICB0
aGlzLT5ub3RJbmRleEp1bXAgPSBub3RJbmRleEp1bXA7Ci0gICAgICAgIHRoaXMtPmJhZFR5cGVK
dW1wID0gYmFkVHlwZUp1bXA7CiAgICAgICAgIHRoaXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNl
cHRpb25IYW5kbGVyOwogICAgICAgICB0aGlzLT5kb25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKICAg
ICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRo
VGFyZ2V0OwpAQCAtMjYyLDggKzI2MCwyMSBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERF
Q0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCi0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFs
UHRyVGFnPiBub3RJbmRleEp1bXA7Ci0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBiYWRUeXBlSnVtcDsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJh
dGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fc2xvd09wZXJhdGlv
bik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9ub3RJbmRleEp1bXBUYXJnZXQp
OyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9iYWRUeXBlSnVtcFRhcmdldCk7IH0K
KworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3BlcmF0aW9uOworCisg
ICAgdW5pb24geworICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4gbV9ub3RJbmRleEp1bXA7CisgICAgfTsKKyAgICB1bmlvbiB7CisgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2JhZFR5cGVKdW1wVGFy
Z2V0OworICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG1fYmFkVHlw
ZUp1bXA7CisgICAgfTsKKwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4gZG9uZVRhcmdldDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNzczMjlmM2E0MWUwNGExYzcyZGI2MmMxZDU4ZjRmNWMz
NjM5NzI1MS4uODFhYjk3ZmJkODE4YjFmYjdjMWZiZmVkNDAyNDlmYzkzNzE2M2Y4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNDIwLDYgKzQyMCwx
MSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB7CiAgICAgICAgIHJl
dHVybiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAgICAgfQorCisgICAgYm9v
bCB1c2VTaGFyZWRJQygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSklUQ29kZTo6dXNl
U2hhcmVkSUMoaml0VHlwZSgpKTsKKyAgICB9CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjAyZWZjNTQ2
NjYxOTg1NGRhYWE2MjBjNjk3ZmYxY2ZmN2NmMzgzNi4uNmEzMGU2MzhlMjAwY2EwODBlMTRiYWFk
ODdhZThlMTY0ZmY2OWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIG1fY3VzdG9tU2xvdEJhc2Uuc2V0TWF5QmVOdWxs
KHZtLCBvd25lciwgY3VzdG9tU2xvdEJhc2UpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAgIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBj
dXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwKICAgICBPcHRpb25hbDxET01B
dHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKQEAgLTYxLDE4ICs2MSwxOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNl
dCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBjdXN0
b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKICAgICByZXN1bHQt
Pm1fZG9tQXR0cmlidXRlID0gZG9tQXR0cmlidXRlOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nl
c3NvciA9IGN1c3RvbUdldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihj
dXN0b21HZXR0ZXIpIDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsCitS
ZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsCiAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluLCBib29sIHZpYVByb3h5LCAK
ICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0dGVyLCBKU09i
amVjdCogY3VzdG9tU2xvdEJhc2UpCiB7CiAgICAgQVNTRVJUKHR5cGUgPT0gU2V0dGVyIHx8IHR5
cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21BY2Nlc3NvclNldHRlcik7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNl
dCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBudWxscHRyLCBjdXN0b21TbG90
QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlk
ZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBudWxs
cHRyLCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKICAg
ICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21TZXR0ZXIgPyBGdW5jdGlvblB0cjxD
dXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tU2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTkxLDkgKzkxLDkgQEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZShjb25zdCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlJiBvdGgKICAg
ICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmlidXRlOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAor
UmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0
U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTM5LDYgKzEzOSw4IEBAIHZvaWQg
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlLCBjb25zCiAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5i
YXNlUmVncygpKTsKICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAgIGlmIChzdHVi
SW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hH
UFIpOwogCiAgICAgR1BSUmVnIHBhcmFtQmFzZUdQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0yMjMs
NiArMjI1LDExIEBAIHZvaWQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRl
cihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zCiAgICAgZm9yIChGUFJSZWcgcmVn
IDogZnBTY3JhdGNoKQogICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZyk7
CiAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlZ2lz
dGVyc1RvTm90U2F2ZUZvckNDYWxsKCkpOworI2lmIENQVShBUk02NCkKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFy
ZWRJQygpKQorICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KEFSTTY0UmVnaXN0
ZXJzOjpscik7CisjZW5kaWYKIAogICAgIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zIHBhcmFtcyhz
dGF0ZS5tX3ZtLCBXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBT
Y3JhdGNoKSk7CiAgICAgc25pcHBldC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIHBhcmFtcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaAppbmRleCA4NzNlN2MzNTg4OGViM2IxMjFkYmZkN2FmMDZlMmNhYmViN2QzM2Iy
Li4xMDBmYjI3ZWU4NTY2MTZmYjQxODQyNWVjMmM3MjM0OTRhNGFlZjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmgKQEAgLTUzLDE3ICs1MywxNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGZpbmFs
IDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogCiAgICAgdm9pZCBlbWl0RE9NSklUR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiwg
R1BSUmVnIGJhc2VGb3JHZXRHUFIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAg
ICAgIFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRlciwKICAgICAg
ICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0
aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCisg
ICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwK
ICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYsIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwKICAgICAgICAgRnVuY3Rp
b25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciA9IG51bGxwdHIsIEpTT2Jq
ZWN0KiBjdXN0b21TbG90QmFzZSA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmlu
dFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBj
bG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkdldHRlclNldHRlckFjY2Vzc0Nhc2UoKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNw
cAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2JhZTk2ZmIzMjFhLi4yMTk0MmM0
MzViZWVjMTRjMTU4NjM5NWUzZDY0MTEzNmUyMjg4OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAtMjE2LDYgKzIxNiw4IEBAIEFM
V0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVnaXN0ZXIoU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VUYWdHUFIp
OwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKICNlbmRpZgorICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIEdQUlJlZyBzY3JhdGNo
ID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAgIGlmIChhbGxvY2F0b3IuZGlk
UmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CkBAIC0zNzks
OCArMzgxLDU0IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICByZXR1cm4gbGlua2VkQ29k
ZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vz
c05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gdGFy
Z2V0KQogeworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1
YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Q0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAv
LyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUg
anVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5jaENv
bXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5m
by5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6
OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0Jy
YW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgp
KTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKKworICAgIEZJTkFMSVpFX0NP
REUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQg
anVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNz
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit7CisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAvLyBJZiBpdCBpcyBub3QgR2V0QnlJ
ZC1saWtlLXRoaW5nLCB3ZSBkbyBub3QgZW1pdCBub3Agc2xlZCAoZS5nLiBHZXRCeVZhbCkuCisg
ICAgICAgIC8vIFRoZSBjb2RlIGlzIGFscmVhZHkgYW4gaW5kaXJlY3QganVtcCwgYW5kIG9ubHkg
dGhpbmcgd2Ugc2hvdWxkIGRvIGlzIHJlcGxhY2luZyBtX2NvZGVQdHIuCisgICAgICAgIGlmIChz
dHViSW5mby5oYXNDb25zdGFudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIC8vIElmIG1fY29k
ZVB0ciBpcyBwb2ludGluZyB0byBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24sIHRoaXMg
bWVhbnMgdGhhdCBJbmxpbmVBY2Nlc3MgY29kZSBpcyBub3QgYSBzdHViIG9uZS4KKyAgICAgICAg
ICAgIC8vIFdlIHJld3JpdGUgdGhpcyB3aXRoIHRoZSBzdHViLWJhc2VkIGRpc3BhdGNoaW5nIGNv
ZGUgb25jZSwgYW5kIGNvbnRpbnVlIHVzaW5nIGl0IHVudGlsIHdlIHJlc2V0IHRoZSBjb2RlLgor
ICAgICAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpID09
IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSB7Cisg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmc3R1YkluZm8pLCBzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29k
ZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgICAgIGF1dG8ganVt
cCA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAgICAgICBib29sIG5lZWRzQnJhbmNoQ29tcGFj
dGlvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQs
IHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQs
IG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bGlua0J1ZmZlci5pc1ZhbGlkKCkpOworCisgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisKKyAgICAgICAgICAgICAgICBGSU5BTEla
RV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIHN0dWIg
Y2FsbCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN0dWJJbmZvLm1fY29k
ZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIENDYWxsSGVscGVy
cyBqaXQ7CiAKICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwpAQCAtMzk0LDYgKzQ0MiwyNiBA
QCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYgogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwg
Tm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOwogfQogCit2
b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAg
ICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBz
bGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxl
IG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAg
TGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxl
ci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwg
SklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5saW5r
KGp1bXAsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisKKyAgICBGSU5BTElaRV9D
T0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50
IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNz
Tm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCit7CisgICAgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxp
bmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlv
bik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCBmNDli
MzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIyYjg0NzFkMTJkLi5lYjc2ZmYzOTZkMjg4ZWNkYmUz
YWYxMDE3ZjMyNDNhYWE3NDQwYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQsMTAgKzEwNCwxNCBAQCBjbGFzcyBJbmxpbmVBY2Nl
c3MgewogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1
YkluZm8mLCBKU0FycmF5Kik7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVTdHJpbmdMZW5n
dGgoU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZUFycmF5TGVu
Z3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwotICAgIHN0YXRpYyB2b2lkIHJld2ly
ZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4pOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2VsZkluQWNjZXNzKFN0
cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVT
dHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIAorICAgIHN0YXRpYyB2b2lkIHJld2ly
ZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7Cisg
ICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsK
KyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29k
ZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyB2b2lkIHJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisKICAg
ICAvLyBUaGlzIGlzIGhlbHBmdWwgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2l6ZSBvZiBhbiBJQyBv
bgogICAgIC8vIHZhcmlvdXMgcGxhdGZvcm1zLiBXaGVuIGFkZGluZyBhIG5ldyB0eXBlIG9mIElD
LCBpbXBsZW1lbnQKICAgICAvLyBpdHMgcGxhY2Vob2xkZXIgY29kZSBoZXJlLCBhbmQgbG9nIHRo
ZSBzaXplLiBUaGF0IHdheSB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFlNzcy
NDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdjMTEw
YzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Rh
bmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUo
CiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBj
b25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBh
Y2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NU
eXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CiB9CiAKIHZvaWQgSW5z
dGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRl
ciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nh
c2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0
CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5cGUo
KSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nh
c2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6
Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVz
dWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJl
c3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmluZGV4
IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0NDky
ZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6IHB1
YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWNjZXNzQ2FzZTsK
KyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsCiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5
cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3By
b3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBD
b21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25z
dCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFkYzIzMzY5MzNkNjc2YzNiZTllOTBjNjAxODlh
MTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZlNjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rpb24uc2V0KHZtLCBvd25lciwgaW50cmluc2lj
RnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBK
U0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNG
dW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24s
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNl
dCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHBy
b3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjp+
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNj
ZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+
cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaApp
bmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEyYmYx
ZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKQEAg
LTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1
YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50cmluc2ljR2V0dGVy
KEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYs
IEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24s
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xv
bmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAppbmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEwOGUz
ZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFmNDgxNTU2NjE1MTcwODVhODhlMTlhMDczYWJl
N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCkBAIC00NSwxOCArNDUsMTggQEAgTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgb3duZXIs
IG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1v
ZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1l
bnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVz
cGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3Bl
T2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVy
LCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25t
ZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+TW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNz
Q2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPiByZXN1bHQobmV3IE1vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVm
KCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVz
ZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAppbmRl
eCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNkMDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2MzEz
N2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAgLTQ0
LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1Ymxp
YyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBTY29w
ZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KIAot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBK
U01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOworICAgIHN0YXRpYyBSZWY8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7
CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVt
aXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxs
VGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKaW5kZXggNWQ5MDU0NTk3NGYxZWQzN2Yy
OGNhZjNhMmFlYjM0NmE0OTEwYTI4My4uMDg2M2UxNTk4NTA5ZDQ2MGNmZDk2ODcwOWEyZjFjN2Y2
OGM2NjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5
MCwzMiBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAg
ICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBIYXNoZXIg
aGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAg
ICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIu
aGFzaCgpOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmIHJocykKKyAgICB7CisgICAgICAgIGlmIChsaHMuc2l6ZSgpICE9IHJocy5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gbGl0ZXIgPSBsaHMuYmVnaW4o
KTsKKyAgICAgICAgYXV0byByaXRlciA9IHJocy5iZWdpbigpOworICAgICAgICBmb3IgKDsgbGl0
ZXIgIT0gbGhzLmVuZCgpOyArK2xpdGVyLCArK3JpdGVyKSB7CisgICAgICAgICAgICBpZiAoISgq
bGl0ZXIgPT0gKnJpdGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhzLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobGhzID09
IHJocyk7CisgICAgfQogICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvck9iamVj
dChKU09iamVjdCopIGNvbnN0OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvckNvbmRp
dGlvbktpbmQoUHJvcGVydHlDb25kaXRpb246OktpbmQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMDNh
MmY2NzFmNzQ0NmU0YWNhZGNkNzRiOWM4N2U4OWE3ZDA5YTAxNS4uYmM0OTc1NmE3MDEwYWE1Njc2
MjU5NzU0NDFkOGI1YmUyMjIyZjEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC01OSwxMCArNTksOSBAQCB2b2lk
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAg
ICAgICAgb3V0LnByaW50KCI6IiwgbV9jb2RlKTsKIH0KIAotdm9pZCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBj
b25kaXRpb24pCit2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25k
aXRpb24pCiB7Ci0gICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZl
cmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCgKLSAgICAgICAgd2F0Y2hwb2ludHMsIGppdC0+Y29k
ZUJsb2NrKCksIHN0dWJJbmZvLCBjb25kaXRpb24pOworICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1
cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQod2F0Y2hwb2lu
dHMsIGNvZGVCbG9jaywgc3R1YkluZm8sIGNvbmRpdGlvbik7CiB9CiAKIHZvaWQgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCkBAIC03Myw3ICs3MiwxMCBAQCB2b2lkIEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQogdm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OnN1Y2NlZWQoKQogewogICAgIHJlc3RvcmVTY3JhdGNoKCk7Ci0gICAgc3VjY2Vz
cy5hcHBlbmQoaml0LT5qdW1wKCkpOworICAgIGlmIChqaXQtPmNvZGVCbG9jaygpLT51c2VTaGFy
ZWRJQygpKQorICAgICAgICBqaXQtPnJldCgpOworICAgIGVsc2UKKyAgICAgICAgc3VjY2Vzcy5h
cHBlbmQoaml0LT5qdW1wKCkpOwogfQogCiBjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzRm9yQ2FsbCgpCkBAIC0xMjYsMTAgKzEyOCwxMSBAQCBh
dXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGwoY29uc3QgUmVnaXN0ZXJTZQogICAgIH07CiB9CiAKLWF1dG8gQWNjZXNzR2VuZXJhdGlv
blN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRp
b25zKCkgLT4gU3BpbGxTdGF0ZQorYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVnaXN0
ZXJTZXQmIGV4dHJhKSAtPiBTcGlsbFN0YXRlCiB7CiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lz
dGVycyA9IGFsbG9jYXRvci0+dXNlZFJlZ2lzdGVycygpOwogICAgIGxpdmVSZWdpc3RlcnMuZXhj
bHVkZShjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGxpdmVSZWdpc3RlcnMubWVyZ2UoZXh0
cmEpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGV4dHJhU3RhY2tQYWRkaW5nID0gMDsKICAg
ICB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24g
PSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGwoKmppdCwgbGl2ZVJlZ2lzdGVycywgZXh0cmFTdGFja1BhZGRpbmcpOwpAQCAtMjUyLDcgKzI1
NSw3IEBAIFBvbHltb3JwaGljQWNjZXNzOjp+UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIAogQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCisgICAgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQogewogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKQEAgLTI2OCw5ICsy
NzEsOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNl
cygKICAgICAvLyAgIGFkZCBtb3JlIHRoaW5ncyBhZnRlciBmYWlsdXJlLgogICAgIAogICAgIC8v
IEZpcnN0IGVuc3VyZSB0aGF0IHRoZSBvcmlnaW5hbENhc2VzVG9BZGQgZG9lc24ndCBjb250YWlu
IGR1cGxpY2F0ZXMuCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPj4gY2Fz
ZXNUb0FkZDsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmlnaW5hbENhc2VzVG9BZGQuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG15Q2FzZSA9IFdURk1vdmUo
b3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKKyAgICAgICAgYXV0byBteUNhc2UgPSBXVEZNb3ZlKG9y
aWdpbmFsQ2FzZXNUb0FkZFtpXSk7CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYgaXQgaXMg
bm90IHJlcGxhY2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0LgogICAgICAg
ICBib29sIGZvdW5kID0gZmFsc2U7CkBAIC0zNDYsOSArMzQ5LDkgQEAgQWNjZXNzR2VuZXJhdGlv
blJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiB9CiAKIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UoCi0gICAgY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5l
d0FjY2VzcykKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBS
ZWY8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4sIDI+IG5ld0FjY2Vzc2VzOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4sIDI+IG5ld0FjY2Vzc2VzOwogICAgIG5ld0FjY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld0Fj
Y2VzcykpOwogICAgIHJldHVybiBhZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBXVEZNb3ZlKG5ld0FjY2Vzc2VzKSk7CiB9CkBAIC00NDAsNyArNDQzLDcgQEAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2MKICAgICB1bnNpZ25lZCBzcmNJbmRleCA9IDA7CiAgICAgdW5zaWdu
ZWQgZHN0SW5kZXggPSAwOwogICAgIHdoaWxlIChzcmNJbmRleCA8IG1fbGlzdC5zaXplKCkpIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZSht
X2xpc3Rbc3JjSW5kZXgrK10pOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2Ug
PSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0
aGUgY2FzZSBoYWQgYmVlbiBnZW5lcmF0ZWQsIHRoZW4gd2UgaGF2ZSB0byBrZWVwIHRoZSBvcmln
aW5hbCBpbiBtX2xpc3QgaW4gY2FzZSB3ZQogICAgICAgICAvLyBmYWlsIHRvIHJlZ2VuZXJhdGUu
IFRoYXQgY2FzZSBtYXkgaGF2ZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBieSB0aGUg
Y29kZSB0aGF0IGl0CkBAIC00OTEsNiArNDk0LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICBpZiAoc3R1YkluZm8udi50aGlzVGFnR1BSICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnYudGhpc1RhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAo
c3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0
b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKIAogICAgIHN0YXRlLnNjcmF0Y2hHUFIg
PSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAKQEAgLTUwMCwxMiArNTA1LDYgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQotICAgIAotICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKLSAgICBzdGF0ZS5q
aXQgPSAmaml0OwotCi0gICAgc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZSA9Ci0g
ICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwog
CiAgICAgYm9vbCBnZW5lcmF0ZWRGaW5hbENvZGUgPSBmYWxzZTsKIApAQCAtNTIxLDEyICs1MjAs
MzAgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKIAogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vz
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJPcHRpbWl6ZWQgY2FzZXM6ICIs
IGxpc3REdW1wKGNhc2VzKSwgIlxuIik7Ci0gICAgCisKKyAgICBib29sIGRvZXNDYWxscyA9IGZh
bHNlOworICAgIGJvb2wgZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSBmYWxzZTsKKyAgICBib29s
IGNhbkJlU2hhcmVkID0gdHJ1ZTsKKyAgICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01hcms7Cisg
ICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBrZXlzKGNhc2VzLnNpemUoKSk7Cisg
ICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykgewor
ICAgICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9NYXJrKTsK
KyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyIHx8IGVudHJ5
LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQorICAgICAgICAgICAgZG9lc0pTR2V0dGVy
U2V0dGVyQ2FsbHMgPSB0cnVlOworICAgICAgICBrZXlzW2luZGV4XSA9IGVudHJ5OworICAgICAg
ICArK2luZGV4OworICAgIH0KKyAgICBzdGF0ZS5tX2RvZXNDYWxscyA9IGRvZXNDYWxsczsKKyAg
ICBzdGF0ZS5tX2RvZXNKU0dldHRlclNldHRlckNhbGxzID0gZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHM7CisgICAgLy8gR2V0dGVyIC8gU2V0dGVyIHJlbGllcyBvbiBzdGFjay1wb2ludGVyIGFkanVz
dG1lbnQsIHdoaWNoIGlzIHRpZWQgdG8gdGhlIGxpbmtlZCBDb2RlQmxvY2ssIHdoaWNoIG1ha2Vz
IHRoaXMgY29kZSB1bnNoYXJlYWJsZS4KKyAgICBpZiAoZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMp
CisgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisKICAgICAvLyBBdCB0aGlzIHBvaW50IHdl
J3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycgY29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2Fu
dCB0byBKSVQgbm93IGFuZCB3ZQogICAgIC8vIHdvbid0IGNoYW5nZSB0aGF0IHNldCBhbnltb3Jl
LgogICAgIAogICAgIGJvb2wgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgPSB0cnVlOwotICAg
IGJvb2wgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc0ludDMy
UHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNr
ID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKQEAg
LTU0MiwxMCArNTU5LDcwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nl
c3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIH0KICAg
ICAgICAgY29tbWl0KGxvY2tlciwgdm0sIHN0YXRlLndhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLCAqbmV3Q2FzZSk7CiAgICAgICAgIGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrICY9
IG5ld0Nhc2UtPmd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrKHN0dWJJbmZvKTsKLSAgICAgICAgaWYg
KG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgbmV3Q2FzZS0+dHlwZSgp
ID09IEFjY2Vzc0Nhc2U6OlNldHRlcikKLSAgICAgICAgICAgIGhhc0pTR2V0dGVyU2V0dGVyQ2Fs
bCA9IHRydWU7CisgICAgICAgIGlmIChuZXdDYXNlLT51c2VzUG9seVByb3RvKCkpCisgICAgICAg
ICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworICAgIH0KKyAgICBpZiAobmVlZHNTeW1ib2xQcm9w
ZXJ0eUNoZWNrIHx8IG5lZWRzU3RyaW5nUHJvcGVydHlDaGVjayB8fCBuZWVkc0ludDMyUHJvcGVy
dHlDaGVjaykKKyAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKworICAgIFJlZlB0cjxKSVRT
dHViUm91dGluZT4gc3R1YjsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpICYmIGNh
bkJlU2hhcmVkKSB7CisgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVy
IHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmJhc2VHUFIsCisgICAgICAgICAgICBzdHViSW5mby52
YWx1ZUdQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwKKyAgICAgICAgICAg
IHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsCisgICAgICAgICAgICBzdHViSW5mby51c2VkUmVnaXN0
ZXJzLAorICAgICAgICAgICAga2V5cworICAgICAgICB9OworICAgICAgICBzdHViID0gdm0ubV9z
aGFyZWRKSVRTdHVicy0+ZmluZChzZWFyY2hlcik7CisgICAgfSBlbHNlCisgICAgICAgIGtleXMg
PSB7IH07CisKKyAgICBhdXRvIGZpbmlzaENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxKSVRT
dHViUm91dGluZT4mJiBzdHViKSB7CisgICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZNb3ZlKHN0
dWIpOworICAgICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7
CisgICAgICAgIGlmICghc3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PihX
VEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7CisgICAgICAgIGlmIChQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAi
LCBtX3N0dWJSb3V0aW5lLT5jb2RlKCksICJcbiIpOworCisgICAgICAgIG1fbGlzdCA9IFdURk1v
dmUoY2FzZXMpOworICAgICAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKKworICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7CisgICAgICAgIGlmIChtX2xpc3Qu
c2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRl
ZEZpbmFsQ29kZSkKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3Vs
dEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOworCisgICAg
ICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIG1fc3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpOworICAgIH07CisKKyAgICBpZiAoc3R1YikgeworICAgICAgICBm
b3IgKGF1dG8mIGFjY2Vzc0Nhc2UgOiBjYXNlcykKKyAgICAgICAgICAgIGFjY2Vzc0Nhc2UtPmNv
bGxlY3RJbnZhcmlhbnRzRm9yQ29kZVJldXNlKHN0YXRlLCBjb2RlQmxvY2spOworICAgICAgICBy
ZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CiAgICAgfQogCisgICAg
Q0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAg
ICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5tX2Rv
ZXNKU0dldHRlclNldHRlckNhbGxzKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGd1YXJh
bnRlZSB0aGF0IHN0YWNrLXBvaW50ZXIgaXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhpcyBpcyBub3Qg
YSBwcm9ibGVtIGlmIHdlIGFyZSBub3QgaGF2aW5nIEpTIGdldHRlciAvIHNldHRlciBjYWxscyBz
aW5jZSBzdGFjay1wb2ludGVyIGlzCisgICAgICAgICAgICAvLyBjYWxsZWUtc2F2ZSByZWdpc3Rl
ciBhbmQgaXQgaXMga2VwdCBiZXlvbmQgY2FsbHMuIEhvd2V2ZXIsIG91ciBKUyBleGVjdXRhYmxl
IGNhbGwgZG9lcyBub3Qgc2F2ZSBzdGFjay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0aW5nIHN0
YWNrLXBvaW50ZXIgYWZ0ZXIKKyAgICAgICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRlciBjYWxs
cy4gQnV0IHRoaXMgY291bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3RhY2stcG9p
bnRlciwgYW5kIG1ha2VzIFBBQyB0YWdnaW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8vIFRvIGVu
c3VyZSBQQUMtdGFnZ2luZyB3b3JrLCB3ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRlciB0byB0
aGUgYXBwcm9wcmlhdGUgb25lLgorICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB9
CisKKyAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KKyAgICAgICAgYWxs
b2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAgCiAgICAg
aWYgKGNhc2VzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIHVubGlrZWx5
LCBidXQgd2UgbWFrZSBpdCBsZWdhbCBhbnl3YXkuCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBh
dGNoLmFwcGVuZChqaXQuanVtcCgpKTsKQEAgLTY5MCw3ICs3NjcsNyBAQCBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvYwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhh
bmRsZXJzID0gbnVsbHB0cjsKICAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmc7Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVn
aXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBoYXNKU0dldHRlclNldHRlckNhbGwpIHsKKyAgICBpZiAo
c3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGRvZXNKU0dldHRl
clNldHRlckNhbGxzKSB7CiAgICAgICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLgog
ICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gZG9p
bmcgZ2VuZXJpY1Vud2luZCBmcm9tIGEgcHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4KICAgICAgICAg
Ly8gTm90ZSBhbHNvIHRoYXQgdGhpcyBpcyBub3QgcmVhY2hhYmxlIGZyb20gY3VzdG9tIGdldHRl
ci9zZXR0ZXIuIEN1c3RvbSBnZXR0ZXIvc2V0dGVycyB3aWxsIGhhdmUgCkBAIC03MzAsNiArODA3
LDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIGNhbGxTaXRlSW5kZXhGb3JF
eGNlcHRpb25IYW5kbGluZyA9IHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGlu
ZygpOwogICAgIH0KIAorICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgZmFpbHVyZS5saW5rKCZqaXQpOworICAgICAgICAvLyBJbiBBUk02NCwgd2UgZG8gbm90IHB1
c2ggYW55dGhpbmcgb24gc3RhY2sgc3BlY2lhbGx5LgorICAgICAgICAvLyBTbyB3ZSBjYW4ganVz
dCBqdW1wIHRvIHRoZSBzbG93LXBhdGggZXZlbiB0aG91Z2ggdGhpcyB0aHVuayBpcyBjYWxsZWQg
KG5vdCBqdW1wZWQpLgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRhaWwgY2FsbCB0byB0
aGUgdGh1bmsgd2hpY2ggY2FsbHMgdGhlIHNsb3cgcGF0aCBmdW5jdGlvbi4KKyAgICAgICAgLy8g
QW5kIHdlIHNob3VsZCBlbGltaW5hdGUgSUMgc2xvdy1wYXRoIGdlbmVyYXRpb24gaW4gQmFzZWxp
bmVKSVQuCisgICAgICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
by5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0
TG9jYXRpb24oKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9CisKICAgICBMaW5rQnVm
ZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGlu
ZUNhY2hlLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLmRpZEZh
aWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6
OnZlcmJvc2UpCkBAIC03MzksOSArODI1LDEyIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9s
eW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAK
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzdWNjZXNzTGFiZWwgPSBz
dHViSW5mby5kb25lTG9jYXRpb247CiAKLSAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vz
cywgc3VjY2Vzc0xhYmVsKTsKLQotICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElD
KCkpCisgICAgICAgIEFTU0VSVChzdGF0ZS5zdWNjZXNzLmVtcHR5KCkpOworICAgIGVsc2Ugewor
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKKyAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7CisgICAgfQogICAgIAogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICBkYXRhTG9nKEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1Yklu
Zm8uY29kZU9yaWdpbiksICI6IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIgZm9y
ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CkBAIC03NDksMjkgKzgzOCwxNSBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4gY29kZSA9IEZJTkFMSVpFX0NPREVfRk9SKAogICAgICAgICBjb2RlQmxvY2ssIGxp
bmtCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiJXMiLCB0b0NTdHJpbmco
IkFjY2VzcyBzdHViIGZvciAiLCAqY29kZUJsb2NrLCAiICIsIHN0dWJJbmZvLmNvZGVPcmlnaW4s
ICIgd2l0aCByZXR1cm4gcG9pbnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAiLCBsaXN0RHVtcChjYXNl
cykpLmRhdGEoKSk7Ci0KLSAgICBib29sIGRvZXNDYWxscyA9IGZhbHNlOwotICAgIFZlY3RvcjxK
U0NlbGwqPiBjZWxsc1RvTWFyazsKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpCi0gICAg
ICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOwotICAg
IAotICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgY29k
ZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJ
bmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhG
b3JFeGNlcHRpb25IYW5kbGluZyk7Ci0gICAgbV93YXRjaHBvaW50cyA9IFdURk1vdmUoc3RhdGUu
d2F0Y2hwb2ludHMpOwotICAgIGlmICghc3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQot
ICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2Vs
bD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKLSAgICBpZiAoUG9seW1vcnBoaWNB
Y2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBj
b2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCi0gICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7Ci0g
ICAgbV9saXN0LnNocmlua1RvRml0KCk7Ci0gICAgCi0gICAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dDo6S2luZCByZXN1bHRLaW5kOwotICAgIGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1h
eEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKLSAgICAgICAg
cmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsK
LSAgICBlbHNlCi0gICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpH
ZW5lcmF0ZWROZXdDb2RlOwotICAgIAotICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
KHJlc3VsdEtpbmQsIGNvZGUuY29kZSgpKTsKKyAgICBzdHViID0gY3JlYXRlSklUU3R1YlJvdXRp
bmUoY29kZSwgV1RGTW92ZShrZXlzKSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1Rv
TWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4
Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworCisg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFy
ZWQpCisgICAgICAgICAgICB2bS5tX3NoYXJlZEpJVFN0dWJzLT5hZGQoU2hhcmVkSklUU3R1YlNl
dDo6SGFzaDo6S2V5KHN0dWJJbmZvLmJhc2VHUFIsIHN0dWJJbmZvLnZhbHVlR1BSLCBzdHViSW5m
by5yZWdzLnRoaXNHUFIsIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIHN0dWJJbmZvLnVzZWRSZWdp
c3RlcnMsIHN0dWIuZ2V0KCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVy
YXRpb24oV1RGTW92ZShzdHViKSk7CiB9CiAKIHZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0
VG9EaWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuaAppbmRleCAyOTIwMzI2ZGNjOTE1NDc0YjNmMWVlYjdmNzI1ZTZhYjM0YWVjYjQx
Li4wZmFiZTdmYTIzZjcxZjgwNDQyNDAyOGIxMjE4ZGI4MTZjNmE0OGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMTQx
LDEwICsxNDEsMTAgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIC8vIFdoZW4gdGhp
cyBmYWlscyAocmV0dXJucyBHYXZlVXApLCB0aGlzIHdpbGwgbGVhdmUgdGhlIG9sZCBzdHViIGlu
dGFjdCBidXQgeW91IHNob3VsZCBub3QgdHJ5CiAgICAgLy8gdG8gY2FsbCB0aGlzIG1ldGhvZCBh
Z2FpbiBmb3IgdGhhdCBQb2x5bW9ycGhpY0FjY2VzcyBpbnN0YW5jZS4KICAgICBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IGFkZENhc2VzKAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4pOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBh
ZGRDYXNlKAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
KTsKKyAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFJlZjxBY2Nlc3NDYXNlPik7CiAgICAgCiAgICAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCByZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYsIFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgU3RydWN0
dXJlU3R1YkluZm8mKTsKICAgICAKQEAgLTE3OSw3ICsxNzksNyBAQCBjbGFzcyBQb2x5bW9ycGhp
Y0FjY2VzcyB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgc3RydWN0
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTsKICAgICAKLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOworICAgIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPiwgMj4gTGlzdFR5cGU7CiAgICAgCiAgICAgdm9pZCBjb21taXQoCiAg
ICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgc3RkOjp1bmlxdWVf
cHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsCkBAIC0xOTYsNiArMTk2LDggQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSB7CiAgICAgICAgIDogbV92bSh2bSkgCiAgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0KQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgICAgICwgbV9k
b2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyhmYWxzZSkKKyAgICAgICAgLCBtX2RvZXNDYWxscyhmYWxz
ZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFu
ZGxpbmcoZmFsc2UpCiAgICAgICAgICwgbV9uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0
aW9uKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZENhbGxTaXRlSW5kZXgoZmFsc2UpCkBA
IC0yMjUsOCArMjI3LDEwIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IHdhdGNocG9pbnRz
OwogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gd2Vha1JlZmVyZW5jZXM7CiAgICAg
QmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOworICAgIGJvb2wgbV9kb2VzSlNHZXR0
ZXJTZXR0ZXJDYWxscyA6IDE7CisgICAgYm9vbCBtX2RvZXNDYWxscyA6IDE7CiAKLSAgICB2b2lk
IGluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CisgICAg
dm9pZCBpbnN0YWxsV2F0Y2hwb2ludChDb2RlQmxvY2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiYpOwogCiAgICAgdm9pZCByZXN0b3JlU2NyYXRjaCgpOwogICAgIHZvaWQgc3VjY2Vl
ZCgpOwpAQCAtMjQ4LDcgKzI1Miw3IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewog
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4
Y2VwdGlvbkhhbmRsaW5nKCk7CiAKICAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7Ci0gICAgU3Bp
bGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRp
b25zKCk7CisgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7CiAKICAg
ICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNl
cHRpb24oY29uc3QgU3BpbGxTdGF0ZSYpOwogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNG
cm9tU3RhY2tGb3JDYWxsKGNvbnN0IFNwaWxsU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYgZG9u
dFJlc3RvcmUgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IGNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1
MGVlYTZhM2IzNGU3NWZhOWQuLjRiZjc4MGVkMzE3NjZlZGU2YmNjNTYwNDQ2YTUwNzlhY2JjYzEy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTM4LDE5ICszOCwxOSBAQCBQcm94eWFibGVBY2Nlc3NDYXNl
OjpQcm94eWFibGVBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBh
Y2NlcwogICAgIG1fdmlhUHJveHkgPSB2aWFQcm94eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50
U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJv
b2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBBU1NFUlQodHlw
ZSA9PSBMb2FkIHx8IHR5cGUgPT0gTWlzcyB8fCB0eXBlID09IEdldEdldHRlciB8fCB0eXBlID09
IFJlcGxhY2UpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IFBy
b3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm94eWFi
bGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90
eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKIFByb3h5YWJsZUFjY2Vzc0Nhc2U6On5Qcm94eWFibGVB
Y2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJs
ZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nl
c3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByb3h5YWJsZUFj
Y2Vzc0Nhc2U+IHJlc3VsdChuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CiAg
ICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCmlu
ZGV4IGRjMzllMjZjYTJmNGIyYjdhYmExMmI1YTU1ZjMyNjY0NDEwZWZhNWMuLmU4NDM4NWNhNzVj
OWY3NTJlOGU4ZTE2Y2RkZTBhYmNhYzdiY2M0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApAQCAtMzcsMTEgKzM3LDEx
IEBAIGNsYXNzIFByb3h5YWJsZUFjY2Vzc0Nhc2UgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAKICAg
ICBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9hZGRpdGlvbmFsU2V0LmdldCgpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAorICAgIHN0YXRpYyBS
ZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAg
IGJvb2wgdmlhUHJveHkgPSBmYWxzZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51
bGxwdHIsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAg
dm9pZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgflBy
b3h5YWJsZUFjY2Vzc0Nhc2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYzhlNmJjNjNhMzZh
MzliODQ1OGI5MDBjYjJhNTJlZjRmMTUxMTIwZi4uOGRmNTgxZTQ2NGYwZTAyZTM0Nzc1NWZjNzkw
ZDI3Y2I4OTQyNWE0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC01Miw2ICs1Miw3IEBAIFN0cnVjdHVyZVN0dWJJ
bmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpCiAgICAgLCBwcm9wZXJ0eUlzSW50MzIoZmFsc2UpCiAgICAgLCBwcm9wZXJ0eUlz
U3ltYm9sKGZhbHNlKQogeworICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiB9CiAK
IFN0cnVjdHVyZVN0dWJJbmZvOjp+U3RydWN0dXJlU3R1YkluZm8oKQpAQCAtMTM5LDcgKzE0MCw3
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnQsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNl
KQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1v
ZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3ND
YXNlKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAg
ICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAg
aWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0
ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUo
YWNjZXNzQ2FzZSkpOworICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tl
ciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJl
c3VsdCwgIlxuIik7CkBAIC0xNzAsOSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBT
dHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVu
aXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVu
dCwgKnRoaXMpOworICAgICAgICAgICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpm
cm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAg
ICAgICAgIGlmIChwcmV2aW91c0Nhc2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBw
ZW5kKFdURk1vdmUocHJldmlvdXNDYXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcs
NyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxv
Y2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5j
ZU9mOgotICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3Rh
bmNlT2YoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNz
VHlwZTo6RGVsZXRlQnlJRDoKICAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBE
ZWxCeUtpbmQ6Ok5vcm1hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYw
OTIxZWRlYzc2NDUuLjk1ZTdkYmI4NjM4YWI5MmY3NzEzMzg3MWY2ZmE0NmQ5MzVmY2ZkZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICB2b2lk
IGluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJs
b2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2Fj
aGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0
dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLSAgICBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
a2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwg
SlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgUmVmUHRyPEFjY2Vzc0Nhc2U+KTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayopOwogCkBAIC0zNDQsMTkgKzM0NCwzMCBAQCBjbGFz
cyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHN0YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2Yg
dGhlIGlubGluZSBJQyBmb3IgKmJ5SWQgY2FjaGVzLiBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hh
YmxlIGp1bXAgZm9yICdpbnN0YW5jZW9mJyBjYWNoZXMuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4gZG9uZUxvY2F0aW9uOwotICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJ
bnRlcm5hbFB0clRhZz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIAorICAgIHVu
aW9uIHsKKyAgICAgICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQ
YXRoQ2FsbExvY2F0aW9uOworICAgICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1f
c2xvd09wZXJhdGlvbjsKKyAgICB9OworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGVQdHI7CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQ29kZVB0cigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywg
bV9jb2RlUHRyKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aFN0YXJ0
TG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIHNs
b3dQYXRoU3RhcnRMb2NhdGlvbik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xv
d09wZXJhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywg
bV9zbG93T3BlcmF0aW9uKTsgfQorCiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKIAot
ICAgIEdQUlJlZyBiYXNlR1BSOwotICAgIEdQUlJlZyB2YWx1ZUdQUjsKKyAgICBHUFJSZWcgYmFz
ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgeyBJbnZhbGlkR1BS
UmVnIH07CiAgICAgdW5pb24gewogICAgICAgICBHUFJSZWcgdGhpc0dQUjsKICAgICAgICAgR1BS
UmVnIHByb3RvdHlwZUdQUjsKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSOwogICAgICAgICBH
UFJSZWcgYnJhbmRHUFI7CiAgICAgfSByZWdzOworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSIHsg
SW52YWxpZEdQUlJlZyB9OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVl
VGFnR1BSOwogICAgIC8vIEZJWE1FOiBbMzItYml0c10gQ2hlY2sgaWYgU3RydWN0dXJlU3R1Yklu
Zm86OmJhc2VUYWdHUFIgaXMgdXNlZCBzb21ld2hlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggOGFkZWFkNTBmNDU1NmNmZjI1ZTdjN2M5OTc4MzA0
ZDQxNzcwOTc0Ny4uNDc2NTRhNzZkYjVhMTEzZjBmY2I2YmY2OGEzZDIyYWNiYzZhMDI2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMTU0LDYgKzE1
NCwxMSBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAg
ICBtX2NhbGxzLmFwcGVuZChDYWxsTGlua1JlY29yZChmdW5jdGlvbkNhbGwsIGZ1bmN0aW9uKSk7
CiAgICAgICAgIHJldHVybiBmdW5jdGlvbkNhbGw7CiAgICAgfQorCisgICAgdm9pZCBhcHBlbmRD
YWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgY2FsbChh
ZGRyZXNzLCBPcGVyYXRpb25QdHJUYWcpOworICAgIH0KICAgICAKICAgICB2b2lkIGV4Y2VwdGlv
bkNoZWNrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xv
d1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhH
ZW5lcmF0b3IuaAppbmRleCA5ODFlODZjZDdkZGIwMWNhNDk1NDNiNGU1Mzc2MDAxYmU4MTYwMTI2
Li4yOWFkODZlY2Y0ZjM0MWExYjI2ZmQxOTQ1MWEwZjBkNTE4NThlZDg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xODgsNiAr
MTg4LDggQEAgY2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIENhbGxTbG93UGF0aEdlbmVyYXQKICAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50
cy4uLj4gbV9hcmd1bWVudHM7CiB9OwogCisKKwogdGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUs
IHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4g
QXJndW1lbnRzPgogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGhDYWxsKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwKQEAgLTI2Myw2ICsyNjUsNjcgQEAgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogICAgICAgICBmcm9tLCBqaXQs
IGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
SnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorY2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRo
SUNHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBSZXN1bHRUeXBlPiB7CitwdWJsaWM6CisgICAgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQ
YXRoSUNHZW5lcmF0b3IoCisgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBq
aXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUg
ZnVuY3Rpb24sCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlv
bkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlw
ZSwgUmVzdWx0VHlwZT4oZnJvbSwgaml0LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQp
CisgICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgLCBtX3Nsb3dQ
YXRoT3BlcmF0aW9uQWRkcmVzcyhzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MpCisgICAgICAgICwg
bV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX2FyZ3VtZW50cyhzdGQ6OmZvcndhcmQ8
QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICAsIG1fc3R1YkluZm8oc3R1YkluZm8p
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4gQXJndW1l
bnRzSW5kZXg+CisgICAgdm9pZCB1bnBhY2tBbmRHZW5lcmF0ZShTcGVjdWxhdGl2ZUpJVCogaml0
LCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7CisgICAgICAg
IEFTU0VSVChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKTsKKyAgICAgICAg
dGhpcy0+c2V0VXAoaml0KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93T3BlcmF0aW9uID0g
bV9mdW5jdGlvbjsKKyAgICAgICAgaml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mb0dQUik7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19zYW1lPFJlc3VsdFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUpCisgICAgICAg
ICAgICBqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9u
QWRkcmVzcywgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1f
c2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0KSwg
c3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIHRoaXMt
PnRlYXJEb3duKGppdCk7CisgICAgfQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1
bGF0aXZlSklUKiBqaXQpIGZpbmFsCisgICAgeworICAgICAgICB1bnBhY2tBbmRHZW5lcmF0ZShq
aXQsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3RkOjp0dXBsZTxB
cmd1bWVudHMuLi4+Pjo6dmFsdWU+KCkpOworICAgIH0KKworICAgIEdQUlJlZyBtX3N0dWJJbmZv
R1BSOworICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVz
czsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50
cy4uLj4gbV9hcmd1bWVudHM7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87Cit9
OworCisKKwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVt
cFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9w
ZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAor
ICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9y
PEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KGZyb20s
IGppdCwgc3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1
bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5
cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBl
IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
R1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRp
b25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlwZSByZXN1bHQs
IEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKGZy
b20sIGppdCwgc3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Ms
IGZ1bmN0aW9uLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDczZjkxMTRlYWY4ODNjZWVmOWNh
MDNiODRmMTZlZTY0NGU2ZDI4ZjguLjA1YWQ3OWNhNjlmNmQ4MGI4OWUwNzVlNjgyODRhNjI2ZDM0
YWJkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC0xMDI2LDI0ICsxMDI2LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeUlkKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgIHN3aXRj
aCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
IH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NU
eXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VS
ZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2Ug
VW50eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAg
ICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdw
cigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1Zh
bHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKIApAQCAtMTA1MSw3ICsxMDYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwog
Ci0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywg
cmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9T
cGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGls
ZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwNjcsMjcgKzEwNzks
MzkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2Rl
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5n
cHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwog
CiAgICAgICAgIGJhc2UudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAg
ICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3Vs
dFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwg
RG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vz
c1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZv
cm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVn
cygpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHVi
SW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBi
YXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CkBAIC0xMDk2LDcgKzExMjAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBE
b250U3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAg
ICAgICBicmVhazsKQEAgLTExMTEsMTQgKzExMzUsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogewogICAg
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0K
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHRSZWdzLnBheWxvYWRHUFIoKTsKQEAgLTExMjgsMjAgKzExNTcsMzUgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAgUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAgICAgICBKSVRE
ZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1
bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAg
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAg
ICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZv
KCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0
LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMTcwLDIyICsxMjE0LDI3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAgSlNWYWx1ZU9wZXJhbmQga2V5
KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdz
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5KTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hp
bGQyKCksIFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTE5NCwyMCArMTI0MywzNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAgICAg
ICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7
Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8o
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAg
ICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtMTIzNiw5ICsxMzAwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVC
eVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5v
ZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1Zh
bHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UsIFBheWxvYWRXb3JkKTsK
IAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
fQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIApAQCAtMTI0OCwxNCArMTMxOCwyNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIEpJ
VEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3Mp
OworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAor
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKLSAgICBhdXRv
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRo
aXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAotICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBO
ZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAg
ICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9CiAK
ICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzU2MSw5ICszNjQyLDE5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBub2RlLT5vcCgpID09IEdldFByaXZhdGVOYW1lKTsKICAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN5bWJv
bFVzZSk7Ci0gICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwogCisg
ICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcyk7CisKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgIH0KKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsK
KwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CkBAIC0zNTc0LDE0ICszNjY1LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKIAog
ICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCks
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3VsdC5yZWdzKCkpOworICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJh
c2UsIHByb3BlcnR5LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLnN0dWJJbmZv
KCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFrZVNsb3dQYXRo
Q2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICBhdXRvIG1ha2VTbG93UGF0aElDQ2FsbCA9IFsm
XShhdXRvIGJhc2UpIHsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAorICAg
ICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
CisgICAgICAgICAgICAgICAgYmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHku
cGF5bG9hZEdQUigpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgK
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSwKICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksCkBAIC0zNTg5LDggKzM2ODYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwog
ICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gYmFzZUlzS25vd25DZWxsCi0gICAgICAgID8gbWFrZVNsb3dQYXRoQ2FsbChDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCi0gICAgICAgIDogbWFrZVNsb3dQYXRo
Q2FsbChiYXNlKTsKKyAgICAgICAgPyBtYWtlU2xvd1BhdGhJQ0NhbGwoQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZS5wYXlsb2FkR1BSKCkpKQorICAgICAgICA6IG1ha2VTbG93UGF0aElDQ2Fs
bChiYXNlKTsKIAogICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM2MDIsMjgg
KzM2OTksNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJ
ZChOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VL
aW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBt
X2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpT
VmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkp
OwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAg
ICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3Vs
dFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwg
TmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKyAgICAgICAgY2FjaGVk
R2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHVi
SW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgp
LCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIE9wdGlvbmFsPEdQ
UlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywg
bV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBB
Y2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6
OkdldFByaXZhdGVOYW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzcyMiwyOSArMzgzMSw0MCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkK
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBu
b2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBz
dHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5n
cHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CiAKICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwg
c28gd2UgZG9uJ3QgbmVlZAogICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCiAgICAgYXV0byBwdXRL
aW5kID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBQdXRLaW5kOjpE
aXJlY3RQcml2YXRlRmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQ7
Ci0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVl
UmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBwdXRLaW5kLCBF
Q01BTW9kZTo6c3RyaWN0KCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNr
UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8u
ZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Cisg
ICAgfQogICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAg
ICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNwZWN1bGF0ZVN5
bWJvbChub2RlLT5jaGlsZDIoKSwgYnJhbmRHUFIpOwpAQCAtMzc1OCwxNiArMzg3OCwyNCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkK
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3Mp
KTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQ
cml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJp
dmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZv
KCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAot
ICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBO
b1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VS
ZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZh
dGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNzc4LDkgKzM5MDYsMTUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CiAgICAg
QVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICBPcHRpb25h
bDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAKQEAgLTM3OTIs
MTYgKzM5MjYsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFu
ZChOb2RlKiBub2RlKQogCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFu
ZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vz
c1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRH
UFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJv
bCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
U2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKLSAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUs
IE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJy
YW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFj
Y2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTE5LDIyICs0MDYxLDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dD
YXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2Rl
KiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3Ms
IEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIs
IEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCiB7CiAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVlUmVncy5wYXls
b2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BSLCBzY3JhdGNo
MkdQUiwKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQ
UiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2Fk
R1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAgICAgICAgbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8IH5TcGVjQ2Vs
bCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd0Nhc2UpOwotICAgIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVS
ZWdzLAotICAgICAgICBwcm90b3R5cGVSZWdzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywg
cHJvdG90eXBlUmVncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZP
cHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJ
bmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAgfQogICAgIAogICAgIG1faml0
LmFkZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzk0NSw2ICs0MDkzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAg
ICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIApAQCAtMzk1Miwx
MyArNDEwMSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2Rl
KiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAgICAKKyAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7
CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQog
ICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHBy
b3RvdHlwZUdQUiA9IHByb3RvdHlwZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigp
OwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAg
Ci0gICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFs
dWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIs
IHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBK
U1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQ
Uiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgCiAgICAg
ICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTM5NjgsMTIgKzQxMjIsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
c3RhbmNlT2YoTm9kZSogbm9kZSkKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUs
IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICBERkdfQVNTRVJU
KG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKTsKICAgICAKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3Bl
cmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAg
CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBs
YWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9
CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBK
U1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAg
CkBAIC0zOTg5LDcgKzQxNDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFu
Y2VPZihOb2RlKiBub2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJ
bnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRH
UFIsIHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAg
IAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CkBAIC0xMzAxOSw0NiArMTMxNzksNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvSW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVj
bWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jl
c3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9k
ZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsK
KyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVS
ZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQo
bm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5v
ZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1Yklu
Zm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7Cisg
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
UHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUp
OwogfQpAQCAtMTQ2OTAsMTggKzE0ODY4LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBl
Y21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywg
R1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkK
IHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFs
cmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNw
aWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAg
ICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVlUmVncywgZmFsc2UpOworICAgICAgICBpZiAo
c3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMu
c2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JF
eGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCisgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiks
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBw
dXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKQEAgLTE0NzExLDkg
KzE0ODkxLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKLSAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigp
LCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9S
ZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTJlMWU4Y2Q1
MmEwNDg2ZTYxMGM1YzQ5MGMzYmEwYTkxN2RjODlmMy4uOGMzMjkzNjA4MDFjMzllYTc1YmRkNGY4
M2U2MjQ1ZTkxMjIyNWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTksMTYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRhY2hlZChOb2RlKik7CiAKLSAgICB2b2lkIGNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5
SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BS
UmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNw
aWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcg
c3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2Fj
aGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGls
bCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcg
cmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExp
c3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQg
Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQ
UiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAg
ICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRh
cmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JO
b25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lk
IGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9u
ZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVn
IHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBz
bG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2b2lkIGNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNl
UGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIs
IEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAg
dm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJP
ck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQ
UlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBh
eWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3Qg
SklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1w
TGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZChOb2RlKik7CkBA
IC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgZ2VuZXJp
Y0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsK
ICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFs
c2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNW
YWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3Vs
dEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICB2b2lkIGNvbXBpbGVJ
bnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVn
cyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BS
UmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9m
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CkBAIC05NDksNiArOTQ5LDI2
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQs
CisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRy
ZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVz
cywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSwgcmVzdWx0KTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICFGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZvaWQ+CisgICAgY2FsbE9wZXJhdGlvbihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVz
cywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgfQorCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9u
KFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAg
ewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRl
ci4KQEAgLTk4OCw2ICsxMDA4LDEzIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAg
cmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgIH0KIAorICAgIHZvaWQgYXBw
ZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHBy
ZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdp
bihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBtX2ppdC5hcHBlbmRD
YWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZE9wZXJh
dGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAg
ICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKQEAgLTEwMTAsNiArMTAzNywy
OCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0K
IAorICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRk
cmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7
CisgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1faml0
Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJS
ZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCisgICAgeworICAgICAgICBhcHBlbmRDYWxsKGFk
ZHJlc3MpOworICAgICAgICBtX2ppdC5zZXR1cFJlc3VsdHMocmVzdWx0MSwgcmVzdWx0Mik7Cisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVz
cyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJlc3VsdFJlZ3MuZ3By
KCkpOworI2Vsc2UKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChhZGRyZXNzLCByZXN1bHRS
ZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CisK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAg
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCBiNTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li5jMWI1ZDA2
MWMzYzVhNGE2NTA2Y2I3YzYwZWUyOTY3ZmMyMTZhNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE2OCwxNSAr
MTY4LDE2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSwgR1BS
UmVnJiB0YWdHUFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2Rl
LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nl
c3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCks
IGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCks
IGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRC
eUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdH
UFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQ
YXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZCgKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JO
b25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VU
YWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwg
R1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlzIGEgaGFja3kgZml4IGZv
ciB3aGVuIHRoZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlhcyB0aGUgYmFzZSBw
YXlsb2FkIHdpdGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5zCiAgICAgLy8gaW4g
dGhlIGNhc2Ugb2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2hpY2ggaGFzIGEg
cmVsYXRpdmVseSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNv
IHdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92ZXIgb25lIG1vdmUgaW5z
dHJ1Y3Rpb24uCkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZCgKICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUs
IGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAg
ICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcsIHR5cGUp
OwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIyOCwx
NSArMjI5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKLSAgICBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRH
UFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1
bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BS
UmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQ
UiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYg
c2xvd1BhdGhUYXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIAog
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVy
YXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0t
PnNpemUoKSk7CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBp
ZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpT
VmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CisgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVn
aXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJl
c3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9h
ZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSwgSW52YWxpZEdQ
UlJlZyk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAt
MjM0MSw4ICsyMzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAg
ICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBi
YXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKIAogICAg
ICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEp
KS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnBy
b3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMzQwNSw3ICszNDA3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRh
Z0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywg
YmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFz
ZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5
bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI1LDcgKzM0MjcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RD
ZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSkp
OwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0
aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNo
ZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNl
UGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7
CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIs
IHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggYjkxMThiNjJlODdkOTcwYWM1NDYxZjYzYmQzYzM4MGZiOGIwMTI2
MC4uMzM2YjFhOTVkMjQ2ZTcxOTRhNzc0MTAyNjUzYzMyOWQzNDM0ZjViMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNDcs
MTIgKzE0NywxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRn
ZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9y
aWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0
QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllciwgc2xvd1Bh
dGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdw
cigpLCByZXN1bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdl
dCwgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsK
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5l
cmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFt
LT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVn
aXN0ZXJzKCk7CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwog
ICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywg
d2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
YmFzZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZh
bHNlKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUp
LAotICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVl
ZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rp
b24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAg
ICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9q
aXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBH
UFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
SklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAg
IFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0x
ODcsMjAgKzE5NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUgogICAgIHVzZWRSZWdpc3Rl
cnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldCh0aGlzR1BSLCBm
YWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxzZSk7CisgICAgaWYg
KHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0
KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRH
UFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUikpOworICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5m
b0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0
aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhU
aGlzT3B0aW1pemUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVj
a1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRp
bWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6
Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAg
ICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTI2
ODEsMTYgKzI3MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBz
cGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0KKyAgICAg
ICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJv
cGVydHkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwogCisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxp
bmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgICAg
ICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpA
QCAtMjcwMCw4ICsyNzI3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2VHUFIpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3Mo
cmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2Vk
UmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVl
UmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMjcxMiwxMSArMjczOSwxOSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGlmICghSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9w
ZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BS
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0
QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg0LDkgKzQwMTksMTYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRCeUlkV2l0aFRo
aXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYm
IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgICAgICBPcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpA
QCAtMzk5NCwxNCArNDAzNiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICAgICAgICAgIGNh
Y2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNW
YWx1ZUdQUiwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAg
ICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAg
R1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJ
bmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUu
Z3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKQEAgLTQwMTMsNyArNDA2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENl
bGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVl
R1BSKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBj
YWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlz
VmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgbm90Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkw
Y2UzNTkwN2RhZDhiZjM1Li4yYzg1ZDk5M2RiMjg0ZTRmN2I1MGUwMDE1YzA5NzY3MjNlYmJlYmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0zOTc4LDYgKzM5NzgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJU
YWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0
cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0
Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFy
YW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFt
c1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IElu
dmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRH
ZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6
OkdldFByaXZhdGVOYW1lLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BS
KSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFs
dWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIp
OwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAg
ICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAtNDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVn
aW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJ
VCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUs
IHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwog
CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQ
YXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CiAKQEAgLTQxMzAsMTAgKzQxNDUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgYnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1z
LmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwgYWNjZXNzVHlwZSwKLSAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7
CisgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAg
LTQxNTksMTMgKzQxNzUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAg
ICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGlu
aygmaml0KTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmso
JmppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0
aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVBy
aXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAg
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0
ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2
YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1Rv
KGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0
aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENl
bGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZs
dXNoLCB3ZSBtaWdodCB3YW50IHRvIGxhdGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgK
QEAgLTQ1MzgsMTAgKzQ1NjcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
ICAgICAvLyBKUyBzZXR0ZXIgY2FsbCBJQ3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdp
bGwgbmVlZCB0aGlzLgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAg
ICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAg
ICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVh
dGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRl
bnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0
Y2hSZWdpc3RlciwgZWNtYU1vZGUsCisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSksIHN0dWJJbmZvR1BSLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJl
Z2lzdGVyLCBlY21hTW9kZSwKICAgICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIg
KzQ1ODQsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3It
PnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMo
KSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3By
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRl
bnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xv
d1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIu
cmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdp
biwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyMzksNiArNTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwogCkBAIC01MjU5LDEwICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIo
KTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAg
ICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAg
ICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+
OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQ
UikpOworICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJ
VCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRC
eVZhbCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVS
ZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9w
ZXJ0eUlzSW50MzI7CkBAIC01MjgwLDEzICs1MzI1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxP
cHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1
YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4
MzYsNyArNTg5Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywg
VmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpID8gMiA6IDE7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRF
eGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0
Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFs
dWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIg
PSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFy
YW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkg
OiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJl
dHVybkdQUik7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdw
U2NyYXRjaCgwKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMu
Z3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIp
OwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJ
Zk5vdENlbGwoYmFzZSkpOwpAQCAtNTg3NCw3ICs1OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6
Tm9ybWFsKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNo
KDApICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
c2NyYXRjaEdQUiAhPSBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1Zh
bHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRv
ciA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxC
eUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRE
ZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklU
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVl
LCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQ
UiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8
SklURGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpG
VExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQ
UiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1
YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIp
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KSk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVs
KCk7CiAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1
OTY1LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJu
R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZU
TEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mb0dQUiwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
c2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJu
R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhD
YWxsKTsKQEAgLTEyMjQyLDggKzEyMzE0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJU
YWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVm
UHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAg
ICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2
MCwxMCArMTIzMzIsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBC
b3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMo
aml0KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxp
ZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJ
ZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAot
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIp
OwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBA
IC0xMjI3NCwxMiArMTIzNDgsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0g
aml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1sw
XS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50
aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1Bh
dGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyNDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3Rv
dHlwZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gMjsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDMgOiAyOwogICAgICAgICBwYXRj
aHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVy
IH07CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKICAgICAgICAgCkBAIC0xMjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFt
c1syXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5n
cFNjcmF0Y2goMCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1z
LmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6
IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGRvbmVKdW1wOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwp
IHsKQEAgLTEyNTIzLDEwICsxMjYxMCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFt
cyktPmp1bXBzKGppdCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBn
ZW5lcmF0b3IgPSBCb3g8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCisgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVH
UFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLAogICAgICAgICAgICAgICAgICAgICBzY3JhdGNo
MkdQUiwgcHJvdG90eXBlSXNPYmplY3QpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2Vu
ZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC0xMjUzNywxMiArMTI2MjYsMjQgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1
bmN0aW9uLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgdmFsdWVHUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCku
bGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2lu
LCBzbG93UGF0aENhbGwpOwpAQCAtMTM5ODYsNiArMTQwODcsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIGlzIGEgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2UgbWln
aHQgZ2V0IHNvbWUgcGVyZm9ybWFuY2UgYm9vc3QgaWYgd2UgY2xhaW0gdGhhdCBpdAogICAgICAg
ICAvLyBjbG9iYmVycyB2b2xhdGlsZSByZWdpc3RlcnMgbGF0ZS4gSXQncyBub3QgbmVjZXNzYXJ5
IGZvciBjb3JyZWN0bmVzcywgdGhvdWdoLCBzaW5jZSB0aGUKQEAgLTE0MDE0LDEwICsxNDExNiwx
MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0
ZSBpbmRleC4KICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENy
ZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAg
ICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDMwLDEy
ICsxNDEzNCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXph
dGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3By
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRo
Q2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTQwNjAsOCArMTQxNzYsOCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVn
aXN0ZXIodGhpc1ZhbHVlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1h
c2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9u
SGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRG
b3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtMTQwODMsMTAgKzE0MTk5LDEyIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4Lgog
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JV
bndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJh
bXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8g
Z2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklU
VHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVy
LCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1
ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDA5OSwxMiArMTQyMTcsMjQg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlv
biwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRv
ci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5j
dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNb
MV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5y
YXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdp
biwgc2xvd1BhdGhDYWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmNwcAppbmRleCAyYWRkNDk0YzUzMmFhZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRm
Li5iNGU0NzU4ZTU4ZmIxZTc5MjZjNmEwNzE4MzczMTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IHdvcmRTaXplID0gODsKIAogU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4
dCgKLSAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5z
aWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcg
cmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6
IG1faml0KGppdCkKICAgICAsIG1fbnVtQXJncyhudW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdp
c3RlcihyZXR1cm5SZWdpc3RlcikKQEAgLTYzLDYgKzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4
dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJz
Lm1lcmdlKG1fYXJndW1lbnRSZWdpc3RlcnMpOwogICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJ
bnZhbGlkR1BSUmVnKQogICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgaWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lz
dGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3Rl
cnMuc2V0KGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50
aW9uUmVnaXN0ZXJzLmZpbHRlcih1c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEy
IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6On5TbG93UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1Bh
dGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdAogewotICAgIHJldHVybiBTbG93UGF0
aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMs
IG1fb2Zmc2V0KTsKKyAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBj
YWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQ
YXRoQ2FsbEtleSBTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVy
czo6QWRkcmVzcyBhZGRyZXNzKSBjb25zdAoreworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXko
bV90aHVua1NhdmVTZXQsIG51bGxwdHIsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBh
ZGRyZXNzLm9mZnNldCk7CiB9CiAKIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0Ojpt
YWtlQ2FsbChWTSYgdm0sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkK
QEAgLTEzMyw2ICsxNDAsMjIgQEAgU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1h
a2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK1Nsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChW
TSYgdm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRo
Q2FsbEtleSBrZXkgPSBrZXlXaXRoVGFyZ2V0KGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2Fs
bCByZXN1bHQgPSBTbG93UGF0aENhbGwobV9qaXQuY2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7
CisKKyAgICBtX2ppdC5hZGRMaW5rVGFzaygKKyAgICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB0aHVuayA9CisgICAgICAgICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRT
bG93UGF0aENhbGxUaHVuayh2bSwgcmVzdWx0LmtleSgpKTsKKworICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKHJlc3VsdC5jYWxsKCksIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFn
Pih0aHVuay5jb2RlKCkpKTsKKyAgICAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4
MWYyNzdmNmI4MjE3YWM5ZjNmYTgwYzEyYS4uZDZmMjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBm
NDgyYTgzMWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5oCkBAIC01NCwxNSArNTQsMTcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2ls
bCBiZSBhbiBSQUlJIHRoaW5neSB0aGF0IHdpbGwgc2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sg
c2l6ZXMgYW5kIG9mZnNldHMgYW5kIHN1Y2guCiBjbGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsK
IHB1YmxpYzoKLSAgICBTbG93UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3Rl
cnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rl
cik7CisgICAgU2xvd1BhdGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBD
Q2FsbEhlbHBlcnMmLCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQ
UlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRl
eHQoKTsKIAogICAgIC8vIE5PVEU6IFRoZSBjYWxsIHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVh
ZHkgZ29pbmcgdG8gYmUgbGlua2VkIGJ5IHRoZSBKSVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAg
ICAvLyBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB5b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAg
ICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVy
czo6QWRkcmVzcyk7CiAKIHByaXZhdGU6CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJn
ZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBT
bG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0
OwogICAgIAogICAgIFJlZ2lzdGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0
ZXJTZXQgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xv
d1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiB7CiAgICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAg
ewotICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0
LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIpOworICAgICAgICBTbG93
UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJn
dW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAg
ICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0x
MTcsNiArMTE5LDQ4IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1
bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlw
ZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LAorICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5j
dGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7Cisg
ICAgU2xvd1BhdGhDYWxsIGNhbGw7CisgICAgeworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0
IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAx
LCByZXN1bHRHUFIsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGw8dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFy
Z3VtZW50cy4uLik7CisgICAgICAgIGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7Cisg
ICAgfQorICAgIGlmIChleGNlcHRpb25UYXJnZXQpCisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+
YXBwZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2sodm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxs
T3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IENDYWxsSGVscGVycyYgaml0LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRHUFIsCisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1
bWVudHMpCit7CisgICAgaWYgKGNhbGxTaXRlSW5kZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIo
CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJp
dHMoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAg
IHJldHVybiBjYWxsT3BlcmF0aW9uKHZtLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRh
cmdldCwgZnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJndW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVy
YXRpb24oCisgICAgU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBm
dW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7Cisg
ICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oCisgICAgICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3Rl
cnMsIGppdCwgY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBl
eGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLAorICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENh
bGxLZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXku
Y3BwCmluZGV4IDJkMzA2YzYyMDMzYTgzOTA4ZTZmY2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdl
ODI2MWZkNDczNmIxZDMzNzJiZWY1NTEzZWZlNWFhMzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgiPHVzZWRSZWdp
c3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBj
YWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3Mo
KSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsK
KyAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBv
ZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgaW5kaXJlY3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zm
c2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVy
cywgIj4iKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJj
N2NlODNkNzA1MjBlNzYxMzg0MmJkZDMzZC4uMGNlNjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0
MWFlMTAwMGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRo
Q2FsbEtleS5oCkBAIC01MSwxMSArNTEsMTIgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAg
ICAKICAgICBTbG93UGF0aENhbGxLZXkoCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQs
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIGFyZ3VtZW50UmVnaXN0ZXJzLAotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0LCBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1f
dXNlZFJlZ2lzdGVycyhzZXQpCiAgICAgICAgICwgbV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0
YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKQogICAgICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMo
YXJndW1lbnRSZWdpc3RlcnMpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAs
IG1faW5kaXJlY3RPZmZzZXQoaW5kaXJlY3RPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAg
LTYzLDEwICs2NCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4gY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdl
dDsgfQogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fYXJndW1lbnRSZWdpc3RlcnM7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRpcmVjdE9mZnNldDsgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtl
eSB3aXRoQ2FsbFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQp
CiAgICAgewotICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwg
Y2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRS
ZWdpc3RlcnMoKSwgb2Zmc2V0KCksIGluZGlyZWN0T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFz
cyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVl
VGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkK
LSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhD
YWxsS2V5KERlbGV0ZWRWYWx1ZVRhZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0
ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9
CiAgICAgCkBAIC05MywxOCArOTMsMjAgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7
CiAgICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJz
CiAgICAgICAgICAgICAmJiBtX2NhbGxUYXJnZXQgPT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAg
ICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKKyAgICAgICAgICAgICYmIG1f
b2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0CisgICAgICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0
ID09IG90aGVyLm1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJI
YXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29m
ZnNldDsKKyAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZv
aWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCAr
IG1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1f
dXNlZFJlZ2lzdGVyczsKICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRh
cmdldDsKICAgICBSZWdpc3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZf
dCBtX29mZnNldDsKKyAgICBwdHJkaWZmX3QgbV9vZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBt
X2luZGlyZWN0T2Zmc2V0IHsgMCB9OwogfTsKIAogc3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2gg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWEx
MmFhZGRkMjc2YTkzMzEzM2MwYjM2Yzg2NjEzYWQuLmQ5MjAyYTNkNDE5ZTVjYjJhNTllMzFmYmU4
NWE0YWQ1M2JlNDk0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAK
QEAgLTc4LDggKzc4LDggQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gZ2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0
ZXJzKGppdCwgYnVmZmVyKTsKICAgICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11
Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNz
T2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXpl
SW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3Ro
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjEpOwogCiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAs
MTMgKzIwMCwyMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQ
YXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgICAgICBjdXJyZW50T2Zm
c2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0KICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3Nl
bWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGpp
dC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJl
ckNoZWNrKGppdCwga2V5LmFyZ3VtZW50UmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRv
bnRDbG9iYmVyID0ga2V5LmFyZ3VtZW50UmVnaXN0ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRh
cmdldCgpKQorICAgICAgICBkb250Q2xvYmJlci5zZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Cisg
ICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBXVEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAg
ICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
CisgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0
KCkpCisgICAgICAgIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UK
KyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIGtleS5pbmRpcmVjdE9mZnNldCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5s
b2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVy
bkdQUik7CiAgICAgaml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86
Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihW
TSYgdm0sIGNvbnN0IFMKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAo
a2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2Fs
bFRhcmdldCgpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJGVEwgc2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtl
eSkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCmluZGV4IDM1NGY5NTQ3YjRhYmYzMjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2Qu
LmJmOGEwODA0MGNlYzg3YjY0Zjc3YzM2YWVhZGJmZWQ5ZGU0MDI3NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAi
SklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbAogICAgICAgICBhdXRvIGNhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRp
b25PZk5lYXJDYWxsPEpJVENvbXBpbGF0aW9uUHRyVGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1
ZmZlci5hZGRNYWluVGhyZWFkRmluYWxpemF0aW9uVGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxU
aHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgKmluZm8pOwotICAgICAgICAgICAgaW5mby0+c2V0
U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkp
OworICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpj
cmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2OGIxMjEz
ZjZkMjRjNzBhZmI1MDMzMjBlYWE3MmQ4OWU3ZDg2YmU5Li5lOTA5NmI1NzczZjMyMTczMTY5ZTcz
ZmFlMzQxMTE4ODY5ODk3ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKIAogICAgIC8vIGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRyYWNrIDY0
LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgaW4gcmVnaXN0ZXIgb24gMzItYml0IGFyY2hpdGVj
dHVyZXMuCiAgICAgLy8gZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50
IHR5cGVzIHBhc3NlZCBvbiB0aGUgc3RhY2suCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgogICAg
IHN0cnVjdCBBcmdDb2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAgICAg
IHsKQEAgLTIxOSw4ICsyMTksOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1i
bHlIZWxwZXJzIHsKICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQ
UlJlZyk7CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25l
ZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNp
Z25lZCBnPgotICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwg
ZSwgZiwgZz4mIG90aGVyKQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBi
LCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25l
ZCBnLCB1bnNpZ25lZCBoPgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwg
YiwgYywgZCwgZSwgZiwgZywgaD4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBncHJT
b3VyY2VzID0gb3RoZXIuZ3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9ucyA9
IG90aGVyLmdwckRlc3RpbmF0aW9uczsKQEAgLTIzMCw2NSArMjMwLDc0IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0
aW5hdGlvbnMgPSBvdGhlci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0gICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBk
ZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7Cisg
ICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsg
MSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAg
cmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAg
IHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3Vy
Y2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJl
Z0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBS
U291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwg
bnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5mcHJT
b3VyY2VzW251bUZQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZnBy
RGVzdGluYXRpb25zW251bUZQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVn
IGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBw
dXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2VzW251
bUNyb3NzU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rlc3Rp
bmF0aW9uc1tudW1Dcm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhHUFJS
ZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IHB1c2hFeHRyYVJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAg
ICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJj
ZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0
aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Mg
KyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEs
IGV4dHJhUG9rZT4gcHVzaE5vbkFyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsg
MSwgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291
cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRl
c3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkFyZygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Mg
KyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAg
ICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
ICsgMSwgZXh0cmFQb2tlPiBhZGRHUFJFeHRyYUFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFk
ZEdQUkV4dHJhQXJnKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlzKTsKKyAg
ICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
ICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhZGRTdGFja0FyZyhHUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyAr
IDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQ
UlJlZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAg
IHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFj
a0FyZyhGUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKKyAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPigq
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9
CiAKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMzMxLDEyICszNDAsMTQgQEAg
Y2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxh
dGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVu
dEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2Fs
Y3VsYXRlUG9rZU9mZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1
cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7
CiAgICAgICAgIC8vIENsYW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBzeW1ib2wg
Zm9yIEZQUlJlZy9HUFJSZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0aGV5IGFy
ZSBwYXNzZWQgZGlyZWN0bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1ZwogICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJP
ZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1lbnRS
ZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogCisgICAgICAg
IFVOVVNFRF9QQVJBTShub25BcmdHUFJzKTsKKwogICAgICAgICBjdXJyZW50R1BSQXJndW1lbnQg
Kz0gZXh0cmFHUFJBcmdzOwogICAgICAgICBjdXJyZW50RlBSQXJndW1lbnQgLT0gbnVtQ3Jvc3NT
b3VyY2VzOwogICAgICAgICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKQEAg
LTM1MCwxNSArMzYxLDE1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+Ci0gICAgQUxX
QVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3Vy
cmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Up
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5z
aWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBu
b25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBw
b2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJl
bnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7
CisgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJl
bnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBva2VP
ZmZzZXQpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5z
aWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBj
dXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZz
ZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFy
Z3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAg
ICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFy
Z3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYg
MSk7CiAgICAgfQogCkBAIC0zNzYsOCArMzg3LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogICAgIC8vIEF2b2lk
IE1TVkMgb3B0aW1pemF0aW9uIHRpbWUgZXhwbG9zaW9uIGFzc29jaWF0ZWQgd2l0aCBfX2ZvcmNl
aW5saW5lIGluIHJlY3Vyc2l2ZSB0ZW1wbGF0ZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VY
Q0VQVF9NU1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVnVHlw
ZSBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZ
U19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgdXNpbmcgSW5mb1R5cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAgICAgdW5z
aWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CkBAIC0zOTIsMzEgKzQwMywzMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFy
ZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJn
cykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJH
VU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQ
UlJlZ3MgdG8gYSBkb3VibGUiKTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAg
ICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hh
bGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIo
KSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxW
YWx1ZSBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRS
ZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4p
OwogICAgIH0KQEAgLTQyNCw4ICs0MzUsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShNSVBTKQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBh
cmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBk
b3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRv
dWJsZSIpOwogCkBAIC00NjksMjUgKzQ4MCwyNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50R1BB
cmdDb3VudCA8IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5h
ZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIC8vIE90aGVyd2lzZSBwYXNzIEZQIGFyZ3Vt
ZW50IG9uIHN0YWNrLgotICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgaWYgKHN0YWNr
QWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBv
a2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2Uo
KS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lm
X3Q8c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50
ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcpOwpAQCAtNDk3LDM0ICs1MDgsMzQgQEAgY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
KTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAg
dm9pZCBwb2tlQXJndW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcy
LCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlw
ZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBh
cmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51
bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAg
ICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BS
SW5mbzo6cmVnVDApOwogCiAgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51bUFy
Z1JlZ2lzdGVycykgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQ
b2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSArIDEp
OworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQ
b2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tlKCks
IGFyZ3MuLi4pOwotICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewot
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgfSBlbHNlIGlmIChz
dGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5h
ZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlICsgMik7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAyKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKS5h
ZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1
ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5bG9hZCwg
QXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNp
Z25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
OwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0Nv
dW50KHBheWxvYWQuZ3ByKCkpOwpAQCAtNTQ0LDkgKzU1NSw5IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0Fs
aWduZWQ8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46
OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFy
ZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5z
aWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
czsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdD
b3VudChhcmcudGFnR1BSKCkpOwpAQCAtNTY5LDExICs1ODAsMTEgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAjZW5kaWYgLy8gQ1BVKEFSTV9USFVNQjIp
IHx8IENQVShNSVBTKQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3Rk
Ojppc19iYXNlX29mPFRydXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0ZDo6aXNf
Y29udmVydGlibGU8QXJnLCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhpcyBzaW5j
ZSBERkdTcGVjdWxhdGl2ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2YgVHJ1c3Rl
ZEltbVB0cgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBv
bmx5IHN1cHBvcnRzIG5vbi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNpbmNl
IHdlIG5ldmVyIGNhbGwgb3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAgICAg
ICAgIC8vIElmIHdlIGV2ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5nIHBv
aW50IGFyZ3VtZW50cyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZvciBi
b3RoIHR5cGVzLCB3aGljaCBzb3VuZHMKQEAgLTU5MSw0NiArNjAyLDQ2IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmco
KSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUg
QXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNf
SU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FS
R1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VS
UkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FS
R1VNRU5UX1RZUEUpIDw9IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFy
Z3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMyKGFy
ZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
IEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlT
X0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9B
UkdVTUVOVF9UWVBFLCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENV
UlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9B
UkdVTUVOVF9UWVBFKSA9PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02NChh
cmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZ
U19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENVUlJF
TlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVyPEFy
Zz46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6
OnJlbW92ZV9wb2ludGVyX3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSkK
ICAgICAgICAgICAgIHx8IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUp
PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJn
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcpLCBhcmdzLi4uKTsKICAg
ICB9CiAKICAgICAvLyBTcGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlIGJlY2F1
c2UgaXQncyByZWFsbHkgYW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVyd2lzZS4uLgotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAg
ICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6dmFs
dWUKICAgICAgICAgJiYgc3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJl
Pjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJn
cy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSks
IGFyZ3MuLi4pOwogICAgIH0KQEAgLTYzOSw4ICs2NTAsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMg
OiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICN1bmRlZiBSRVNVTFRfVFlQRQogCiAgICAgLy8g
QmFzZSBjYXNlOyBzZXQgdXAgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+Ojphcml0eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNh
bml0eSBjaGVjayIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02NTUsMzEgKzY2Niw0NCBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0
dXBTdHViQXJnczxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtRlBS
U291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJy
YXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJjZXMp
KTsKICAgICB9CiAKLXB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c0VudHJ5SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZ3MuLi4gYXJncykK
KyAgICB7CisgICAgICAgIHVzaW5nIEZpcnN0QXJndW1lbnRUeXBlID0gdHlwZW5hbWUgRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPjsKKyAgICAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8Rmlyc3RBcmd1bWVudFR5cGUsIENhbGxGcmFt
ZSo+Ojp2YWx1ZSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlzIG9u
bHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdz
IHVwIGZvciAzMi1iaXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAi
QmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgYXJncy4uLik7CisgICAgICAgIH0gZWxzZSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3Zh
bHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNp
emVvZi4uLihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJncy4u
Lik7CisgICAgICAgIH0KKyAgICB9CiAKLSNkZWZpbmUgRklSU1RfQVJHVU1FTlRfVFlQRSB0eXBl
bmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBl
PDA+CitwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3NhbWU8RklSU1RfQVJHVU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3Vt
ZW50cyhBcmdzLi4uIGFyZ3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEFyZ3MuLi4gYXJncykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhp
cyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRo
aW5ncyB1cCBmb3IgMzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAi
QmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwg
MCwgMCwgMCwgMCwgMD4oKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0
aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxX
QVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8RklSU1RfQVJHVU1FTlRf
VFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEdQUlJl
ZyBmdW5jdGlvbkdQUiwgQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1
ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4u
LihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0
aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDA+KCkucHVzaE5vbkFyZyhmdW5jdGlvbkdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCks
IGFyZ3MuLi4pOwogICAgIH0KIAotI3VuZGVmIEZJUlNUX0FSR1VNRU5UX1RZUEUKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChBZGRyZXNzIGFkZHJl
c3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBs
PE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5w
dXNoTm9uQXJnKGFkZHJlc3MuYmFzZSwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOwor
ICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RC
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmNwcAppbmRleCBmN2FhMzI5ZmUyNWQxOWM3MzcxODQ3MGFlZmZiM2I0YWFlYTA1
ZGI2Li42ZjNmYzJmMGYyMTVkNmIzNzRjMzU5NmZhNDcwYmFmNDY5YTkyZjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2Fz
ZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCkBAIC0zOCw5ICszOSwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0m
IHZtKQorR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZt
LCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKICAgICA6IEpJVFN0dWJS
b3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQorICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykp
CiB7CiAgICAgdm0uaGVhcC5tX2ppdFN0dWJSb3V0aW5lcy0+YWRkKHRoaXMpOwogfQpAQCAtNDks
NiArNTEsOSBAQCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmUo
KSB7IH0KIAogdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQo
KQogeworICAgIGlmIChtX3ZtLm1fc2hhcmVkSklUU3R1YnMpCisgICAgICAgIG1fdm0ubV9zaGFy
ZWRKSVRTdHVicy0+cmVtb3ZlKHRoaXMpOworCiAgICAgaWYgKG1faXNKZXR0aXNvbmVkKSB7CiAg
ICAgICAgIC8vIFRoaXMgY2FzZSBpcyBuZWVkZWQgZm9yIHdoZW4gdGhlIHN5c3RlbSBzaHV0cyBk
b3duLiBJdCBtYXkgYmUgdGhhdAogICAgICAgICAvLyB0aGUgSklUIHN0dWIgcm91dGluZSBzZXQg
Z2V0cyBkZWxldGVkIGJlZm9yZSB3ZSBnZXQgYXJvdW5kIHRvIGRlbGV0aW5nCkBAIC03NSw5ICs4
MCw5IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpkZWxldGVGcm9tR0MoKQogfQogCiBN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
IGNvZGUsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwKKyAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBjb25zdCBKU0NlbGwqIG93bmVyLAogICAg
IGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExp
bmtJbmZvcykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkKKyAgICA6IEdD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSkKICAgICAsIG1fY2Vs
bHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlua0luZm9zKFdURk1vdmUoY2FsbExpbmtJ
bmZvcykpCiB7CkBAIC0xMDYsOSArMTExLDkgQEAgdm9pZCBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZpc2kKIH0K
IAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+
JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4mJiBrZXlzLCAgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdhcmVKSVRT
dHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3Mp
KQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShr
ZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogICAgICwgbV9jb2Rl
QmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykK
ICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIG1fY29kZU9yaWdpblBvb2woJm1fY29kZUJsb2Nr
V2l0aEV4Y2VwdGlvbkhhbmRsZXItPmNvZGVPcmlnaW5zKCkpCkBAIC0xNTQsNiArMTU5LDcgQEAg
dm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVpl
cm9SZWZDb3VudCgpCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUo
CiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywKICAgICBW
TSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBib29sIG1ha2VzQ2FsbHMsCkBA
IC0xNjUsMTggKzE3MSwxOCBAQCBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKAogICAgIGlmICghbWFrZXNDYWxscykgewogICAgICAgICAvLyBBbGxvY2F0aW5nIENhbGxM
aW5rSW5mb3MgbWVhbnMgd2Ugc2hvdWxkIGhhdmUgY2FsbHMuCiAgICAgICAgIEFTU0VSVChjYWxs
TGlua0luZm9zLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpJVFN0
dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVhYmxl
SklUU3R1YlJvdXRpbmUodm0sIGNvZGUsIFdURk1vdmUoa2V5cykpKTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5k
bGVycy0+aml0VHlwZSgpKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMs
IFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBl
eGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwg
V1RGTW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2Rl
QmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgp
KTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29k
ZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29k
ZSwgdm0sIFdURk1vdmUoa2V5cykpOwogICAgIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIG93bmVyLCBjZWxscywg
V1RGTW92ZShjYWxsTGlua0luZm9zKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4
IDQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQuLjIzYzM5ODIzZDgwYTc4
MmM1NDQ2MmNiZWY0N2M1ZWIyNDc4YjlkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3Bh
Y2UgREZHIHsKIGNsYXNzIENvZGVPcmlnaW5Qb29sOwogfQogCitjbGFzcyBBY2Nlc3NDYXNlOwog
Y2xhc3MgQ2FsbExpbmtJbmZvOwogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAKQEAgLTU0LDEy
ICs1NSwxMiBAQCBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIC8vIGxpc3Qgd2hpY2ggZG9lcyBu
b3QgZ2V0IHJlY2xhaW1lZCBhbGwgYXQgb25jZSkuCiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRp
bmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogcHVibGljOgotICAgIEdDQXdhcmVKSVRTdHVi
Um91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiwgVk0mKTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmKTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRp
YyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4mJiBrZXlzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSkpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CkBAIC02OCw2ICs2OSw4IEBA
IGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAg
ICAgICAgIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbCh2aXNpdG9yKTsKICAgICB9CiAgICAg
CisgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICZtX2tleXM7IH0KKwogICAgIHZvaWQgZGVsZXRlRnJvbUdDKCk7CiAg
ICAgCiBwcm90ZWN0ZWQ6CkBAIC04MSw2ICs4NCw4IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAKICAgICBib29sIG1fbWF5QmVFeGVjdXRp
bmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQgeyBmYWxzZSB9OworICAgIFZN
JiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOwogfTsK
IAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gbWFyayBvbmUgYWRkaXRpb25hbCBvYmplY3Qg
ZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgpAQCAtODgsNyArOTMsNyBAQCBjbGFzcyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogY2xhc3MgTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogcHVibGlj
OgogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgICAgIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOwor
ICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIGNvbnN0IEpTQ2VsbCog
b3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAg
IH5NYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0
ZWQ6CkBAIC0xMDksNyArMTE0LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4
Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIEdDQXdhcmVKSVRTdHViUm91dGluZSBCYXNlOwogCi0gICAgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29u
c3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlz
cG9zYWJsZUNhbGxTaXRlSW5kZXgpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgY29uc3QgSlND
ZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwg
Q29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOwogICAgIH5HQ0F3YXJlSklUU3R1
YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigpIGZpbmFsOwogCiAgICAgdm9pZCBhYm91dFRv
RGllKCkgZmluYWw7CkBAIC0xMzIsNiArMTM3LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQK
IC8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAogLy8g
ICAgVk0mIHZtLAorLy8gICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMs
CiAvLyAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogLy8gICAgYm9vbCBtYWtlc0NhbGxzLAogLy8g
ICAgLi4uKTsKQEAgLTE0Myw3ICsxNDksNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVX
aXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogLy8g
d2F5LgogCiBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKKyAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmIGtleXMsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0Nh
bGxzLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYgY2Fs
bExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJz
LCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDhmNDViMzc3YzE2OTZhNTE2
YTg0MzAwYjg5MjFmNmFkZDZhM2Q0ZGQuLjA2N2FiZmYxZDZhZDIwMDc1NDUxODAwNzdiMGM0YTU1
Yzc3NzIyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC00NjAsNiArNDYw
LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1l
bnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDMKICNlbmRpZgogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUg
KHJlZ1Q0IG9uIFdpbmRvd3MpCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BS
MSA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7
IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBX
aW5kb3dzKQpAQCAtNjUyLDYgKzY1Myw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSNiA9IEFSTTY0UmVnaXN0ZXJzOjp4NjsgLy8gcmVn
VDYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjcgPSBBUk02NFJlZ2lz
dGVyczo6eDc7IC8vIHJlZ1Q3CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BS
MCA9IEFSTTY0UmVnaXN0ZXJzOjp4ODsgLy8gcmVnVDgKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBub25BcmdHUFIxID0gQVJNNjRSZWdpc3RlcnM6Ong5OyAvLyByZWdUOQogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNNjRSZWdpc3RlcnM6OngwOyAv
LyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFS
TTY0UmVnaXN0ZXJzOjp4MTsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBu
b25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk02NFJlZ2lzdGVyczo6eDI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggNTU1NjMwMzdhZWI1OGZlYzliM2YwM2Y3Y2ZlZTFmYzBkZTNl
Y2UyMy4uNDFkOGI4ZjgyMGI5Mjc2NmE3MTZhYWE4ZDYzZGYxYjVkOGZhODA2MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtOTAyLDEyICs5MDIsMTIgQEAgdm9pZCBKSVQ6Omxpbmso
KQogCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYnlWYWxDb21waWxhdGlvbkluZm8gOiBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvKSB7CiAgICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJs
ZU5vdEluZGV4SnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5vdEluZGV4SnVtcDsKLSAgICAg
ICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPigpOworICAgICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBu
b3RJbmRleEp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJbmRleEp1bXAp
LmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkpOwogCiAgICAgICAgICAgICBQYXRjaGFibGVKdW1w
IHBhdGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7
Ci0gICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVy
bmFsUHRyVGFnPigpOworICAgICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBiYWRUeXBlSnVtcDsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVK
dW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9u
SnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CiAKQEAgLTkxNiwxNCAr
OTE2LDE5IEBAIHZvaWQgSklUOjpsaW5rKCkKICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhUYXJn
ZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2Nh
dGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQYXRoVGFy
Z2V0KSk7CiAKICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+c2V0
VXAoCi0gICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wLAotICAgICAgICAgICAgICAgIGJhZFR5
cGVKdW1wLAogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXIsCiAgICAgICAgICAgICAg
ICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlNb2RlLAogICAgICAgICAgICAgICAgIGJ5VmFs
Q29tcGlsYXRpb25JbmZvLmFycmF5UHJvZmlsZSwKICAgICAgICAgICAgICAgICBkb25lVGFyZ2V0
LAogICAgICAgICAgICAgICAgIG5leHRIb3RQYXRoVGFyZ2V0LAogICAgICAgICAgICAgICAgIHNs
b3dQYXRoVGFyZ2V0KTsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5m
by5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdn
ZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxh
dGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQu
cmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRl
eEp1bXAgPSBub3RJbmRleEp1bXA7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbklu
Zm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wID0gYmFkVHlwZUp1bXA7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDc1YzljYjk2
YjEzNjUzMmYwODYxZjJmMGE4MDU4ZWZjNmIwNTZiMjQuLjlmMzE2NWQ1NWI4YmRmZGYxMDJiZmFm
OGFkMTM4ZTY4MWFhZGNmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk0LDYgKzI5
NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbkNhbGw7
CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGFwcGVuZENhbGwoQWRkcmVzcyBmdW5jdGlvbikK
KyAgICAgICAgeworICAgICAgICAgICAgY2FsbChmdW5jdGlvbiwgT3BlcmF0aW9uUHRyVGFnKTsK
KyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgQ2Fs
bCBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CkBAIC0zOTUsMzkgKzQwMCwzOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kIHpl
cm8gZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLgogICAgICAgICAvLyBTdHJ1Y3R1cmUg
aXMgYWxyZWFkeSBwcm9maWxlZC4gUmV0dXJucyB0aGUgc2xvdyBjYXNlcy4gRmFsbC10aHJvdWdo
CiAgICAgICAgIC8vIGNhc2UgY29udGFpbnMgcmVzdWx0IGluIHJlZ1QwLCBhbmQgaXQgaXMgbm90
IHlldCBwcm9maWxlZC4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpIHsgcmV0dXJuIGVt
aXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgSW50MzJTaGFwZSk7IH0KLSAg
ICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4
cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0QXJy
YXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
OwotICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlv
biosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBM
aXN0IGVtaXRJbnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykgeyByZXR1cm4gZW1pdENvbnRp
Z3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8sIEludDMyU2hhcGUpOyB9
CisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CisgICAgICAgIEp1bXBMaXN0IGVtaXRD
b250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyosIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBl
KTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOwogCiAgICAgICAgIC8vIFByb3Bl
cnR5IGlzIGluIHJlZ1QxLCBiYXNlIGlzIGluIHJlZ1QwLiByZWdUMiBjb250YWlucyBpbmRlY2lu
ZyB0eXBlLgogICAgICAgICAvLyBUaGUgdmFsdWUgdG8gc3RvcmUgaXMgbm90IHlldCBsb2FkZWQu
IFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFuZAogICAgICAgICAvLyB6ZXJvLWV4dGVuZGVkLiBC
YXNlIGlzIGNlbGwgY2hlY2tlZC4gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuCiAgICAg
ICAgIC8vIHJldHVybnMgdGhlIHNsb3cgY2FzZXMuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIEludDMyU2hhcGUpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbElu
Zm8sIEludDMyU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgRG91YmxlU2hhcGUpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbElu
Zm8sIERvdWJsZVNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7
CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBM
aXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAg
ICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENv
bnRpZ3VvdXNTaGFwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBK
dW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBKdW1wTGlzdCBl
bWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEZs
b2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qLCBUeXBlZEFycmF5VHlwZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAg
ICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKQEAgLTg3MCwxMyArODc1LDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KTsKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3Mp
OwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUo
Y29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAjZW5kaWYKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3Vs
dChjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVz
dWx0KTsKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlc3VsdChBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWV0YWRhdGE+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRh
dGEmLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CisgICAgICAgIHZv
aWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmls
ZShNZXRhZGF0YSYsIEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6aGFzUmVzdWx0LCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbD4KQEAgLTg4Niw2ICs4OTUsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgICAgICB9CiAK
KyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0
LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdl
dCwgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQu
b2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4
Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KICAgICAgICAgc3RydWN0IGlz
NjRCaXRUeXBlIHsKQEAgLTkwNiw2ICs5MjMsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1Bh
dGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lkIGNh
bGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFy
Z2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIC8vIHg2NCBXaW5kb3dzIGNhbm5vdCB1c2Ugc3Rh
bmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhhbiA2NCBiaXRzLgor
ICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0VHlwZTx0eXBlbmFtZSBGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46OnZhbHVlKQorICAgICAgICAgICAgICAg
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2Vsc2UgLy8g
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgQXJncy4uLiBhcmdzKQpA
QCAtOTEzLDYgKzk0MSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
ICAgIHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdzKQorICAg
ICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRp
b25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsK
KyAgICAgICAgfQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CkBAIC05MjMsNiArOTU4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAgfQog
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIE1ldGFk
YXRhLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9u
VHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNhbGxPcGVy
YXRpb25XaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgdGFyZ2V0LCBWaXJ0
dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJn
cy4uLik7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgQWRkcmVzcyhHUFJJbmZvOjpub25B
cmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KE9wZXJhdGlvblR5
cGUgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBBcmdzLi4uIGFyZ3MpCiAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDFiNDlkNDg5ZGFh
MmI3ODZhYjc5MzkyZjlhMzRlYmM2NDRjZGFiMTguLjM3NGJhMzBjN2Y3NjcxMzc5NDcwZTRkZDlk
NGRhODM2NWRhMzYwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAt
Mzk4LDggKzM5OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBA
IC00MzIsOCArNDMyLDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgCiAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0
aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0
dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBuZXh0VlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBp
dGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkp
OwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAg
ICBhdXRvIGRvbmUgPSBqdW1wKCk7CiAKICAgICBub3RPYmplY3QubGluayh0aGlzKTsKQEAgLTQ4
MCw4ICs0ODcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgUmVnaXN0ZXJTZXQgcHJlc2VydmVkUmVncyA9
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKICAgICAgICAgcHJlc2Vy
dmVkUmVncy5hZGQodmFsdWVHUFIpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJl
c2VydmVkUmVncywKLSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFs
dWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgQWNjZXNzVHlwZTo6
R2V0QnlJZCk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnBy
b3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpT
VmFsdWVSZWdzKGRvbmVHUFIpLCByZWdUMywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQ5OSw4
ICs1MDYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgSnVtcExpc3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5j
aElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIs
IGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKIAogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkp
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnBy
b3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1
ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgcmVnVDQsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC01MjgsMTYgKzUz
NSwyMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CiAgICAgICAgIG5vdE9iamVjdC5h
cHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKLSAgICAgICAgbm90T2JqZWN0
LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAKICAgICAgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsK
ICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJ
bmRleCsrXTsKICAgICAgICAgCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIG5vdE9iamVjdC5hcHBl
bmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwogCisgICAgICAgIENhbGwgY2Fs
bDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4u
c3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkb25lVlJlZywgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVz
dWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KGlkZW50KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOworCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZS
ZWcsIHJlZ1QxKTsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Zh
bHVlLCByZWdUMCk7CiAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1w
KCkpOwpAQCAtNTU2LDggKzU3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogCiAgICAg
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayks
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5y
YXdCaXRzKCkpOwotCisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwg
QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0
cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAg
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZWNjNGU1
ZjNmZjZkMDdmOTljMDc4NGRkNGMxMmRlYmEwZTIxMGRjZi4uMTUyNTE0YWZkY2FjNzgyYWM5Yzg3
NGU1NTBhZmZiOWM3MjhiZWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcApAQCAtMzk2LDEyICszOTYsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgIEpJVFR5cGU6OkJh
c2VsaW5lSklULAogICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAg
IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwK
ICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50
LT5pbXBsKCkpLAogICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyYXRvckdQUiwgcGF5bG9hZEl0
ZXJhdG9yR1BSKSwKICAgICAgICAgbmV4dFJlZ3MsCisgICAgICAgIEludmFsaWRHUFJSZWcsCiAg
ICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKQEAgLTUwNSwxMiArNTA3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBwcmVzZXJ2
ZWRSZWdzLmFkZChwYXlsb2FkVmFsdWVHUFIpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAg
ICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksCiAgICAgICAgICAgICBwcmVzZXJ2ZWRSZWdzLAogICAgICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFt
ZXMtPmRvbmUuaW1wbCgpKSwKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRH
UFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAgICAgICAgIGRvbmVSZWdzLAorICAgICAg
ICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC01MzMsMTIgKzUzNywxNCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAg
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLAor
ICAgICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5k
ZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAgICAgICBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFs
dWUuaW1wbCgpKSwKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBh
eWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAgICAgICAgIHJlc3VsdFJlZ3MsCisgICAgICAgICAg
ICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAg
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggNmZh
NzI0NGVmMGEwOGM5ZjA0N2EzMjIwNGY3MzdkMjkyODcxOTA2Zi4uODc3NzBiZjg0OGEzYWZhOWRk
YmYwYjE4MjIzN2YxM2NhMGUyYmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgK
QEAgLTUyLDEzICs1MiwxNSBAQCBjbGFzcyBUcmFja2VkUmVmZXJlbmNlczsKIGNsYXNzIFZNOwog
CiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIEhvc3RDYWxs
VGh1bmssCi0gICAgSW50ZXJwcmV0ZXJUaHVuaywKLSAgICBCYXNlbGluZUpJVCwKLSAgICBERkdK
SVQsCi0gICAgRlRMSklUCisgICAgTm9uZSA9IDBiMDAwLAorICAgIEhvc3RDYWxsVGh1bmsgPSAw
YjAwMSwKKyAgICBJbnRlcnByZXRlclRodW5rID0gMGIwMTAsCisgICAgQmFzZWxpbmVKSVQgPSAw
YjAxMSwKKyAgICBERkdKSVQgPSAwYjEwMCwKKyAgICBGVExKSVQgPSAwYjEwMSwKIH07CitzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHdpZHRoT2ZKSVRUeXBlID0gMzsKK3N0YXRpY19hc3NlcnQo
V1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVf
dDxKSVRUeXBlPj4oSklUVHlwZTo6RlRMSklUKSkgKyAxID09IHdpZHRoT2ZKSVRUeXBlKTsKIAog
Y2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7CiBw
dWJsaWM6CkBAIC0xNTYsNiArMTU4LDE1IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBKSVRU
eXBlOjpJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7
CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgdXNlU2hhcmVkSUMoSklUVHlwZSBqaXRUeXBlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VTaGFyZWRJQygpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlw
ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVz
ZVNoYXJlZElDSW5PcHRpbWl6aW5nSklUKCk7CisgICAgfQorCiAgICAgdmlydHVhbCBjb25zdCBE
T01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIAogICAgIGVudW0gY2xhc3MgU2hhcmVBdHRyaWJ1dGUgOiB1aW50OF90IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
aW5kZXggZjUyYzNjNzYyMTVhYTMyNmRkZTlmODk4NTYyOThjM2RlNjQ2MjJjZS4uMmZlOGI5Yjhl
MzFjOGJkYmEzNzE0MmE2ZjYwODc4NGJkYjQzZmRiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTQzLDkgKzQz
LDEwIEBAIHN0YXRpYyBTdHJ1Y3R1cmVTdHViSW5mbyogZ2FyYmFnZVN0dWJJbmZvKCkKIH0KIAog
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKICAgICBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycykKICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faml0
VHlwZShqaXRUeXBlKQogewogICAgIG1fc3R1YkluZm8gPSBtX2NvZGVCbG9jayA/IG1fY29kZUJs
b2NrLT5hZGRTdHViSW5mbyhhY2Nlc3NUeXBlLCBjb2RlT3JpZ2luKSA6IGdhcmJhZ2VTdHViSW5m
bygpOwogICAgIG1fc3R1YkluZm8tPmNhbGxTaXRlSW5kZXggPSBjYWxsU2l0ZTsKQEAgLTYwLDIw
ICs2MSwyMiBAQCB2b2lkIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKIAogICAg
IG1fc3R1YkluZm8tPmRvbmVMb2NhdGlvbiA9IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5h
bFB0clRhZz4obV9kb25lKTsKIAotICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoQ2FsbExvY2F0aW9u
ID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0
dWJJbmZvLT5tX3Nsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0lu
dGVybmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CiAgICAgbV9zdHViSW5mby0+c2xvd1BhdGhT
dGFydExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4o
bV9zbG93UGF0aEJlZ2luKTsKIH0KIAogSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRv
cigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCi0gICAgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlKQotICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAgICBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdp
c3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCiB7CiAgICAg
bV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8t
PnZhbHVlR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MudGhp
c0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0
dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSB2YWx1
ZS50YWdHUFIoKTsKQEAgLTgzLDEzICs4NiwxNSBAQCBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlk
R2VuZXJhdG9yKAogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXIm
IGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5p
c1NldCgpKTsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAg
IGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdGFydCkpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkK
KyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFy
dExvY2F0aW9uOwogfQogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1v
bihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNTaXplKQogeworICAgIC8vIFdl
IGdlbmVyYXRlIHRoZSBzYW1lIGNvZGUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIFNoYXJlZElDIGlz
IGVuYWJsZWQgYmVjYXVzZSB3ZSBzdGlsbCBuZWVkIHRvIHVzZSBJbmxpbmVBY2Nlc3MKKyAgICAv
LyBmb3IgdGhlIHBlcmZvcm1hbmNlIHJlYXNvbi4KICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7
CiAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6
ZSgpOwogICAgIG1fc2xvd1BhdGhKdW1wID0gaml0Lmp1bXAoKTsKQEAgLTEwMSw5ICsxMDYsOSBA
QCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2VtYmxl
ciYgaml0LCBzaXplX3QgaW5saW5lSUNTaQogfQogCiBKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRH
ZXRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQotICAg
IDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nl
c3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAg
OiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikK
ICAgICAsIG1faXNMZW5ndGhBY2Nlc3MocHJvcGVydHlOYW1lLnVpZCgpID09IGNvZGVCbG9jay0+
dm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2UucGF5bG9hZEdQUigpICE9IHZhbHVlLnRhZ0dQUigpKTsKQEAgLTExNSw5ICsxMjAsOSBA
QCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImIGppdCkKIH0KIAogSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKQotICAgIDogSklUQnlJZEdlbmVy
YXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHRoaXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZv
R1BSKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNSZWdzLnBheWxvYWRHUFIoKSAhPSB0aGlz
UmVncy50YWdHUFIoKSk7CiAKQEAgLTEzMywxMCArMTM4LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9
CiAKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZp
ZXIsCi0gICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3Jh
dGNoLCAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNo
LCAKICAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAgICAgICA6IEpJ
VEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICAg
ICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7
CkBAIC0xNzEsMTQgKzE3NiwxNSBAQCBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1K
SVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCi0g
ICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQogewog
ICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgIEFTU0VS
VChiYXNlLnBheWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJ
bmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5w
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1
ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQ
UiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2Uu
dGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BS
ID0gYmFzZS50YWdHUFIoKTsKQEAgLTE5MSwyNiArMTk3LDMwIEBAIEpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlCiB2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xv
d1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAg
ICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQ
dHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFi
bGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlW
YWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVm
ZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9z
bG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAg
ICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5m
by0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1K
SVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCi0gICAg
OiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6
RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKK0pJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5
SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0
Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0
dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAgIEFTU0VSVChiYXNlLnBh
eWxvYWRHUFIoKSAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNl
R1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQ
UiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5
bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigpICE9IHJlc3Vs
dC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7
CkBAIC0yMjMsMjIgKzIzMywyNSBAQCBKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcgogdm9pZCBKSVRE
ZWxCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7
CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBh
dGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkg
eworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5m
byksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxz
ZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9k
b25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxp
emUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9p
ZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlu
a0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5p
c1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cisg
ICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9m
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1
YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAogSklUSW5CeUlkR2VuZXJhdG9yOjpK
SVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwgdXNlZFJlZ2lz
dGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0
VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
dHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2Us
IHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAgICAvLyBGSVhNRTogV2UgYXJlIG5vdCBzdXBwb3J0
aW5nIGZhc3QgcGF0aCBmb3IgImxlbmd0aCIgcHJvcGVydHkuCiAgICAgVU5VU0VEX1BBUkFNKHBy
b3BlcnR5TmFtZSk7CkBAIC0yNTEsMTUgKzI2NCwxNSBAQCB2b2lkIEpJVEluQnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5m
b0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwgYm9vbCBwcm90b3R5
cGVJc0tub3duT2JqZWN0KQotICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgICAg
IGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5zdGFu
Y2VPZiwgdXNlZFJlZ2lzdGVycykKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5z
dGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gdmFs
dWU7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CiAgICAgbV9zdHViSW5mby0+
cmVncy5wcm90b3R5cGVHUFIgPSBwcm90b3R5cGU7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdH
UFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjc5LDIxICsyOTIsMjQgQEAgSklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKIAogdm9pZCBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7Ci0gICAgbV9q
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQ
dHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93
UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgp
OwogfQogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXIm
IGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwKLSAgICAgICAg
ZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9qdW1wKSk7Ci0gICAg
Ci0gICAgZmFzdFBhdGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5v
UHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAg
bV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9u
OwogfQogCi1KSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0KQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlw
ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQs
IEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiB7CkBAIC0zMDIsNiArMzE4LDcg
QEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3Bl
cnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXls
b2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7
CkBAIC0zMTIsMjAgKzMyOSwyMyBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxH
ZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogdm9pZCBKSVRH
ZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQog
ewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5w
YXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkp
IHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1Yklu
Zm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1f
ZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5h
bGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2
b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0g
ICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZp
bmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2pp
dFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93
UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKK0pJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGpp
dFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3Rl
cnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRl
QnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQpOwogICAg
IG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwpAQCAtMzMzLDYgKzM1
Myw3IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9
IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFu
ZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigp
OwogICAgIG1fc3R1YkluZm8tPnYuYnJhbmRUYWdHUFIgPSBicmFuZC50YWdHUFIoKTsKQEAgLTM0
MywxNiArMzY0LDE5IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsCiB2b2lkIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1
YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAg
IG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXIm
IHNsb3dQYXRoKQordm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXpl
KExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NF
UlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0
aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29k
ZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmgKaW5kZXggZDZjYTZlMTZhM2YzMmM2NDBmOTZjYjI1NTE5NTU0OGIwZjJl
YjY1MS4uYjY5MDg3ODU3NjQzOGQ5N2Q5OTQzMGFjNjNkOTE3YmMyZWM5M2Y0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApA
QCAtNDEsMTIgKzQxLDEyIEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJ
bmZvOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CitlbnVtIGNsYXNzIEpJVFR5
cGUgOiB1aW50OF90OwogCiBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiBwcm90ZWN0
ZWQ6CiAgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoKSB7IH0KLSAgICBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOworICAgIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yKENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
KTsKICAgICAKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8oKSBjb25z
dCB7IHJldHVybiBtX3N0dWJJbmZvOyB9CkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKICAgICAKIHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOworICAgIEpJVFR5cGUgbV9qaXRUeXBlOwogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBt
X3N0dWJJbmZvOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZG9uZTsKQEAgLTc3LDgg
Kzc4LDggQEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CiAgICAgSklUQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUQnlJZEdlbmVy
YXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklU
VHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiBwdWJsaWM6CiAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKQEAgLTEwMSwxMyArMTAyLDEzIEBAIGNs
YXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igewog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklU
R2V0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
cigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsKKyAgICAg
ICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIs
IEFjY2Vzc1R5cGUpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYpOwogCkBAIC0xMTUsMjYgKzExNiwyNiBAQCBjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9y
IDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIGJvb2wgbV9pc0xlbmd0aEFjY2VzczsK
IH07CiAKLWNsYXNzIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKK2NsYXNzIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVS
ZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncyk7CisgICAg
ICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1Jl
Z3MsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImKTsKIH07CiAKLWNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMg
SklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Io
KQogICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQogICAgIHsgfQogCiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBDb2RlQmxvY2sq
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0
Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0NSwxNCArMTQ2LDE0IEBAIGNsYXNzIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgUHV0S2luZCBt
X3B1dEtpbmQ7CiB9OwogCi1jbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkg
eyB9CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlw
ZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBK
U1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpOwog
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBA
IC0xNzAsMTQgKzE3MSwxNCBAQCBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1
bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9yIDogcHVi
bGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2Ug
PSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVREZWxCeUlkR2VuZXJh
dG9yKCkgeyB9CiAKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sq
LCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayosIEpJ
VFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gp
OwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7
CkBAIC0xOTUsNDIgKzE5Niw1MCBAQCBjbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxl
SnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEluQnlJZEdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0
b3IoKSB7IH0KIAogICAgIEpJVEluQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJs
ZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKICAgICBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yKCkgeyB9CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsCi0gICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BS
UmVnIHByb3RvdHlwZSwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCisgICAgICAg
IENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAorICAgICAgICBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0
Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCiAgICAgICAgIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVj
dCA9IGZhbHNlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImKTsKIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAg
ICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKwogICAgIHZvaWQgZmlu
YWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0
aExpbmtCdWZmZXIpOwogCiBwcml2YXRlOgotICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIG1fanVtcDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2Ns
YXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yIHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJs
aWM6CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7
CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1Bh
dGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yNTEsMTQgKzI2MCwxNCBAQCBjbGFzcyBKSVRHZXRC
eVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IgeworY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yKCkgeyB9CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoCi0gICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyBicmFuZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BS
UmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVt
cCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRl
eCBlNzljZDM2ZWY1N2Q3YmRjZWNlMTc2OGQwNTg4YWZlZWQ4ODg1MDE1Li4yOGE2NDMzN2UyZjA4
ZjVmMjBhZGE3MzdiYjc2YmNiNDczNjIyOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaApAQCAtMzMsMTcgKzMzLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlN
b2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBh
cnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIHN3aXRjaCAoYXJy
YXlNb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxv
YWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRJbnQz
MkxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2Ug
SklURG91YmxlOgotICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0
aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0g
ICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRU
eXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAg
ICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5
cGUpOworICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0
aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEyOCw2ICsxMjgsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3QKICAgICBy
ZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFt
ZSgpOworICAgIGFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIGV4Y2VwdGlvbkNoZWNrKCk7Cit9
CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0
aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikK
IHsKQEAgLTE1Nyw2ICsxNjQsMTYgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1
cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lz
dGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1
cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwg
cmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRh
PgogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFk
YXRhLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBWaXJ0dWFs
UmVnaXN0ZXIgZHN0KQogewpAQCAtMTcxLDYgKzE4OCwxOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFs
dWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4K
K0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIGZ1bmN0
aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEsIEpTVmFsdWVSZWdzKHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVH
UFIpKTsKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BS
KTsKKyNlbmRpZgorfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5v
dEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVn
aXN0ZXIgcmVnKQogewogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBiZDU1YTNkMDUxNmQ0
NmI2N2FlNTk3YjZjM2E0ZjU4N2I1ZmRkNzMwLi40NWEwNzUxYzk2YzZhMmFjZThiNjRmZjA0ZjM0
OTAzY2RkMWY3NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
QEAgLTE2NCwxMyArMTY0LDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8g
dmFsdWUKICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIHJlZ1Q1LAogICAgICAgICBy
ZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2luc3RhbmNlT2ZzLmFwcGVuZChnZW4pOwogICAgIAog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKQEAgLTE4Niw3ICsxOTEsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yJiBnZW4gPSBt
X2luc3RhbmNlT2ZzW21faW5zdGFuY2VPZkluZGV4KytdOwogICAgIAogICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVnVDEpOworCisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdl
bi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRp
b248ZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKT4oQWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyLCByZWdUMSk7CisgICAgfSBlbHNlCisgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOwogfQogCkBAIC0xNzE5LDcgKzE3MzEsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdAogICAgIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlw
ZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9
IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRU
eXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgbW92ZShU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAg
ICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xNzM0LDggKzE3NDYsMTMgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHVi
Um91dGluZVB0clRhZywKICAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0
dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRh
KCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2Fs
bDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVz
c1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9i
YWRUeXBlSnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJ
bmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmlj
OworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZh
bEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQ
dHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5B
ZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5R2VuZXJpYykpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2Vu
dW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtMTc2OSwxMSArMTc4NiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAog
CiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJy
YXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJh
eU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBz
bG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShi
YWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xv
d0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTE3OTksNyArMTgx
NywxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9w
ZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudAogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFsSW5mbyk7CisKKyAgICBDYWxsIGNhbGw7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewor
ICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eURlZmF1bHQ7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdH
UFIwLCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZHN0LCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFsSW5mbyk7CiAKICAg
ICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0
aFRhcmdldCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbElu
c3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDhkYjM1OWViZDhjZDA1NjY5NzNi
ODYzYzQ4Njc0MWE3ZmFlMjI0NWUuLjRkNzQxMjZiZTFlM2RlNDMwZDNhNmQ5Y2I3ZmRkYjZkYzg2
ZjdlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTE2MiwxMyArMTYyLDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocHJvdG8pOwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8g
dmFsdWUKICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIEludmFsaWRHUFJSZWcsCiAg
ICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2lu
c3RhbmNlT2ZzLmFwcGVuZChnZW4pOwogICAgIAogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdU
MCk7CkBAIC0xMTgzLDcgKzExODUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRl
eGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgIAog
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5
cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlN
b2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlz
dCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFy
cmF5TW9kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJl
Z1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTExOTgsNyArMTIwMCw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwg
SklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9w
ZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9j
aykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0gICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5j
b2RlKCkuY29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+bV9iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykp
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMpKTsKIH0KIApAQCAtMTIzNCw3ICsxMjM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBU
eXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2Fk
Rm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7CisgICAgSnVt
cExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9u
LCBtb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBy
ZWdUMCk7CiAKICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDIxYWYzNjUzMDlkMjc5MzM3MWRlNmViNDAw
YjQ0NjhhYTgzNzBiMjUuLjAyOTJiOWI4YzRlY2UyN2E4MTY3NTAwYTM1ZDQxMjU2NTQ5ZDYzMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTAw
Miw3ICsxMDAyLDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZh
bE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKHJlc3VsdCA9
PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRy
eSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwot
ICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJf
UkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOworICAgICAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUs
IHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KQEAgLTEwOTQsNyAr
MTA5NywxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlmIChyZXN1bHQgPT0gT3B0
aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8g
b3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVS
Tl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKKyAgICAgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0
cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOwog
ICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xv
YmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUp
KTsKQEAgLTEyNzgsNyArMTI4NCwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlm
IChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAg
ICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNz
KFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRp
b25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOwogICAgIH0KIAogICAgIHNjb3BlLnJlbGVhc2UoKTsK
QEAgLTI1NjcsNyArMjU3NiwxMSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgRW5jb2RlZEpTVmFsdWUsIChKUwogICAgICAgICBp
ZiAoKytieVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTAKICAgICAgICAgICAgIHx8IG9iamVj
dC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAgIC8vIERvbid0
IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgotICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFz
SW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVz
c1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5l
cmljKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA2NDQ2N2U5YTI1ZTE0NzdlMWVjMDYzNWQ0MDk3
NTRkOGU3NTM5MmVmLi5kMTcyZWRmMTE3ZjdhODMxYWVjNzNlOWU0ZGQwZjRhNjMzNDVmZTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtNjksMTIgKzY5LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFs
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVncyk7CisgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3VsdFJl
Z3MsIHJlZ1QyKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkK
ICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAg
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICAg
ICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtOTMs
OCArOTYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogCiAgICAgICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgICAgICsrbV9nZXRCeVZhbEluZGV4OworICAg
ICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4KytdOworCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTE4LDcgKzEyMSwxMSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvZmlsZSksIHByb2Zp
bGVHUFIpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpOworICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZSk7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTM4LDcgKzE0
NSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKQEAgLTE1Nyw5ICsxNjUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BS
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENv
bnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3Bl
cmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxs
IGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BS
MSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGwiKTsK
QEAgLTE4MiwxMCArMTkxLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAotICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3Mp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlH
UFIpLCByZXN1bHRSZWdzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwog
ICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMjAxLDgg
KzIxMyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAKICAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21f
Z2V0QnlWYWxJbmRleF07Ci0gICAgKyttX2dldEJ5VmFsSW5kZXg7CisgICAgSklUR2V0QnlWYWxH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKQEAgLTIyNiw3ICsyMzcsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNh
bGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOworICAgIENh
bGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1
cm5WYWx1ZUdQUik7CkBAIC0yNDUsNyArMjYwLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcK
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAog
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMjYzLDkgKzI3OSwxMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0
bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0
byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1w
KEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtMjg1LDEwICszMDIsMTMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUdQUiwgYmFzZSk7
CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
SlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAo
IUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dD
YXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIAogICAgIC8v
IFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5j
ZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KQEAgLTMwMiw4ICszMjIsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0g
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQpAQCAtMzI4LDkgKzM0NywxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJh
dGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJh
aXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRU
eXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJp
dmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAg
ZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZgorCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMzQ2
LDEwICszNzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJp
dmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2
YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNl
CisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBl
bmQoZ2VuKTsKIH0KIApAQCAtMzU3LDggKzM4NCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4XTsKLSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
W21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zODMsNyArNDA5
LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRP
cHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUp
OworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNh
bGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKQEAgLTQxNSw4ICs0NDUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRl
eDsKICAgICBpZiAoIXByb3BlcnR5TmFtZUlzSW50ZWdlckNvbnN0YW50KSB7Ci0gICAgICAgIG5v
dEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7Ci0gICAgICAgIGFkZFNs
b3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgYXV0byBpc0ludDMyID0gYnJhbmNoSWZJ
bnQzMihyZWdUMSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJ
bmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAg
ICAgICAgIGlzSW50MzIubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG5vdEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7CisgICAgICAgICAg
ICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIH0KICAgICAgICAgLy8gU2VlIGNvbW1l
bnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICAgICAgemVyb0V4dGVuZDMyVG9Xb3JkKHJlZ1QxLCBy
ZWdUMSk7CiAgICAgfQpAQCAtNDMyLDIzICs0NjgsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFy
cmF5TW9kZSBtb2RlID0gY2hvb3NlQXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9k
ZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMy
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5m
byk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
YWRkU2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAK
ICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTQ1Nyw3ICs0OTQsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2Vu
ZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAg
IFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC00NjUsNyArNTAy
LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwg
VHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAg
ICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1
c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVB
ZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMy
KGluZGV4aW5nU2hhcGUpKTsKKwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgb3V0T2ZCb3VuZHMg
PSBicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKQEAgLTUxNSw3ICs1NjEsNyBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNo
YWJsZUp1bXAmIGJhZAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykK
IHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTIzLDcg
KzU2OSwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZh
bEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFs
LCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgICAgICAgICBm
YXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwg
SklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRo
aXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwor
ICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhy
ZWdUMiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtNTY4LDgg
KzYyMyw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVycyhiYXNlLCByZWdUMCwgdmFsdWUsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2lu
ZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAg
ICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBl
Y21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJh
cnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFs
V3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUu
CkBAIC01ODAsNyArNjM1LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlW
YWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlz
KTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBDYWxsIGNh
bGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkg
eworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2Vu
LnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMSwgcmVn
VDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0g
Y2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHBy
b3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC02Mzgs
OCArNjk5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIGF1dG8qIG9wZXJhdGlvbiA9IGlzRGly
ZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemU7Ci0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIENh
bGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7
CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCkBAIC02NTcsNyArNzIxLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAg
ICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtNjc1LDkgKzc0MCwxMCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Q
dXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVQUiwgYnlWYWxJbmZvR1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRh
aWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8g
b2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
cHV0X3h4eF9wcmVwYXJlQ2FsbCIpOwpAQCAtNjk2LDggKzc2MiwxMyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCi0g
ICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKLSAgICBhZGRT
bG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcDsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdl
dCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZmFzdFBhdGhK
bXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAgICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsK
KyAgICB9CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CiAgICAgCkBAIC03NDMsNyAr
ODE0LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
cHV0S2luZC52YWx1ZSgpKSwgcHV0S2luZEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBi
eVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1p
emU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC03NjEsNyArODM2LDggQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJ
VCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtNzc5LDkg
Kzg1NSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BSLCBwdXRLaW5k
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6
IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQg
b3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBj
YWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2Fs
bCIpOwpAQCAtODQ2LDExICs5MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJl
Z1QxLCBiYXNlKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIp
OworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDMs
IHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeUlkcy5h
cHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7
CkBAIC04OTgsMTUgKzk3OCwxOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgIENh
bGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzKHJlZ1QwKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKIH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtOTE4LDcgKzEwMDEsOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBA
IC05MzUsOSArMTAxOSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIp
OwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29u
c2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVy
YXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwg
aXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7CkBA
IC05NTYsMTAgKzEwNDEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDAsIHByb3BlcnR5KTsKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCByZWdUMik7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVnVDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0g
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAg
bV9kZWxCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVl
UmVncyhyZWdUMCkpOwpAQCAtMTAwOCwxNSArMTA5NiwxOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSks
IGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BS
ID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29s
ZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
QEAgLTEwMjgsNyArMTExOSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEwNDUsOSArMTEzNywxMCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxs
R2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVj
dGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcg
dG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVt
cChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQo
KTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9i
eV92YWxfcHJlcGFyZUNhbGwiKTsKQEAgLTEwNjgsOCArMTE2MSw4IEBAIHZvaWQgSklUOjplbWl0
X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5
R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBB
Y2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtMTExMCw3ICsxMjAzLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0
QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVl
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lk
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAg
Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOworICAg
IENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0
aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5W
YWx1ZUdQUik7CkBAIC0xMTMzLDggKzEyMzAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJl
Y3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNz
VHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBl
bmQoZ2VuKTsKQEAgLTExNzYsNyArMTI3MywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRE
aXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1
ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAg
IENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEs
IHJldHVyblZhbHVlR1BSKTsKQEAgLTEyMDcsOCArMTMwOCw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
KyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBA
IC0xMjMzLDggKzEzMzQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChnZW4p
OwpAQCAtMTI3NSw3ICsxMzc2LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0
eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BS
KTsKQEAgLTEyOTQsNyArMTM5OSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEzMTEsOSArMTQxNywxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFy
Z2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQg
dG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1
bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9w
ZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGwiKTsKQEAgLTEzNTQsNyArMTQ2MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZTsKKyAgICBl
bHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09w
dGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTM3Myw3ICsxNDg0
LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwpAQCAtMTM5Miw5ICsxNTA0LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
KT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVy
dHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhN
RTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdl
dCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRv
IGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19w
cmVwYXJlQ2FsbCIpOwpAQCAtMTQxOCwxMSArMTUzMSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAorICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1Qy
LCBlY21hTW9kZShieXRlY29kZSksCiAgICAgICAgIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6
IFB1dEtpbmQ6Ok5vdERpcmVjdCk7Ci0gICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wdXRCeUlk
cy5hcHBlbmQoZ2VuKTsKQEAgLTE0NjUsNyArMTU3NywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTE0ODEs
NyArMTU5Nyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKQEAgLTE1MDAsOSArMTYxNywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwog
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwg
cHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAv
LyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhl
IHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xp
ZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsIik7CkBAIC0xNTIxLDggKzE2MzksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAgICAgSklUSW5CeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2lu
QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNTY0LDcgKzE2ODIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRp
b25JbkJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2
YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAg
IENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIp
OwpAQCAtMjc1NCw4ICsyODc2LDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRC
eVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIGVtaXRM
b2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5
TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2Rl
KSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVD
YXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjc2NSw3ICsyODg3LDEzIEBAIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtp
bmQgcHV0S2luZCwKICAgICAvLyBKSVRQdXRCeUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUgdGhl
IHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0YWcu
CiAgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewor
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNs
b3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1l
LnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI4MTcsMjkgKzI5NDUs
MjkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8KIAogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7
CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSklURG91YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJ
VENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgbmVlZHNMaW5rRm9y
V3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0
b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlua0Zvcldy
aXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IFR5cGVkQXJyYXlUeXBlIHR5cGUgPSB0eXBlZEFycmF5VHlwZUZvckpJVEFycmF5TW9kZShhcnJh
eU1vZGUpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCi0gICAgICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAg
ICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIG51bGxwdHIsIHR5cGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBPcHRpbWl6ZSBCaWdJbnQ2NEFycmF5IC8gQmlnVWludDY0QXJyYXkgaW4gSUMKICAg
ICAgICAgICAgIC8vIEN1cnJlbnRseSwgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5IG5l
dmVyIGNvbWVzIGhlcmUuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMTgzCiAgICAgICAgICAgICBBU1NFUlQoaXNGbG9hdCh0eXBlKSk7
Ci0gICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODY2LDggKzI5OTQsMTQgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
QnlWYWxJbmZvKiBieVZhbEluZm8KICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZl
ciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3Zh
bF9kaXJlY3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIH0KLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29k
ZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVt
cFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Ns
b3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxv
Y2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0
dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0
aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5
IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNw
cCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBp
biBhZHZhbmNlLgpAQCAtMjkwNiw4ICszMDQwLDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5B
CiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGggY2FjaGVkIHByb3BlcnR5
IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgcHJvcGVydHlOYW1lLnVp
ZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVy
bkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2Vu
LnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZv
LT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVy
aWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0
aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxv
Y2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0
dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAgIH0KIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0yOTQ0LDE1ICszMDgzLDIwIEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1
cm5BZGRyZXNzCiAgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJv
cGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9
PSBQdXRLaW5kOjpEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFtZS51aWQoKS0+
dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRy
ZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9IGdlbi5zdHVi
SW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90
SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Cisg
ICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gcHV0S2luZCA9PSBQ
dXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRp
b25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29k
ZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
cHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVy
aWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBUaGlzIGZ1bmN0
aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVuaXQgKEpJVE9w
ZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0ZWQgc3BlY2lh
bGl6YXRpb25zIGluIGFkdmFuY2UuCiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsPihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNz
UHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWxEaXJlY3Q+KEJ5VmFs
SW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwog
Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2Fk
KGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSBy
ZWdUMDsKQEAgLTI5NjgsNyArMzExMiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJs
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAo
YnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihF
cXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgICAgICAgICAg
ZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0
aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBp
bmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJl
c3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNj
cmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkRG91
YmxlKEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIGZwUmVnVDApOwpA
QCAtMjk3Nyw3ICszMTMwLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICByZXR1cm4gc2xv
d0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVj
dGVkU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8s
IEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
UmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTk1LDcgKzMxNDgsMTYgQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUg
PSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBl
Y3RlZFNoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlz
Q29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBl
Y3RlZFNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAg
ICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0
ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3Rl
ZFNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQ
dWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkVmFsdWUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3Bl
cnR5LCBUaW1lc0VpZ2h0KSwgcmVzdWx0KTsKQEAgLTMwMDQsNyArMzE2Niw3IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVn
VDA7CkBAIC0zMDIzLDcgKzMxODUsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0
b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoLUFycmF5U3RvcmFn
ZVNoYXBlKSwgaW5kZXhpbmcsIHNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAg
ICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEJlbG93T3JFcXVhbCwgc2NyYXRj
aCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNo
YXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5t
X2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAg
aXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNs
b3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1
c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7
CiAKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgp
KSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWws
IHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zm
c2V0KCkpKSk7CkBAIC0zMDM1LDcgKzMyMDYsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFy
cmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlw
ZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBl
ZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9
ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMwNjAsNyArMzIzMSwxNyBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKICAgICBsb2Fk
OChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0
Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3Jh
dGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5j
aDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5
cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAg
ICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRy
dXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gs
IFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwogICAgIGxvYWQz
MihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0
ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5
LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxD
YXNlKHByb2ZpbGUpOwpAQCAtMzExMSw3ICszMjkyLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZs
b2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBUeXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxlKiBw
cm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzEzNiw3ICszMzE3LDE3IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAog
ICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVh
cmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBl
YXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsK
KworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBl
ID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBl
ZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mo
JmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2Ny
YXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0g
ZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAg
ICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywg
cHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRz
U3BlY2lhbENhc2UocHJvZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBjMjJjNzcwNDI4OWFiYjA4MmY5ZGRm
MjBkOGMyZmY2NjVkZmQ1NmUyLi4wZTNiZTZhZjg0MmNlOWQwMjYyMTM1ZGVkNTZjOWIwYWViZGUw
YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9h
ZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogICAg
IEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIGJhc2VS
ZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAgIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnLCByZWdUNCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9kZWxCeUlkcy5hcHBl
bmQoZ2VuKTsKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHByb3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCkpOwogCiAgICAg
SklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIHBy
b3BlcnR5UmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFs
aWRHUFJSZWcsIHJlZ1Q0KTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMjU3LDggKzI1Nyw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVzdWx0UmVncyk7
CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGlm
IChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwpAQCAtMzA1LDggKzMwNSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncyk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKQEAgLTM5Myw4ICszOTMs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZh
dGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBiYXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3Ms
IEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CkBAIC00MzMsOCArNDMzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7
CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3Mp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAt
NDg2LDE2ICs0ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFycmF5TW9kZSBtb2RlID0gY2hv
b3NlQXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSklU
SW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91Ymxl
OgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91
czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklU
QXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9y
YWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CkBAIC01MTEsNyArNTExLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hh
cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC01MjAs
NiArNTIwLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIAogICAgIEp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICAKKyAgICBVTlVTRURfUEFSQU0oYnlWYWxJbmZvKTsKICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoQ29udGlndW91
c1NoYXBlKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0
dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CkBAIC01NzIsNyArNTczLDcgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQog
ewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtNTgxLDYgKzU4
Miw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7
CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5mbyk7CiAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNo
YXBlKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpLCByZWdUMyk7CkBAIC02NjAsOCArNjYyLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6VHJ5R2V0
QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTcw
MSw4ICs3MDMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERp
cmVjdCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdz
LCBJbnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzQ4LDggKzc1MCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJl
c3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0
QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc5
MSw4ICs3OTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUNCwgcmVnVDMpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMyksIEludmFsaWRHUFJSZWcpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTgz
NSw5ICs4MzcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
YmFzZSwgcmVnVDEpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVn
VDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0
IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CkBAIC04ODIsOCArODg0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKaW5kZXggODgxNDY0
MGU2YWNjZWFjMWI5YjA2OGE0MGM4OTQyODM0ODZjZGZhYi4uMmJmODhiMjllZWFhMWZlZjQzM2Q3
OTY4MWY2NGRiMzhjMmZkYjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YlJvdXRpbmUuaApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpJVFN0
dWJSb3V0aW5lU2V0OwogY2xhc3MgVk07CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CisKIC8vIFRoaXMg
aXMgYSBiYXNlLWNsYXNzIGZvciBKSVQgc3R1YiByb3V0aW5lcywgYW5kIGFsc28gdGhlIGNsYXNz
IHlvdSB3YW50CiAvLyB0byBpbnN0YW50aWF0ZSBkaXJlY3RseSBpZiB5b3UgaGF2ZSBhIHJvdXRp
bmUgdGhhdCBkb2VzIG5vdCBuZWVkIGFueQogLy8gaGVscCBmcm9tIHRoZSBHQy4gSWYgaW4gZG91
YnQsIHVzZSBvbmUgb2YgdGhlIG90aGVyIHN0dWIgcm91dGluZXMuIEJ1dApAQCAtOTgsNiArMTAw
LDggQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogICAgIC8vIGRlc3Ryb3llZC4KICAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRXZWFrKFZNJik7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEZpeGVkVmVjdG9y
PFJlZlB0cjxBY2Nlc3NDYXNlPj4qIGtleXMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYwNjg2MjczZGRhODFjYmI2ZDAxY2QyMWRkMDk4OWNjNmUy
YjguLjQ0NzA1NWJmZThhYmVmYWE1NmZlNzhlODA2OGQyY2M2Njg5MzIzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAi
QWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bGxDb2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2OCw3IEBAIFBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAg
ICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2Rl
UmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUs
CiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2Fz
ZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCi0gICAg
OiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCisgICAgOiBHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoY29kZVJlZiwgdm0sIHsgfSkKICAgICAsIG1fdmFyaWFudHMoY2FzZXMuc2l6ZSgp
KQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAzNTkzY2NlODg2MDg4MDE4MzQ2YTgwOGU1Zjg2
NDc4NzFhNDQxYjI5Li4yZTM1NTJhNmQ0MDQ1NGU2MGUwOWQxNzNlODAxZDE2MWNkNWMxMzY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTcxLDggKzcxLDExIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBy
ZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxs
PEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgcmV0dXJuIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlvbi5yZXRhZ2dlZDxDRnVuY3Rp
b25QdHJUYWc+KCk7CisgICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxs
ID0gc3R1YkluZm8ubV9zbG93UGF0aENhbGxMb2NhdGlvbjsKICNpZiBFTkFCTEUoRlRMX0pJVCkK
ICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6RlRMSklUKSB7CiAgICAg
ICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPiB0YXJnZXQgPSBNYWNyb0Fzc2VtYmxlcjo6
cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+KGNhbGwpOwpAQCAtMTA1LDYgKzEwOCwxNSBA
QCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2Fs
bChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpOwog
fQogCitzdGF0aWMgdm9pZCByZXBhdGNoU2xvd1BhdGhDYWxsKENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gbmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMo
KSkgeworICAgICAgICBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24gPSBuZXdDYWxsZWVGdW5jdGlv
bi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8ubV9zbG93UGF0
aENhbGxMb2NhdGlvbiwgbmV3Q2FsbGVlRnVuY3Rpb24pOworfQorCiBlbnVtIElubGluZUNhY2hl
QWN0aW9uIHsKICAgICBHaXZlVXBPbkNhY2hlLAogICAgIFJldHJ5Q2FjaGVMYXRlciwKQEAgLTIw
OSw3ICsyMjEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgIEpTQ2VsbCogYmFz
ZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIGNvbnN0IGJvb2wgaXNQcml2YXRl
ID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lIHx8IGtpbmQgPT0gR2V0QnlLaW5kOjpQ
cml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5l
d0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgICAg
ICBpZiAoaXNKU0FycmF5KGJhc2VDZWxsKSkgewpAQCAtMjE5LDcgKzIzMSw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJ
bmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgoc3R1YkluZm8sIGpzQ2Fz
dDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRl
ZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVP
cHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
dHViSW5mby5pbml0QXJyYXlMZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIyNywx
MCArMjM5LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgIG5l
d0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6QXJy
YXlMZW5ndGgsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNTdHJp
bmcoYmFzZUNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgp
ID09IENhY2hlVHlwZTo6VW5zZXQgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmluZ0xl
bmd0aChzdHViSW5mbykpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBl
KCkgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICAgICAmJiBJbmxpbmVBY2Nl
c3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKSkgewogICAgICAgICAgICAgICAg
ICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU3Ry
aW5nTGVuZ3RoKHN0dWJJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENv
ZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0
ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5pbml0U3RyaW5nTGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yODIsMTIg
KzI5NSwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgJiYgIXNs
b3Qud2F0Y2hwb2ludFNldCgpCiAgICAgICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+bmVlZElt
cHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAgICAgICAgICAgICAgJiYgIWxvYWRUYXJnZXRG
cm9tUHJveHkpIHsKLQogICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9
IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlBY2Nlc3Moc3R1YkluZm8sIHN0cnVj
dHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRl
ZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRC
eVNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkpOwog
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJl
cGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1
Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDI1
LDcgKzQzNyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIExPR19JQygo
SUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwo
dm0pLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNs
b3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNDM5LDcgKzQ1MSw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhCiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlD
YWNoZUdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHByb3BlcnR5TmFt
ZSwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihr
aW5kKSk7CiB9CiAKIApAQCAtNTI5LDcgKzU0MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
CiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNl
VmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29k
ZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTQwLDcgKzU1Miw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiB2b2lkIHJlcGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJh
c2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBp
ZiAodHJ5Q2FjaGVBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlLCBp
bmRleCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25HZXRCeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3QpCkBAIC02MzYsNyArNjQ4LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sK
ICAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0UHJpdmF0
ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5l
KSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4g
bmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlICYmIHNsb3Qu
aXNDYWNoZWFibGVQdXQoKSkgewogICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFBy
b3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkgewpAQCAtNjU4LDcgKzY3MCw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29k
ZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNlKHN0dWJJ
bmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
TE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2VsZlBhdGNoLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNs
b3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmlu
aXRQdXRCeUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNh
Y2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtODAxLDcgKzgx
Myw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC04MTUsNyArODI3LDcgQEAgdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZQogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBp
ZiAodHJ5Q2FjaGVQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2
ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRG
dW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3Qs
IHB1dEtpbmQpKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRl
QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERl
bGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQpAQCAtODQ2LDcg
Kzg1OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChvbGRTdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsK
IAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3QuaXNEZWxldGVI
aXQoKSkgewogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gaW52YWxpZE9m
ZnNldDsKQEAgLTg3NCw3ICs4ODYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAg
ICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxC
eVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmllcjo6
ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgICAgICAgICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBz
dHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5j
b2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODkxLDkgKzkwMyw5IEBAIHZvaWQgcmVw
YXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0
dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZv
T3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3Bl
cnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwp
Ci0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAg
ICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMp
OwogICAgIH0KIH0KIApAQCAtOTM3LDcgKzk0OSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGlu
ZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQnlJZFNlbGZQYXRj
aCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNl
KSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5
Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRJbkJ5SWRT
ZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7
CiAgICAgICAgICAgICAgICAgfQpAQCAtOTg0LDcgKzk5Niw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKIAogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQWRk
QWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlKSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAgICAgdm0sIGNvZGVCbG9jaywgd2FzRm91
bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6OkluTWlzcywgcHJvcGVydHlOYW1l
LCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBpbnZhbGlkT2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogCiAgICAg
ICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBwcm9wZXJ0eU5hbWUsIFdURk1vdmUobmV3
Q2FzZSkpOwpAQCAtOTkzLDcgKzEwMDUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhK
dW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJh
c2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhj
b2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDA3LDcgKzEwMTks
NyBAQCB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KgogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNoZUluQnlJRChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwg
c3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25J
bkJ5SWQpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IG9wZXJhdGlvbkluQnlJZCk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUNoZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTAzMiw3ICsxMDQ0LDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNl
UHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJy
YW5kQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVBy
b3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2Ug
PSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFu
ZElELCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0
cnVjdHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2Nr
ZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQs
IFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMDQwLDcgKzEwNTIsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExPR19J
QygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8s
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwNTQsNyArMTA2Niw3IEBAIHZvaWQgcmVwYXRjaENo
ZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwogCiAgICAgaWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKKyAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25D
aGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCkBAIC0xMDkxLDcgKzExMDMsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAgICAgICAgIGJvb2wgaXNC
YXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlNldFByaXZhdGVC
cmFuZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jh
c2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdD
YXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJy
YW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVC
bG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgIHJl
c3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApA
QCAtMTA5OSw3ICsxMTExLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0
UHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJh
bmRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jh
c2VQcm9wZXJ0eSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTExMTMsNyArMTEyNSw3IEBAIHZvaWQgcmVwYXRjaFNldFByaXZhdGVCcmFu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywKICAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAo
dHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmpl
Y3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAg
ICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUluc3RhbmNlT2YoCkBAIC0xMTMzLDcgKzExNDUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAKICAgICAgICAgSlNDZWxsKiB2YWx1
ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dmFsdWUtPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKICAgICAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgcHJvdG90
eXBlVmFsdWUpOwogICAgICAgICBpZiAocHJvdG90eXBlKSB7CiAgICAgICAgICAgICBpZiAoIWpz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdmFsdWUpKSB7CkBAIC0xMTY4LDkgKzExODAsMTMg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcCgKLSAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaGFibGVKdW1wKCksCi0gICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgc3R1YkluZm8ubV9jb2Rl
UHRyID0gcmVzdWx0LmNvZGUoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcCgKKyAgICAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8ucGF0Y2hhYmxlSnVtcCgpLAorICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTE4NSw3ICsxMjAxLDcgQEAgdm9pZCByZXBhdGNo
SW5zdGFuY2VPZigKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CiAgICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2
ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmlj
KTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVy
YXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpbmtTbG93UGF0aFRv
KFZNJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4gY29kZVJlZikKQEAgLTEyMDIsNyArMTIxOCw3IEBAIHN0YXRp
YyB2b2lkIGxpbmtTbG93Rm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFs
VGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlua1Nsb3dQ
YXRoVG8odm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8u
c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2
bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsKIH0KIAogc3RhdGljIEpTQ2VsbCogd2Vi
QXNzZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKQEAgLTEzMjAsNyArMTMzNiw3IEBAIHN0YXRp
YyB2b2lkIGxpbmtWaXJ0dWFsRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJ
bmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0g
ICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRl
KHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9KSk7CiAgICAgY2Fs
bExpbmtJbmZvLnNldENsZWFyZWRCeVZpcnR1YWwoKTsKIH0KIApAQCAtMTY0MSwxNCArMTY1Nywy
NiBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbAogCiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0QnlLaW5kIGtpbmQp
CiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2lu
ZCkpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkp
OworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAg
Y2FzZSBHZXRCeUtpbmQ6OlRyeToKKyAgICBjYXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6CisgICAg
Y2FzZSBHZXRCeUtpbmQ6OkRpcmVjdDoKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJB
c0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRl
TmFtZToKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICBJbmxp
bmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVC
bG9jaywgc3R1YkluZm8pOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgcmVzZXRQ
dXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8p
CiB7CiAgICAgdXNpbmcgRnVuY3Rpb25UeXBlID0gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rp
b24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVz
cygpKTsKKyAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1Yklu
Zm8pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIEZ1bmN0aW9uVHlwZSBvcHRpbWl6ZWRGdW5j
dGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGlt
aXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RP
cHRpbWl6ZTsKQEAgLTE2NjUsNDUgKzE2OTMsNDggQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAgb3B0
aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7
CiAgICAgfQogCi0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKLSAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBv
cHRpbWl6ZWRGdW5jdGlvbik7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldERlbEJ5KENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5k
KQogewogICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwog
ICAgIGVsc2UKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUp
OwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8u
c2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBJbmxp
bmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVC
bG9jaywgc3R1YkluZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQorc3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1w
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VT
aGFyZWRJQygpKQorICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb247CisgICAgZWxzZQorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOwogfQogCiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJ
ZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8s
IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgSW5s
aW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsK
IH0KIAotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQor
dm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKIHsKLSAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8pOworICAg
IHJlc2V0UGF0Y2hhYmxlSnVtcChjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNl
dENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
T3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUp
OworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJh
bmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsK
LSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6
OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1
YkluZm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dh
c21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0
KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDMxMzc5ZGM0ZTVh
OWRjMmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1MWEuLjNhMTlmZDM2NTQ5ZDFhODQ4MDlmOTRkYWRh
MmRmYmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC02NSw3
ICs2NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwg
RGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJl
c2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNl
dENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2
b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxs
PEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxl
ZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CmluZGV4IGQ5NDk3ZWJkNGYwYmE2ZjYyNTc5ZGNkNTQyM2E3Yjk4NDdlOTQ0ZTIuLjdlMGU1OTMy
NzQ1YjhhYWVkYjk5MGQ5OGRhNjYyNzc4NDM1Y2UyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM2LDYgKzUzNiw4IEBAIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlC
dWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVzZVRvcExldmVs
QXdhaXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRoZSBhd2FpdCBrZXl3b3JkIGF0IHRoZSB0b3Ag
bGV2ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYoQm9vbCwgdmVyYm9zZUV4ZWN1dGFibGVQb29s
QWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlU2hh
cmVkSUMsIGlzQVJNNjQoKSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VTaGFy
ZWRJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogCiAKIGVudW0g
T3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IDYwZjk4ZjU2M2E3NmVkZWRhNTJhMDcyODgzZTRiYWZlYmQ3MmRlZTUuLjVmMTQ1ZWYzN2YxZDQ3
NTMyNDUyZjg0Njk1NzQ0OTgzMGVlYzEzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJW
TS5oIgogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVycm9y
LmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5oIgpAQCAt
NTY2LDYgKzU2Nyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwg
V1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogI2VuZGlmIC8vIEVOQUJMRShG
VExfSklUKQogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2Rl
Rm9yQ2FsbCk7CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENv
ZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBtX3NoYXJlZEpJVFN0dWJzID0gbWFrZVVuaXF1ZTxT
aGFyZWRKSVRTdHViU2V0PigpOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCkBAIC02
NDksNiArNjUxLDEwIEBAIFZNOjp+Vk0oKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3NjcmF0Y2hCdWZmZXJzLnNpemUoKTsgKytpKQogICAgICAgICBWTU1hbGxvYzo6ZnJlZShtX3Nj
cmF0Y2hCdWZmZXJzW2ldKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEpJVCkKKyAgICBtX3NoYXJl
ZEpJVFN0dWJzID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiB2b2lkIFZNOjpwcmltaXRpdmVHaWdh
Y2FnZURpc2FibGVkQ2FsbGJhY2sodm9pZCogYXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCAyZDNjZDQ2Njg4OGJjZTNhZmI1YTg4OTM2MTcyNzU4ZjE4YzkzZmE2Li40
ZGU5NWY2MzhiMWUyMzg1OWExYjM0ZTkxN2RjOTNhYTJmOWYzNWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTE3NCw2ICsxNzQsNyBAQCBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0
TGlzdDsKIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAjZW5kaWYKIGNsYXNzIFNoYWRvd0NoaWNr
ZW47CitjbGFzcyBTaGFyZWRKSVRTdHViU2V0OwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNs
YXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsKQEAgLTg0MSwx
MSArODQyLDEzIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwg
cHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SklUVGh1bmtzPiBqaXRTdHViczsKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldENUSVN0dWIoVGh1bmtHZW5lcmF0b3IpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTaGFyZWRKSVRTdHViU2V0PiBtX3NoYXJlZEpJVFN0dWJzOwogCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKICNlbmRpZgorCiAgICAgTmF0aXZlRXhlY3V0YWJs
ZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1
Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0
RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAo=
</data>
<flag name="commit-queue"
          id="451308"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429995</attachid>
            <date>2021-05-28 01:14:39 -0700</date>
            <delta_ts>2021-05-31 00:49:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210528011438.patch</filename>
            <type>text/plain</type>
            <size>425557</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5kODJmM2FhZDBhOWJiZjJl
NjU0MjE4MTZiMjY3MmY3ZmM5M2I5YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNjcgQEAKKzIwMjEtMDUtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaDoK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nl
c3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9u
ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhJQ0NhbGwpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFwcGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRD
YWxsU2V0UmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAq
IGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2Fs
bENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQ
YXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6
OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1Bh
dGhDYWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICog
ZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsS2V5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5Lmg6
CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpTbG93UGF0aENhbGxLZXkpOgor
ICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aW5kaXJlY3RPZmZzZXQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6d2l0aENhbGxUYXJnZXQpOgor
ICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpoYXNoIGNvbnN0KToKKyAgICAgICAg
KiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKToKKyAgICAgICAgKiBqaXQvQ0Nh
bGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
QXJnQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaFJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaEV4dHJhUmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjpwdXNoTm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjphZGRHUFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxl
Y3Rpb246OmFkZEdQUkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdD
b2xsZWN0aW9uOjphZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJn
Q29sbGVjdGlvbjo6YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2FsY3Vs
YXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZvckFyZ3Vt
ZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJH
VU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50c0VudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRm9ySW5k
aXJlY3RDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUp
OgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291
bnQpOgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5n
R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOgorICAgICAg
ICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpjcmVhdGUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZVNoYXJl
ZElDKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAg
ICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlk
R2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAg
ICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlND
OjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6
OkpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeUlk
R2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
SW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUp
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9y
OjpKSVRQdXRCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVElu
QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5l
cmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9h
ZEZvckFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldEpTVmFsdWVSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUpOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJ
bmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFi
bGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19v
cF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2Rp
cmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXREb3Vi
bGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0xvYWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9y
YWdlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgICog
aml0L0pJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5lOjprZXlz
IGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgor
ICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVhZFB1dElDQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTbG93UGF0aENhbGwp
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEdl
dEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6cmVwYXRjaEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXBhdGNoUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
RGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZUluQnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5SUQpOgorICAgICAg
ICAoSlNDOjp0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRj
aENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVTZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNlT2Yp
OgorICAgICAgICAoSlNDOjpsaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0dWFs
Rm9yKToKKyAgICAgICAgKEpTQzo6cmVzZXRHZXRCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNldFBh
dGNoYWJsZUp1bXApOgorICAgICAgICAoSlNDOjpyZXNldEluQnlJRCk6CisgICAgICAgIChKU0M6
OnJlc2V0SW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlc2V0Q2hlY2tQcml2YXRlQnJhbmQp
OgorICAgICAgICAoSlNDOjpyZXNldFNldFByaXZhdGVCcmFuZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp+
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNv
bnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IGU1MTc1N2U5YjhmYzY0Mjg3ODI3YzE2ZDAyZDIxY2My
MThmYjEzMjYuLjgzY2IzNmQwNmY4MzEyYzg5NWY2YTQ5YjI1NmJiZWMzNDYyNzNlMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0yMzQsOCAr
MjM0LDggQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAg
ICBDb2RlTG9jYXRpb25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAgICAgewotICAg
ICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAgICAgICAgQVNT
RVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFTU0VSVChjYWxs
LmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQoIWNhbGwuaXNG
bGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8dGFn
PihnZXRMaW5rZXJBZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKSkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNhZGExZmMwMzRj
Yzc0MWQuLmU1YjBiMmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjRFLmgKQEAgLTIyMCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVy
PENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcg
dGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFn
IHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklUQ2FnZSgpIHx8
IGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBsb2Fk
NjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
LSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAgICAgY2Fs
bChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVCh0YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxvYWQ2NChhZGRy
ZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAg
ICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFU
ZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGxP
cGVyYXRpb24oY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVyYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzVm
Zjc4MjI2MmU3MTg1Yjg3NTA0ODcwZDRiNGM5YmM0OTJhNGFhNC4uNzJjMzZhOGE5ZmQ0MWZkNWM0
ZDViMTFkOWI2YjQ3NTY4YjRiYzA2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3ND
YXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNz
Q2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwx
MCArMTA1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0
eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nl
c3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwz
NCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNp
dGlvbigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRp
b24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUo
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJl
LT5wcmV2aW91c0lEKCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERl
bGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQ
cml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVC
cmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZh
dGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0
UHJpdmF0ZUJyYW5kKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZh
dGVCcmFuZCgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihu
ZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52
YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIs
IGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2Fz
ZTo6fkFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsx
ODgsOSBAQCBKU09iamVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGNvbmRpdGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitS
ZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3Vs
dC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDgg
QEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVl
UmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsK
KyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAg
ICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiAr
MTA2Myw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJl
Z3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsx
MTQ4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVn
cygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEy
MTEsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
dmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdz
KCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKQEAgLTEzMTcsNiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRo
R3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZv
R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAg
ICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVT
Y3JhdGNoR1BSKCk7CkBAIC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRlSW1wbChzdGF0
ZSk7CiB9CiAKK3ZvaWQgQWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7Cisg
ICAgVk0mIHZtID0gc3RhdGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2Fz
ZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6
CisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFy
Z3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5
cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6
CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5kZXhlZEludDMy
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRp
Z3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJ
bnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgR2V0
dGVyOgorICAgIGNhc2UgU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6CisgICAg
Y2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0dGVyOgor
ICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlzVmFsaWRPZmZz
ZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7Cisg
ICAgICAgICAgICBpZiAoIWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAgICAgICBjdXJy
U3RydWN0dXJlID0gc3RydWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAg
ICAgICAgIGN1cnJTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50
cyh2bSwgb2Zmc2V0KCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAgICAgaWYgKGNv
bmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3Bl
cnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsK
KyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9u
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9yIG5v
dywgd2Ugb25seSBhbGxvdyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxlLgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9IFByb3BlcnR5
Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRpb24uc3RydWN0
dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewor
ICAgICAgICAgICAgLy8gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVuIGlzIHRoYXQg
d2UgcmVxdWlyZSB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAgICAgICAvLyBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVkIHRoYXQKKyAg
ICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0dXJuZWQgdHJ1
ZS4KKworICAgICAgICAgICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8gbG9uZ2VyIG1l
dDogIiwgY29uZGl0aW9uLCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0
IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVy
ZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZSh2bSk7CisgICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJh
cnJpZXI8SlNDZWxsPih2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICB9Cit9CisKIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAt
MTQxNyw3ICsxNTAyLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3Rv
QWNjZXNzQ2hhaW4pOwogCiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWlu
Z0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5
RWZmb3J0OjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxs
V2F0Y2hwb2ludChjb25kaXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9p
bnQoY29kZUJsb2NrLCBjb25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtMTU4Miw3ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRv
ZXMgdGhlIG5lY2Vzc2FyeSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4K
ICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2Nr
LT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNl
dChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGwoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRv
IHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OlNwaWxsU3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVl
KSB7CiAgICAgICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgw
Miw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAjZW5kaWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBh
Y2Nlc3MuY2FsbExpbmtJbmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAg
ICAgaWYgKG1fdHlwZSA9PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0
cyh2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0x
NzIzLDggKzE4MTQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5r
KCZqaXQpOwogCi0gICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkg
LSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2
ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9p
bnRlck9mZnNldCA9IChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0
ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbjsKKyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBj
YWxsSGFzUmV0dXJuVmFsdWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVS
ZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7
CiAKQEAgLTE4NDUsNyArMTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBw
ZW5kKGppdC5iYXJyaWVyQnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1By
b3h5Ojp0YXJnZXRPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGls
bFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0
RXhjZXB0aW9ucygpOworCisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1Rv
UHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNl
U2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0
KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0
ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2Vw
dGlvbnMoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2Fs
bCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRS
ZWdpc3RlcnMpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZv
Lm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3Jh
dGNoR1BSKTsKIAogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpA
QCAtMTkzMyw2ICsyMDMzLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBp
ZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAg
ICAgICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9
IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCkBAIC0yMDMxLDYgKzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQ
Uik7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRI
YXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0y
MTkxLDYgKzIyOTcsMTMgQEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5
VHlwZShBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJ
VFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3No
YXJlZEpJVFN0dWJzKQorICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlz
KTsKKyAgICBKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYg
QVNTRVJUX0VOQUJMRUQKIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTA3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9
CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hh
cmluZyhjb25zdCBBY2Nlc3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAg
ICAvLyBXZSBkbyBub3QgY2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBp
ZiBlaXRoZXIgb2YgdGhlbSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxo
cy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhz
LmFkZGl0aW9uYWxTZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5t
X3R5cGUgIT0gcmhzLm1fdHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMu
bV9vZmZzZXQgIT0gcmhzLm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGxocy5tX3ZpYVByb3h5ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGxocy5tX3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1faWRlbnRpZmllciAhPSByaHMu
bV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRp
dGlvblNldCAhPSByaHMubV9jb25kaXRpb25TZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHN3aXRjaCAobGhzLm1fdHlwZSkgeworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFRyYW5z
aXRpb246CisgICAgY2FzZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6
CisgICAgY2FzZSBEZWxldGVNaXNzOgorICAgIGNhc2UgUmVwbGFjZToKKyAgICBjYXNlIE1pc3M6
CisgICAgY2FzZSBHZXRHZXR0ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAgICBjYXNlIEluTWlzczoK
KyAgICBjYXNlIEFycmF5TGVuZ3RoOgorICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgorICAgIGNhc2Ug
RGlyZWN0QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgor
ICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6Cisg
ICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9y
YWdlTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZERpcmVjdEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUlu
dDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJ
bmRleGVkVHlwZWRBcnJheVVpbnQ4Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRB
cnJheUludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVk
QXJyYXlVaW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVk
U3RyaW5nTG9hZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIEdldHRlcjoKKyAg
ICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNldHRlciByZWxpZXMgb24g
Q29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUuCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0dGVyOgorICAgIGNhc2Ug
Q3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1ZVNldHRlcjoKKyAgICBj
YXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICBpZiAobGhzZC5tX2RvbUF0dHJpYnV0
ZSB8fCByaHNkLm1fZG9tQXR0cmlidXRlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbGhzZC5tX2N1c3RvbVNsb3RCYXNlID09IHJoc2QubV9jdXN0b21TbG90QmFz
ZQorICAgICAgICAgICAgJiYgbGhzZC5tX2N1c3RvbUFjY2Vzc29yID09IHJoc2QubV9jdXN0b21B
Y2Nlc3NvcjsKKyAgICB9CisKKyAgICBjYXNlIEludHJpbnNpY0dldHRlcjogeworICAgICAgICBh
dXRvJiBsaHNkID0gbGhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAg
IGF1dG8mIHJoc2QgPSByaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAg
ICAgcmV0dXJuIGxoc2QubV9pbnRyaW5zaWNGdW5jdGlvbiA9PSByaHNkLm1faW50cmluc2ljRnVu
Y3Rpb247CisgICAgfQorCisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOiB7CisgICAgICAg
IGF1dG8mIGxoc2QgPSBsaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsKKyAgICAg
ICAgYXV0byYgcmhzZCA9IHJocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAg
ICAgICByZXR1cm4gbGhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCA9PSByaHNkLm1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0CisgICAgICAgICAgICAmJiBsaHNkLm1fbW9kdWxlRW52aXJvbm1lbnQg
PT0gcmhzZC5tX21vZHVsZUVudmlyb25tZW50CisgICAgICAgICAgICAmJiBsaHNkLm1fc2NvcGVP
ZmZzZXQgPT0gcmhzZC5tX3Njb3BlT2Zmc2V0OworICAgIH0KKworICAgIGNhc2UgSW5zdGFuY2VP
ZkhpdDoKKyAgICBjYXNlIEluc3RhbmNlT2ZNaXNzOgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVy
aWM6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4o
KTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4oKTsK
KyAgICAgICAgcmV0dXJuIGxoc2QubV9wcm90b3R5cGUgPT0gcmhzZC5tX3Byb3RvdHlwZTsKKyAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmlu
ZGV4IGJkZDFiMjM3ZDYxOGEyY2NlODI3MjBmNzJjYTc1MzdkZTNmYTcwNjguLjM1ODFmY2FhNzQ1
NTBlZTc4NmM2ODZjOTM4NWIwMTgyODM1NWZhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMjgsMTAgKzI4LDEzIEBACiAjaWYgRU5BQkxFKEpJ
VCkKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVi
Um91dGluZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQb2x5UHJvdG9BY2Nlc3NDaGFp
bi5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTc5LDcgKzgyLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQWNj
ZXNzQ2FzZSk7CiAvLyBXZSB3aWxsIHNvbWV0aW1lcyBidWZmZXIgY29tbWl0dGVkIEFjY2Vzc0Nh
c2VzIGluIHRoZSBQb2x5bW9ycGhpY0FjY2VzcyBvYmplY3QgYmVmb3JlIGdlbmVyYXRpbmcKIC8v
IGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgcmVnZW5lcmF0ZSBvbmNlIHdlJ3ZlIGFjY3Vt
dWxhdGVkIChob3BlZnVsbHkpIG1vcmUgdGhhbiBvbmUgbmV3CiAvLyBBY2Nlc3NDYXNlLgotY2xh
c3MgQWNjZXNzQ2FzZSB7CitjbGFzcyBBY2Nlc3NDYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEFjY2Vzc0Nhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hF
QVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIHB1YmxpYzoKICAgICBlbnVtIEFjY2Vzc1R5cGUg
OiB1aW50OF90IHsKQEAgLTE0NywxOSArMTUwLDE5IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAg
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2VUeXBlPihuZXcgQWNjZXNzQ2Fz
ZVR5cGUoYXJndW1lbnRzLi4uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsCisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsCiAg
ICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBSZWZQdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBz
dGF0aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYs
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZURl
bGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVD
aGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFjY2Vz
c0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKICAgICBBY2Nlc3NUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KQEAgLTI1MywxMSArMjU2LDQzIEBAIGNsYXNzIEFjY2Vzc0Nhc2Ugewog
I2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVT
dHViSW5mbyYpIHsgfQogI2VuZGlmCi0gICAgCisKKyAgICB2b2lkIGNvbGxlY3RJbnZhcmlhbnRz
Rm9yQ29kZVJldXNlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIENvZGVCbG9jayopOworCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0
aGF0IG1fc3RydWN0dXJlIGlzIGFscmVhZHkgZGVzdHJveWVkLiBXZSBhcmUgZGVzdHJveWluZyBK
SVRTdHViUm91dGluZSwgYW5kIHRoaXMgZGVzdHJ1Y3Rpb24gaXMgZHJpdmVuCisgICAgICAgIC8v
IGJ5IENvZGVCbG9jaydzIGRlc3RydWN0b3IgKHR5cGljYWxseSkuIEFuZCBhdCB0aGF0IHRpbWUs
IGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhpcyBzdHJ1Y3R1cmUgaXMgYWxyZWFkeSBkZXN0cm95ZWQg
YmVmb3JlCisgICAgICAgIC8vIENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4gQnV0IGhlcmUsIHdl
IGRvIG5vdCBjYXJlIGFib3V0IHRoZSBsaXZlbmVzcyBvZiB0aGlzIHN0cnVjdHVyZSBzaW5jZSB0
aGUgb3duZXIgc2hvdWxkIGtlZXAgaXQsCisgICAgICAgIC8vIGFuZCBpZiBpdCBpcyBkZWFkLCBp
dCBpcyBvbmx5IHBvc3NpYmxlIGluIHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBvd25lci4gV2UganVz
dCBnZXQgYSBwb2ludGVyIHZhbHVlIHZpYSB1bnZhbGlkYXRlZEdldCgpLgorICAgICAgICByZXR1
cm4gY29tcHV0ZUhhc2gobV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV90eXBlKSwgbV92aWFQcm94eSwgbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKSwgbV9v
ZmZzZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsSW5TaGFyaW5nKGNvbnN0IEFj
Y2Vzc0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3RlY3RlZDoKICAgICBBY2Nlc3ND
YXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKLSAgICBBY2Nlc3NDYXNlKEFj
Y2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYg
b3RoZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJiBvdGhlcikKKyAg
ICAgICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQorICAgICAgICAsIG1fc3RhdGUo
V1RGTW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KFdURk1vdmUob3Ro
ZXIubV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RGTW92ZShvdGhlci5tX29mZnNl
dCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhlci5tX3N0cnVjdHVyZSkpCisg
ICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5tX2NvbmRpdGlvblNldCkpCisg
ICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKG90aGVyLm1fcG9seVByb3Rv
QWNjZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKG90aGVyLm1faWRl
bnRpZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90
aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9zdGF0ZShv
dGhlci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3RoZXIubV92aWFQcm94eSkKKyAg
ICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShv
dGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlvblNldChvdGhlci5tX2NvbmRp
dGlvblNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0NoYWluKG90aGVyLm1fcG9seVBy
b3RvQWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVyKG90aGVyLm1faWRlbnRpZmll
cikKKyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9yPShjb25zdCBBY2Nlc3NDYXNl
JikgPSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBtX3N0YXRlID0gUHJpbW9yZGlh
bDsgfQpAQCAtMjc1LDcgKzMxMCw3IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogCiAgICAgLy8gRklY
TUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNjZXNzQ2FzZSBwdXRzIHBvc3Qt
Z2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWY8QWNjZXNzQ2FzZT4g
Y2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFjdGlvbiB0aGF0IG11c3QgYmUg
cGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBpbiB3aGljaCB0aGUgY2FzZQog
ICAgIC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdhdGNocG9pbnQgc2V0cyB0aGF0
IHdpbGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM1MCwxNjggQEAgY2xhc3MgQWNj
ZXNzQ2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCitj
bGFzcyBTaGFyZWFibGVKSVRTdHViUm91dGluZSBmaW5hbCA6IHB1YmxpYyBKSVRTdHViUm91dGlu
ZSB7CitwdWJsaWM6CisgICAgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUoVk0mIHZtLCBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cykKKyAgICAgICAgOiBKSVRTdHViUm91dGlu
ZShjb2RlKQorICAgICAgICAsIG1fdm0odm0pCisgICAgICAgICwgbV9rZXlzKFdURk1vdmUoa2V5
cykpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4qIGtleXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV9rZXlzOyB9CisKKyAgICB2b2lk
IG9ic2VydmVaZXJvUmVmQ291bnQoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsK
KyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1fa2V5czsKK307CisKK2NsYXNz
IFNoYXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFNoYXJlZEpJ
VFN0dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJTZXQoKSA9IGRlZmF1bHQ7CisK
KyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4+JiBrZXlzKQorICAgIHsKKyAgICAgICAgSGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9y
IChhdXRvJiBrZXkgOiBrZXlzKQorICAgICAgICAgICAgV1RGOjphZGQoaGFzaGVyLCBrZXktPmhh
c2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KKworICAgIHN0cnVj
dCBIYXNoIHsKKyAgICAgICAgc3RydWN0IEtleSB7CisgICAgICAgICAgICBLZXkoKSA9IGRlZmF1
bHQ7CisKKyAgICAgICAgICAgIEtleShHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBH
UFJSZWcgZXh0cmFHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lz
dGVycywgSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAgICAgICAgICAgOiBtX3dyYXBw
ZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQorICAgICAg
ICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAgICAgICAgICAgICAsIG1fZXh0
cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZv
R1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJzKHVzZWRSZWdpc3RlcnMpCisg
ICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChiaXR3aXNlX2Nhc3Q8SklUU3R1
YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkKKyAgICAgICAgICAgIHsgfQor
CisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxKSVRTdHViUm91dGluZSo+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkpOyB9CisKKyAgICAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCisgICAgICAgICAgICAgICAgICAg
ICYmIGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEu
bV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4
dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1Yklu
Zm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV91c2Vk
UmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBhLm1fd3JhcHBlZCAhPSBiLm1f
d3JhcHBlZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSklUU3R1YlJvdXRpbmUqIG1f
d3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAg
ICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BS
OworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgICAgICBSZWdpc3Rl
clNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAgICAgICAgdXNpbmcgS2V5VHJh
aXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXAubV93
cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIFNo
YXJlZEpJVFN0dWJTZXQ6Omhhc2goKnAubV93cmFwcGVkLT5rZXlzKCkpOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBm
YWxzZTsKKyAgICB9OworCisgICAgc3RydWN0IFNlYXJjaGVyIHsKKyAgICAgICAgc3RydWN0IFRy
YW5zbGF0b3IgeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU2VhcmNo
ZXImIHNlYXJjaGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRKSVRTdHViU2V0OjpoYXNoKHNlYXJjaGVyLm1fa2V5cyk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6OktleSBhLCBjb25zdCBTZWFy
Y2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYS5tX2Jhc2VHUFIg
PT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIu
bV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4
dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1
YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5t
X3VzZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYXZlYyA9
ICphLm1fd3JhcHBlZC0+a2V5cygpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBi
dmVjID0gYi5tX2tleXM7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdmVjLnNpemUoKSA9PSBi
dmVjLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgYnZlYy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5nKCphdmVjW2luZGV4XSwg
KmJ2ZWNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOwor
ICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7
CisgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgY29uc3QgRml4
ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYgbV9rZXlzOworICAgIH07CisKKyAgICBzdHJ1
Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChKSVRT
dHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEpJ
VFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5LCBKSVRTdHViUm91dGluZSogc3R1YikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleS5tX3dyYXBwZWQgPT0gc3R1YjsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChIYXNoOjpLZXkmJiBrZXkpCisgICAgewor
ICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlKEpJVFN0
dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9zdHVicy5maW5k
PFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gbV9zdHVicy5l
bmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3ZlKGl0ZXIpOworICAgIH0KKworICAgIEpJ
VFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hlcikKKyAgICB7CisgICAg
ICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6
OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKGVudHJ5ICE9IG1fc3R1YnMuZW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1fd3JhcHBlZDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8SGFzaDo6S2V5LCBIYXNo
LCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXgg
ZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4NC4uYjIyNmZiMTZmNWRiNzQ0
ZjdmZTU1NmJlYzc1OGQ3Y2VhMDRlNGFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeVZhbEluZm8uaApAQCAtMjQ0LDEwICsyNDQsOCBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsK
ICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+IG5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PiBiYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4g
ZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJn
ZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0
aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJn
ZXQpCisgICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9u
ZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRI
b3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0
aFRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMtPm5vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVt
cDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZUp1bXAgPSBiYWRUeXBlSnVtcDsKICAgICAgICAgdGhp
cy0+ZXhjZXB0aW9uSGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXI7CiAgICAgICAgIHRoaXMtPmRv
bmVUYXJnZXQgPSBkb25lVGFyZ2V0OwogICAgICAgICB0aGlzLT5iYWRUeXBlTmV4dEhvdFBhdGhU
YXJnZXQgPSBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7CkBAIC0yNjIsOCArMjYwLDIxIEBAIHN0
cnVjdCBCeVZhbEluZm8gewogCiAgICAgREVDTEFSRV9WSVNJVF9BR0dSRUdBVEU7CiAKLSAgICBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKLSAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOworICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJ
bmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZv
LCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQorCisgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPiBtX3Nsb3dPcGVyYXRpb247CisKKyAgICB1bmlvbiB7CisgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25vdEluZGV4SnVtcFRhcmdldDsKKyAgICAg
ICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX25vdEluZGV4SnVtcDsKKyAg
ICB9OworICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsKKyAgICB9OworCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlcjsKICAgICBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0OwogICAgIENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA3NzMyOWYz
YTQxZTA0YTFjNzJkYjYyYzFkNThmNGY1YzM2Mzk3MjUxLi44MWFiOTdmYmQ4MThiMWZiN2MxZmJm
ZWQ0MDI0OWZjOTM3MTYzZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC00MjAsNiArNDIwLDExIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIHsKICAgICAgICAgcmV0dXJuIGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNl
bGluZUpJVDsKICAgICB9CisKKyAgICBib29sIHVzZVNoYXJlZElDKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKSVRDb2RlOjp1c2VTaGFyZWRJQyhqaXRUeXBlKCkpOworICAgIH0KICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAppbmRleCAyMDJlZmM1NDY2NjE5ODU0ZGFhYTYyMGM2OTdmZjFjZmY3Y2YzODM2
Li42YTMwZTYzOGUyMDBjYTA4MGUxNGJhYWQ4N2FlOGUxNjRmZjY5YzUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNl
dHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgbV9j
dXN0b21TbG90QmFzZS5zZXRNYXlCZU51bGwodm0sIG93bmVyLCBjdXN0b21TbG90QmFzZSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpj
cmVhdGUoCitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAog
ICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsCiAg
ICAgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25Q
dHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRlciwgSlNPYmplY3QqIGN1c3RvbVNs
b3RCYXNlLAogICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0
ZSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQpA
QCAtNjEsMTggKzYxLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0
KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQs
IGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOwogICAgIHJlc3VsdC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7
CiAgICAgcmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rpb25Q
dHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbUdldHRlcikgOiBudWxscHRyOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5
cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
Y29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNj
ZXNzQ2hhaW4sIGJvb2wgdmlhUHJveHksIAogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29y
UHRyVGFnPiBjdXN0b21TZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKIHsKICAgICBB
U1NFUlQodHlwZSA9PSBTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCB0eXBl
ID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNv
bmRpdGlvblNldCwgdmlhUHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHBy
b3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9IGN1
c3RvbVNldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21TZXR0
ZXIpIDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTEsOSArOTEsOSBAQCBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRl
clNldHRlckFjY2Vzc0Nhc2UmIG90aAogICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21B
dHRyaWJ1dGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgq
dGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0xMzksNiArMTM5LDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9N
SklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5sb2Nr
KHZhbHVlUmVncyk7CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAg
ICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNlR1BS
ID0gSW52YWxpZEdQUlJlZzsKQEAgLTIyMyw2ICsyMjUsMTEgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUs
IGNvbnMKICAgICBmb3IgKEZQUlJlZyByZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lzdGVy
c1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnKTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwu
ZXhjbHVkZShSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisjaWYg
Q1BVKEFSTTY0KQorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOwor
ICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJlZ2lzdGVyc1RvU3Bp
bGxGb3JDQ2FsbC5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogCiAgICAgQWNjZXNz
Q2FzZVNuaXBwZXRQYXJhbXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVncyksIFdURk1v
dmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0LT5nZW5lcmF0
b3IoKS0+cnVuKGppdCwgcGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDg3M2U3YzM1ODg4ZWIz
YjEyMWRiZmQ3YWYwNmUyY2FiZWI3ZDMzYjIuLjEwMGZiMjdlZTg1NjYxNmZiNDE4NDI1ZWMyYzcy
MzQ5NGE0YWVmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaApAQCAtNTMsMTcgKzUzLDE3IEBAIGNsYXNzIEdl
dHRlclNldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7
CiAKICAgICB2b2lkIGVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVm
PEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAg
ICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBX
YXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0
clRhZz4gY3VzdG9tR2V0dGVyLAogICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIE9w
dGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+JiYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0
ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94
eSA9IGZhbHNlLAogICAgICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3Vz
dG9tU2V0dGVyID0gbnVsbHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7
CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3Qg
ZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmlu
YWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+R2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCmluZGV4IDgzMmNkMGI4ZmFmZDk4ZDBiMjg1OTNj
YmJiMDU3YmFlOTZmYjMyMWEuLjIxOTQyYzQzNWJlZWMxNGMxNTg2Mzk1ZTNkNjQxMTM2ZTIyODg4
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3Mu
Y3BwCkBAIC0yMTYsNiArMjE2LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNj
cmF0Y2hSZWdpc3RlcihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8uYmFzZVRhZ0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
dmFsdWVUYWdHUFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BS
KCk7CiAgICAgaWYgKGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1
cm4gSW52YWxpZEdQUlJlZzsKQEAgLTM3OSw4ICszODEsNTQgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6
OmdlbmVyYXRlU2VsZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0
dXJlKgogICAgIHJldHVybiBsaW5rZWRDb2RlSW5saW5lOwogfQogCi12b2lkIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit2b2lkIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCiB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNl
U2hhcmVkSUMoKSkgeworICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgYXV0byBq
dW1wID0gaml0Lmp1bXAoKTsKKworICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJl
IGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJ
Qy4KKyAgICBib29sIG5lZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNlOworICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcihqaXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVy
KCkuY29kZVNpemUoKSwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBp
bGF0aW9uTXVzdFN1Y2NlZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgUkVMRUFTRV9B
U1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0
YXJnZXQpOworCisgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGlu
ZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IHRhcmdldCkKK3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAg
ICAgIC8vIElmIGl0IGlzIG5vdCBHZXRCeUlkLWxpa2UtdGhpbmcsIHdlIGRvIG5vdCBlbWl0IG5v
cCBzbGVkIChlLmcuIEdldEJ5VmFsKS4KKyAgICAgICAgLy8gVGhlIGNvZGUgaXMgYWxyZWFkeSBh
biBpbmRpcmVjdCBqdW1wLCBhbmQgb25seSB0aGluZyB3ZSBzaG91bGQgZG8gaXMgcmVwbGFjaW5n
IG1fY29kZVB0ci4KKyAgICAgICAgaWYgKHN0dWJJbmZvLmhhc0NvbnN0YW50SWRlbnRpZmllcikg
eworICAgICAgICAgICAgLy8gSWYgbV9jb2RlUHRyIGlzIHBvaW50aW5nIHRvIHN0dWJJbmZvLnNs
b3dQYXRoU3RhcnRMb2NhdGlvbiwgdGhpcyBtZWFucyB0aGF0IElubGluZUFjY2VzcyBjb2RlIGlz
IG5vdCBhIHN0dWIgb25lLgorICAgICAgICAgICAgLy8gV2UgcmV3cml0ZSB0aGlzIHdpdGggdGhl
IHN0dWItYmFzZWQgZGlzcGF0Y2hpbmcgY29kZSBvbmNlLCBhbmQgY29udGludWUgdXNpbmcgaXQg
dW50aWwgd2UgcmVzZXQgdGhlIGNvZGUuCisgICAgICAgICAgICBpZiAoc3R1YkluZm8ubV9jb2Rl
UHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkgPT0gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9u
LmV4ZWN1dGFibGVBZGRyZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0
OworCisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZzdHViSW5mbyksIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgIGpp
dC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKworICAgICAgICAgICAg
ICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
TGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxl
ci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwg
SklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisKKyAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uZG9uZUxvY2F0aW9uKTsK
KworICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJ
bmxpbmVBY2Nlc3M6IGxpbmtpbmcgc3R1YiBjYWxsIik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAgIGF1dG8ganVtcCA9IGppdC5q
dW1wKCk7CkBAIC0zOTQsNiArNDQyLDI2IEBAIHZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiCiAgICAg
RklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlua2lu
ZyBjb25zdGFudCBqdW1wIik7CiB9CiAKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7Cisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAg
ICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQg
YmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5j
aENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHVi
SW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVk
c0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxp
ZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExv
Y2F0aW9uKTsKKworICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxp
bmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vz
czo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICByZXdpcmVTdHVi
QXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4ZjIyNjQwNmM3ZmIyNmZmYmI0ODg2YjJiODQ3
MWQxMmQuLmViNzZmZjM5NmQyODhlY2RiZTNhZjEwMTdmMzI0M2FhYTc0NDBhY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKQEAgLTEwNCwxMCAr
MTA0LDE0IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFi
bGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMg
Ym9vbCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0
YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5
Kik7Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CiAgICAgc3RhdGljIGJv
b2wgZ2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mLCBTdHJ1Y3R1cmUqKTsK
ICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYp
OwogCisgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxp
bmVDb2RlKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1w
SW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1YkFzSnVt
cEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKKwogICAgIC8vIFRoaXMgaXMgaGVscGZ1bCB3aGVuIGRldGVy
bWluaW5nIHRoZSBzaXplIG9mIGFuIElDIG9uCiAgICAgLy8gdmFyaW91cyBwbGF0Zm9ybXMuIFdo
ZW4gYWRkaW5nIGEgbmV3IHR5cGUgb2YgSUMsIGltcGxlbWVudAogICAgIC8vIGl0cyBwbGFjZWhv
bGRlciBjb2RlIGhlcmUsIGFuZCBsb2cgdGhlIHNpemUuIFRoYXQgd2F5IHdlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNw
cAppbmRleCAyMWYyNDUzYmFjN2FmYWU3NzI0MWNiMDRhMjVkMjBmZGQ5OTNiYzM0Li45OTQ5MDhk
NjhiNjJiYmUwNmUwOWFhMGIzN2U3N2MxMTBjNjY5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKQEAgLTMy
LDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCitSZWY8QWNjZXNzQ2FzZT4gSW5z
dGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiAgICAgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNPYmplY3QqIHByb3RvdHlw
ZSkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnN0YW5j
ZU9mQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCBwcm90b3R5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBw
cm90b3R5cGUpKTsKIH0KIAogdm9pZCBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6ZHVtcEltcGwoUHJp
bnRTdHJlYW0mIG91dCwgQ29tbWFQcmludGVyJiBjb21tYSkgY29uc3QKQEAgLTQ1LDkgKzQ1LDkg
QEAgdm9pZCBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6ZHVtcEltcGwoUHJpbnRTdHJlYW0mIG91dCwg
Q29tbWFQcmludGVyJiBjb21tYSkgY29uc3QKICAgICBvdXQucHJpbnQoY29tbWEsICJwcm90b3R5
cGUgPSAiLCBKU1ZhbHVlKHByb3RvdHlwZSgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nh
c2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEluc3RhbmNlT2ZBY2Nlc3ND
YXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZB
Y2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0YW5jZU9mQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZBY2Nlc3NDYXNlLmgKaW5kZXggNjllMmIzMWFhOTRhNTlkMzBkZmI0Y2FmMjI0NDk5
ZDYwMjc3ODQ3Yy4uYWQ3MWU2OTQyZjQ0OTJmYThhYmRlYWFjN2VhMGZjNDZiNzA3OWU3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3ND
YXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nl
c3NDYXNlLmgKQEAgLTM0LDE1ICszNCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2UgewogcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBBY2Nlc3NDYXNlOworICAgIGZyaWVuZCBjbGFzcyBBY2Nlc3NDYXNlOwog
ICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAorICAg
IHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCosIEFj
Y2Vzc1R5cGUsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwK
ICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSk7CiAgICAgCiAgICAgSlNPYmplY3QqIHByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgCiAgICAgdm9p
ZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJl
ZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIH5JbnN0YW5jZU9m
QWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggNjMwMWRj
MjMzNjkzM2Q2NzZjM2JlOWU5MGM2MDE4OWExMzE3MzgxNy4uMzRiMWE4MDI3ODg5NWY3MWFiZmU2
ODI5NjljZGU0MzBmMzJlN2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtMzksMTgg
KzM5LDE4IEBAIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vz
c0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAgbV9pbnRyaW5zaWNGdW5jdGlv
bi5zZXQodm0sIG93bmVyLCBpbnRyaW5zaWNGdW5jdGlvbik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8
QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZt
LCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50
cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKIElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6On5JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkKIHsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykp
OworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50
cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDYyODcwMDQxNTg3MzFkNWI4ZmViNTA2MzUz
ZGU1NTliNjQ0NzY0NDYuLjQ3YWYxYTJiZjFkZDZjYjkxMzYyNjMyMTAxOTNiNDdhM2ZmMmFiNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBJbnRyaW5zaWNH
ZXR0ZXJBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2UgewogICAgIHN0YXRpYyBi
b29sIGNhbkVtaXRJbnRyaW5zaWNHZXR0ZXIoSlNGdW5jdGlvbiosIFN0cnVjdHVyZSopOwogICAg
IHZvaWQgZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmKTsKIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24s
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3ND
YXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1
bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFs
OworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCmlu
ZGV4IDI5NTZkZDBjZDVkMGVhZTYxYTA4ZTNkYzc2NWJmNzQzNDQxYzVmOGQuLmMyOWMxZGRmYWY0
ODE1NTY2MTUxNzA4NWE4OGUxOWEwNzNhYmU3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAK
QEAgLTQ1LDE4ICs0NSwxOCBAQCBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpNb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1fbW9kdWxl
RW52aXJvbm1lbnQuc2V0KHZtLCBvd25lciwgbW9kdWxlRW52aXJvbm1lbnQpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRl
KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBKU01vZHVsZUVu
dmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCwgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQpCitS
ZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50
KiBtb2R1bGVFbnZpcm9ubWVudCwgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgbW9kdWxl
RW52aXJvbm1lbnQsIHNjb3BlT2Zmc2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG1vZHVsZU5hbWVz
cGFjZU9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQsIHNjb3BlT2Zmc2V0KSk7CiB9CiAKIE1vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6On5Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCkKIHsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6
OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2U+IHJlc3VsdChuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOwor
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
KCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZS5oCmluZGV4IDkyYTBiOGEzNWI1NDcxNjI0MTMwZDY1MDY1M2Qw
NWJmNWQ3OTMzNzcuLmQ0Mzk1MGJmMDYzMTM3Y2Y3NzNiODRjNGFhZTQ5NDRiMDRjOWEzYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2UuaApAQCAtNDQsOSArNDQsOSBAQCBjbGFzcyBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2UgewogICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZp
cm9ubWVudC5nZXQoKTsgfQogICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zY29wZU9mZnNldDsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBTY29wZU9mZnNl
dCk7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCosIEpTTW9kdWxl
RW52aXJvbm1lbnQqLCBTY29wZU9mZnNldCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgZW1pdChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIGZhbGxUaHJvdWdoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQu
aAppbmRleCA1ZDkwNTQ1OTc0ZjFlZDM3ZjI4Y2FmM2EyYWViMzQ2YTQ5MTBhMjgzLi4wODYzZTE1
OTg1MDlkNDYwY2ZkOTY4NzA5YTJmMWM3ZjY4YzY2MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQu
aApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTg5LDYgKzkwLDMyIEBAIGNsYXNzIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0IHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
bV9kYXRhLT5tX3ZlY3Rvci5lbmQoKTsKICAgICB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIEhhc2hlciBoYXNoZXI7CisgICAgICAgIGZvciAoYXV0byYgY29u
ZGl0aW9uIDogKnRoaXMpCisgICAgICAgICAgICBhZGQoaGFzaGVyLCBjb25kaXRpb24uaGFzaCgp
KTsKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhzLCBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsKKyAgICAgICAgaWYgKGxo
cy5zaXplKCkgIT0gcmhzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgYXV0byBsaXRlciA9IGxocy5iZWdpbigpOworICAgICAgICBhdXRvIHJpdGVyID0gcmhzLmJl
Z2luKCk7CisgICAgICAgIGZvciAoOyBsaXRlciAhPSBsaHMuZW5kKCk7ICsrbGl0ZXIsICsrcml0
ZXIpIHsKKyAgICAgICAgICAgIGlmICghKCpsaXRlciA9PSAqcml0ZXIpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBsaHMsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiByaHMpCisgICAg
eworICAgICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKKyAgICB9CiAgICAgCiAgICAgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24gZm9yT2JqZWN0KEpTT2JqZWN0KikgY29uc3Q7CiAgICAgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24gZm9yQ29uZGl0aW9uS2luZChQcm9wZXJ0eUNvbmRpdGlvbjo6S2lu
ZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcAppbmRleCAwM2EyZjY3MWY3NDQ2ZTRhY2FkY2Q3NGI5Yzg3ZTg5YTdk
MDlhMDE1Li5iYzQ5NzU2YTcwMTBhYTU2NzYyNTk3NTQ0MWQ4YjViZTIyMjJmMTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIjoiLCBtX2NvZGUpOwog
fQogCi12b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQoY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKK3ZvaWQgQWNjZXNzR2VuZXJhdGlv
blN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikKIHsKLSAgICBXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KAotICAg
ICAgICB3YXRjaHBvaW50cywgaml0LT5jb2RlQmxvY2soKSwgc3R1YkluZm8sIGNvbmRpdGlvbik7
CisgICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJ
bnN0YWxsV2F0Y2hwb2ludCh3YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgY29uZGl0
aW9uKTsKIH0KIAogdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkK
QEAgLTczLDcgKzcyLDEwIEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2Ny
YXRjaCgpCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6c3VjY2VlZCgpCiB7CiAgICAgcmVz
dG9yZVNjcmF0Y2goKTsKLSAgICBzdWNjZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CisgICAgaWYg
KGppdC0+Y29kZUJsb2NrKCktPnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC0+cmV0KCk7Cisg
ICAgZWxzZQorICAgICAgICBzdWNjZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CiB9CiAKIGNvbnN0
IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmxpdmVSZWdpc3RlcnNGb3JDYWxs
KCkKQEAgLTEyNiwxMCArMTI4LDExIEBAIGF1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNlCiAgICAgfTsK
IH0KIAotYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1Rv
U3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKSAtPiBTcGlsbFN0YXRlCithdXRvIEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRo
b3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEpIC0+IFNwaWxsU3RhdGUKIHsK
ICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzID0gYWxsb2NhdG9yLT51c2VkUmVnaXN0ZXJz
KCk7CiAgICAgbGl2ZVJlZ2lzdGVycy5leGNsdWRlKGNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Cisg
ICAgbGl2ZVJlZ2lzdGVycy5tZXJnZShleHRyYSk7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQg
ZXh0cmFTdGFja1BhZGRpbmcgPSAwOwogICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1Vz
ZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJl
c2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgqaml0LCBsaXZlUmVnaXN0ZXJzLCBleHRyYVN0
YWNrUGFkZGluZyk7CkBAIC0yNTIsNyArMjU1LDcgQEAgUG9seW1vcnBoaWNBY2Nlc3M6On5Qb2x5
bW9ycGhpY0FjY2VzcygpIHsgfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjphZGRDYXNlcygKICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxv
Y2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdp
bmFsQ2FzZXNUb0FkZCkKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5h
bENhc2VzVG9BZGQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOwogICAgIApAQCAtMjY4LDkgKzI3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIC8vICAgYWRkIG1vcmUgdGhpbmdzIGFm
dGVyIGZhaWx1cmUuCiAgICAgCiAgICAgLy8gRmlyc3QgZW5zdXJlIHRoYXQgdGhlIG9yaWdpbmFs
Q2FzZXNUb0FkZCBkb2Vzbid0IGNvbnRhaW4gZHVwbGljYXRlcy4KLSAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOworICAgIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdp
bmFsQ2FzZXNUb0FkZC5zaXplKCk7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOworICAgICAg
ICBhdXRvIG15Q2FzZSA9IFdURk1vdmUob3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKIAogICAgICAg
ICAvLyBBZGQgaXQgb25seSBpZiBpdCBpcyBub3QgcmVwbGFjZWQgYnkgdGhlIHN1YnNlcXVlbnQg
Y2FzZXMgaW4gdGhlIGxpc3QuCiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTM0Niw5
ICszNDksOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRD
YXNlcygKIH0KIAogQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRk
Q2FzZSgKLSAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFJlZjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCiB7Ci0g
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7Cisg
ICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CiAgICAgbmV3QWNj
ZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3QWNjZXNzKSk7CiAgICAgcmV0dXJuIGFkZENhc2VzKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgc3R1YkluZm8sIFdURk1vdmUobmV3QWNjZXNzZXMpKTsKIH0K
QEAgLTQ0MCw3ICs0NDMsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNj
ZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIHVuc2lnbmVk
IHNyY0luZGV4ID0gMDsKICAgICB1bnNpZ25lZCBkc3RJbmRleCA9IDA7CiAgICAgd2hpbGUgKHNy
Y0luZGV4IDwgbV9saXN0LnNpemUoKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7CisgICAgICAgIFJl
ZlB0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYXNlIGhhZCBiZWVuIGdlbmVyYXRlZCwgdGhl
biB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGluIG1fbGlzdCBpbiBjYXNlIHdlCiAgICAg
ICAgIC8vIGZhaWwgdG8gcmVnZW5lcmF0ZS4gVGhhdCBjYXNlIG1heSBoYXZlIGRhdGEgc3RydWN0
dXJlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBjb2RlIHRoYXQgaXQKQEAgLTQ5MSw2ICs0OTQsOCBA
QCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNv
bnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIg
IT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlz
VGFnR1BSKTsKICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIp
OwogCiAgICAgc3RhdGUuc2NyYXRjaEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIo
KTsKIApAQCAtNTAwLDEyICs1MDUsNiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3Jw
aGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGpp
dChjb2RlQmxvY2spOwotICAgIHN0YXRlLmppdCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KLSAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0
YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9
IGZhbHNlOwogCkBAIC01MjEsMTIgKzUyMCwzMCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRh
dGFMb2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAK
KworICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7CisgICAgYm9vbCBkb2VzSlNHZXR0ZXJTZXR0
ZXJDYWxscyA9IGZhbHNlOworICAgIGJvb2wgY2FuQmVTaGFyZWQgPSB0cnVlOworICAgIFZlY3Rv
cjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4+IGtleXMoY2FzZXMuc2l6ZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9y
IChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7CisgICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9l
c0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOworICAgICAgICBpZiAoZW50cnktPnR5cGUoKSA9PSBB
Y2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIp
CisgICAgICAgICAgICBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IHRydWU7CisgICAgICAgIGtl
eXNbaW5kZXhdID0gZW50cnk7CisgICAgICAgICsraW5kZXg7CisgICAgfQorICAgIHN0YXRlLm1f
ZG9lc0NhbGxzID0gZG9lc0NhbGxzOworICAgIHN0YXRlLm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHMgPSBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxsczsKKyAgICAvLyBHZXR0ZXIgLyBTZXR0ZXIgcmVs
aWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2ggaXMgdGllZCB0byB0aGUgbGlu
a2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVhYmxlLgorICAgIGlm
IChkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykKKyAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsK
KwogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UncmUgY29udmluY2VkIHRoYXQgJ2Nhc2VzJyBjb250
YWlucyB0aGUgY2FzZXMgdGhhdCB3ZSB3YW50IHRvIEpJVCBub3cgYW5kIHdlCiAgICAgLy8gd29u
J3QgY2hhbmdlIHRoYXQgc2V0IGFueW1vcmUuCiAgICAgCiAgICAgYm9vbCBhbGxHdWFyZGVkQnlT
dHJ1Y3R1cmVDaGVjayA9IHRydWU7Ci0gICAgYm9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBm
YWxzZTsKICAgICBib29sIG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9v
bCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3ltYm9s
UHJvcGVydHlDaGVjayA9IGZhbHNlOwpAQCAtNTQyLDEwICs1NTksNzAgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25j
dXJyZW50SlNMb2MKICAgICAgICAgfQogICAgICAgICBjb21taXQobG9ja2VyLCB2bSwgc3RhdGUu
d2F0Y2hwb2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sICpuZXdDYXNlKTsKICAgICAgICAgYWxs
R3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgJj0gbmV3Q2FzZS0+Z3VhcmRlZEJ5U3RydWN0dXJlQ2hl
Y2soc3R1YkluZm8pOwotICAgICAgICBpZiAobmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6
OkdldHRlciB8fCBuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQotICAgICAg
ICAgICAgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5ld0Nhc2Ut
PnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAg
fQorICAgIGlmIChuZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgfHwgbmVlZHNTdHJpbmdQcm9wZXJ0
eUNoZWNrIHx8IG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrKQorICAgICAgICBjYW5CZVNoYXJlZCA9
IGZhbHNlOworCisgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViOworICAgIGlmIChjb2Rl
QmxvY2stPnVzZVNoYXJlZElDKCkgJiYgY2FuQmVTaGFyZWQpIHsKKyAgICAgICAgU2hhcmVkSklU
U3R1YlNldDo6U2VhcmNoZXIgc2VhcmNoZXIgeworICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQ
UiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAgICAgICAgICAgc3R1YkluZm8u
cmVncy50aGlzR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwKKyAgICAg
ICAgICAgIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBrZXlzCisgICAgICAg
IH07CisgICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJjaGVyKTsK
KyAgICB9IGVsc2UKKyAgICAgICAga2V5cyA9IHsgfTsKKworICAgIGF1dG8gZmluaXNoQ29kZUdl
bmVyYXRpb24gPSBbJl0oUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAg
bV9zdHViUm91dGluZSA9IFdURk1vdmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBX
VEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJl
bmNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0
b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsK
KyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAg
ICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7
CisKKyAgICAgICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJp
bmtUb0ZpdCgpOworCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0
S2luZDsKKyAgICAgICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFy
aWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0
S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6
OkdlbmVyYXRlZE5ld0NvZGU7CisKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQocmVzdWx0S2luZCwgbV9zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfTsKKwor
ICAgIGlmIChzdHViKSB7CisgICAgICAgIGZvciAoYXV0byYgYWNjZXNzQ2FzZSA6IGNhc2VzKQor
ICAgICAgICAgICAgYWNjZXNzQ2FzZS0+Y29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1c2Uoc3Rh
dGUsIGNvZGVCbG9jayk7CisgICAgICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZN
b3ZlKHN0dWIpKTsKICAgICB9CiAKKyAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7Cisg
ICAgc3RhdGUuaml0ID0gJmppdDsKKworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkp
IHsKKyAgICAgICAgaWYgKHN0YXRlLm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMpIHsKKyAgICAg
ICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgc3RhY2stcG9pbnRlciBpcyB0aGUg
ZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0gaWYgd2UgYXJlIG5vdCBoYXZpbmcg
SlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNrLXBvaW50ZXIgaXMKKyAgICAgICAg
ICAgIC8vIGNhbGxlZS1zYXZlIHJlZ2lzdGVyIGFuZCBpdCBpcyBrZXB0IGJleW9uZCBjYWxscy4g
SG93ZXZlciwgb3VyIEpTIGV4ZWN1dGFibGUgY2FsbCBkb2VzIG5vdCBzYXZlIHN0YWNrLXBvaW50
ZXIuIFNvIHdlIGFyZSBhZGp1c3Rpbmcgc3RhY2stcG9pbnRlciBhZnRlcgorICAgICAgICAgICAg
Ly8gSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzLiBCdXQgdGhpcyBjb3VsZCBiZSBkaWZmZXJlbnQg
ZnJvbSB0aGUgaW5pdGlhbCBzdGFjay1wb2ludGVyLCBhbmQgbWFrZXMgUEFDIHRhZ2dpbmcgYnJv
a2VuLgorICAgICAgICAgICAgLy8gVG8gZW5zdXJlIFBBQy10YWdnaW5nIHdvcmssIHdlIGZpcnN0
IGFkanVzdCBzdGFjay1wb2ludGVyIHRvIHRoZSBhcHByb3ByaWF0ZSBvbmUuCisgICAgICAgICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+c3RhY2tQ
b2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIH0KKworICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJl
Z2lzdGVyU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNC
eVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6
Tm9FeHRyYVNwYWNlKTsKKyAgICAKICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIFRoaXMgaXMgc3VwZXIgdW5saWtlbHksIGJ1dCB3ZSBtYWtlIGl0IGxlZ2FsIGFueXdheS4K
ICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtNjkw
LDcgKzc2Nyw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMgPSBudWxscHRyOwogICAgIERpc3Bvc2Fi
bGVDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZzsKLSAgICBp
ZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGhhc0pTR2V0
dGVyU2V0dGVyQ2FsbCkgeworICAgIGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lm
RXhjZXB0aW9uKCkgJiYgZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMpIHsKICAgICAgICAgLy8gRW1p
dCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvZGUg
aXMgb25seSByZWFjaGFibGUgd2hlbiBkb2luZyBnZW5lcmljVW53aW5kIGZyb20gYSBwdXJlIEpT
IGdldHRlci9zZXR0ZXIgLgogICAgICAgICAvLyBOb3RlIGFsc28gdGhhdCB0aGlzIGlzIG5vdCBy
ZWFjaGFibGUgZnJvbSBjdXN0b20gZ2V0dGVyL3NldHRlci4gQ3VzdG9tIGdldHRlci9zZXR0ZXJz
IHdpbGwgaGF2ZSAKQEAgLTczMCw2ICs4MDcsMTUgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICAgICAgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nID0gc3RhdGUuY2FsbFNp
dGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICAgfQogCisgICAgaWYgKGNvZGVCbG9j
ay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAg
IC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHku
CisgICAgICAgIC8vIFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRo
b3VnaCB0aGlzIHRodW5rIGlzIGNhbGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdGFpbCBjYWxsIHRvIHRoZSB0aHVuayB3aGljaCBjYWxscyB0aGUgc2xvdyBw
YXRoIGZ1bmN0aW9uLgorICAgICAgICAvLyBBbmQgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBJQyBzbG93
LXBhdGggZ2VuZXJhdGlvbiBpbiBCYXNlbGluZUpJVC4KKyAgICAgICAgaml0LmZhckp1bXAoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKSwgSklUU3R1YlJvdXRpbmVQdHJU
YWcpOworICAgIH0KKwogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7
CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBpZiAo
UG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKQEAgLTczOSw5ICs4MjUsMTIgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJu
YWxQdHJUYWc+IHN1Y2Nlc3NMYWJlbCA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKIAotICAgIGxp
bmtCdWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwpOwotCi0gICAgbGlua0J1
ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAg
aWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgQVNTRVJUKHN0YXRlLnN1Y2Nl
c3MuZW1wdHkoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5z
dWNjZXNzLCBzdWNjZXNzTGFiZWwpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKFBv
bHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coRnVsbENv
ZGVPcmlnaW4oY29kZUJsb2NrLCBzdHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBw
b2x5bW9ycGhpYyBhY2Nlc3Mgc3R1YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKQEAg
LTc0OSwyOSArODM4LDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nl
c3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBjb2RlID0gRklOQUxJWkVfQ09ERV9G
T1IoCiAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcs
CiAgICAgICAgICIlcyIsIHRvQ1N0cmluZygiQWNjZXNzIHN0dWIgZm9yICIsICpjb2RlQmxvY2ss
ICIgIiwgc3R1YkluZm8uY29kZU9yaWdpbiwgIiB3aXRoIHJldHVybiBwb2ludCAiLCBzdWNjZXNz
TGFiZWwsICI6ICIsIGxpc3REdW1wKGNhc2VzKSkuZGF0YSgpKTsKLQotICAgIGJvb2wgZG9lc0Nh
bGxzID0gZmFsc2U7Ci0gICAgVmVjdG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOwotICAgIGZvciAo
YXV0byYgZW50cnkgOiBjYXNlcykKLSAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2Fs
bHModm0sICZjZWxsc1RvTWFyayk7Ci0gICAgCi0gICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmss
IFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRp
b25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICBtX3dh
dGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53
ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhl
ZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNl
cykpOwotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAg
ICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKLSAgICBt
X2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKLSAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKLSAgICAK
LSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7Ci0gICAgaWYgKG1f
bGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2Vu
ZXJhdGVkRmluYWxDb2RlKQotICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJl
c3VsdDo6R2VuZXJhdGVkRmluYWxDb2RlOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0S2luZCA9
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7Ci0gICAgCi0gICAgcmV0
dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgY29kZS5jb2RlKCkpOworICAg
IHN0dWIgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCB2bSwgY29k
ZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJ
bmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhG
b3JFeGNlcHRpb25IYW5kbGluZyk7CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KSB7CisgICAgICAgIGlmIChjYW5CZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1fc2hhcmVkSklU
U3R1YnMtPmFkZChTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwg
c3R1YkluZm8udmFsdWVHUFIsIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHVi
SW5mb0dQUiwgc3R1YkluZm8udXNlZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOworICAgIH0KKwor
ICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKIH0KIAogdm9p
ZCBQb2x5bW9ycGhpY0FjY2Vzczo6YWJvdXRUb0RpZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZkY2M5MTU0
NzRiM2YxZWViN2Y3MjVlNmFiMzRhZWNiNDEuLjBmYWJlN2ZhMjNmNzFmODA0NDI0MDI4YjEyMThk
YjgxNmM2YTQ4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5bW9ycGhp
Y0FjY2VzcyB7CiAgICAgLy8gV2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCksIHRoaXMg
d2lsbCBsZWF2ZSB0aGUgb2xkIHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0cnkKICAg
ICAvLyB0byBjYWxsIHRoaXMgbWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGljQWNjZXNz
IGluc3RhbmNlLgogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0gICAgICAg
IGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPik7Cisg
ICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7CiAKICAg
ICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgUmVmPEFj
Y2Vzc0Nhc2U+KTsKICAgICAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVjdCosIENv
ZGVCbG9jayosIEVDTUFNb2RlLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAtMTc5LDcg
KzE3OSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBmcmllbmQgY2xhc3MgQ29k
ZUJsb2NrOwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlOwogICAgIAot
ICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gTGlzdFR5
cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsK
ICAgICAKICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvPiYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwKQEAgLTE5Niw2ICsxOTYsOCBA
QCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAKICAg
ICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNlKQor
ICAgICAgICAsIG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lz
dGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRz
VG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxh
dGVkQ2FsbFNpdGVJbmRleChmYWxzZSkKQEAgLTIyNSw4ICsyMjcsMTAgQEAgc3RydWN0IEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1
Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+PiB3ZWFrUmVmZXJlbmNlczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5m
b3M7CisgICAgYm9vbCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzIDogMTsKKyAgICBib29sIG1f
ZG9lc0NhbGxzIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9j
ayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAKICAgICB2b2lkIHJlc3RvcmVT
Y3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgsNyArMjUyLDcgQEAgc3RydWN0
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGNhbGN1bGF0
ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKIAogICAgIFNwaWxs
U3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJT
ZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1Rv
U3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBTcGlsbFN0YXRlIHByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVnaXN0
ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9t
U3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBTcGlsbFN0YXRlJik7CiAgICAg
dm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3QgU3BpbGxTdGF0
ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggY2MyOTczYzk0ZTExNjJhMzg5ZTJlZjUwZWVhNmEzYjM0ZTc1ZmE5ZC4uNGJmNzgwZWQzMTc2
NmVkZTZiY2M1NjA0NDZhNTA3OWFjYmNjMTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcApAQCAtMzgsMTkgKzM4
LDE5IEBAIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2VzCiAgICAgbV92aWFQcm94eSA9IHZpYVByb3h5
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQs
IGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3NDYXNl
PiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRk
aXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vz
c0NoYWluKQogewogICAgIEFTU0VSVCh0eXBlID09IExvYWQgfHwgdHlwZSA9PSBNaXNzIHx8IHR5
cGUgPT0gR2V0R2V0dGVyIHx8IHR5cGUgPT0gUmVwbGFjZSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5
cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5
LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBp
ZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRk
aXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogUHJveHlh
YmxlQWNjZXNzQ2FzZTo6flByb3h5YWJsZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVm
PEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJveHlhYmxlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBQcm94eWFibGVB
Y2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFByb3h5
YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKaW5kZXggZGMzOWUyNmNhMmY0YjJiN2FiYTEyYjVhNTVm
MzI2NjQ0MTBlZmE1Yy4uZTg0Mzg1Y2E3NWM5Zjc1MmU4ZThlMTZjZGRlMGFiY2FjN2JjYzRkMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vz
c0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgUHJveHlhYmxlQWNjZXNzQ2FzZSA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIAogICAgIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9uYWxTZXQuZ2V0KCk7IH0KIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwg
QWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0KCksCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0Nl
bGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3Ry
dWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgYm9vbCB2aWFQcm94eSA9IGZhbHNlLCBXYXRjaHBv
aW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29t
bWFQcmludGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB+UHJveHlhYmxlQWNjZXNzQ2FzZSgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCBjOGU2YmM2M2EzNmEzOWI4NDU4YjkwMGNiMmE1MmVmNGYxNTExMjBmLi44
ZGY1ODFlNDY0ZjBlMDJlMzQ3NzU1ZmM3OTBkMjdjYjg5NDI1YTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTUy
LDYgKzUyLDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAgICAsIHByb3BlcnR5SXNJbnQz
MihmYWxzZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2UpCiB7CisgICAgcmVncy50aGlz
R1BSID0gSW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1cmVT
dHViSW5mbygpCkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWJv
dXRUb0RpZSgpCiB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86
OmFkZEFjY2Vzc0Nhc2UoCi0gICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2Nr
ZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBF
Q01BTW9kZSBlY21hTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudCwgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCisgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyJiBsb2NrZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBFQ01BTW9kZSBlY21hTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudCwg
UmVmUHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogCkBAIC0xNTUsNyArMTU2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBy
ZXN1bHQ7CiAgICAgICAgIAogICAgICAgICBpZiAobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpT
dHViKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwg
Y29kZUJsb2NrLCAqdGhpcywgV1RGTW92ZShhY2Nlc3NDYXNlKSk7CisgICAgICAgICAgICByZXN1
bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgYWNjZXNz
Q2FzZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKFN0
cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSGFkIHN0dWIsIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTE3MCw5ICsxNzEsOSBA
QCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3Jw
aGljQWNjZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
LCAyPiBhY2Nlc3NDYXNlczsKKyAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4s
IDI+IGFjY2Vzc0Nhc2VzOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gcHJldmlvdXNDYXNlID0gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0
dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7CisgICAgICAgICAgICBhdXRvIHBy
ZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJs
b2NrLCBpZGVudCwgKnRoaXMpOwogICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FzZSkKICAgICAg
ICAgICAgICAgICBhY2Nlc3NDYXNlcy5hcHBlbmQoV1RGTW92ZShwcmV2aW91c0Nhc2UpKTsKICAg
ICAgICAgICAgIApAQCAtMjc2LDcgKzI3Nyw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJl
c2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjCiAg
ICAgICAgIHJlc2V0SW5CeUlEKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6Ci0gICAgICAgIHJlc2V0SW5zdGFuY2VPZigq
dGhpcyk7CisgICAgICAgIHJlc2V0SW5zdGFuY2VPZihjb2RlQmxvY2ssICp0aGlzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgogICAgICAgICByZXNl
dERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggODgy
NTY4YzI2ZWFkNjJlNDBlYWU3ZjI3MDgwZjA5MjFlZGVjNzY0NS4uOTVlN2RiYjg2MzhhYjkyZjc3
MTMzODcxZjZmYTQ2ZDkzNWZjZmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgU3Ry
dWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5SWRSZXBsYWNlKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1
Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGlu
aXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNzQ2FzZShj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNzQ2FzZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVD
TUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2FzZT4pOwogCiAgICAg
dm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKik7CiAK
QEAgLTM0NCwxOSArMzQ0LDMwIEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKIHB1YmxpYzoK
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc3RhcnQ7IC8vIFRo
aXMgaXMgZWl0aGVyIHRoZSBzdGFydCBvZiB0aGUgaW5saW5lIElDIGZvciAqYnlJZCBjYWNoZXMu
IG9yIHRoZSBsb2NhdGlvbiBvZiBwYXRjaGFibGUganVtcCBmb3IgJ2luc3RhbmNlb2YnIGNhY2hl
cy4KICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRpb247
Ci0gICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aENhbGxMb2Nh
dGlvbjsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc2xvd1Bh
dGhTdGFydExvY2F0aW9uOwogCisgICAgdW5pb24geworICAgICAgICBDb2RlTG9jYXRpb25DYWxs
PEpTSW50ZXJuYWxQdHJUYWc+IG1fc2xvd1BhdGhDYWxsTG9jYXRpb247CisgICAgICAgIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3BlcmF0aW9uOworICAgIH07CisKKyAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fY29kZVB0cjsKKwor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlUHRyKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX2NvZGVQdHIpOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgc2xvd1BhdGhTdGFydExvY2F0aW9uKTsgfQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisKICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzOwogCi0gICAgR1BSUmVnIGJhc2VHUFI7Ci0gICAgR1BSUmVn
IHZhbHVlR1BSOworICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQ
UlJlZyB2YWx1ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICB1bmlvbiB7CiAgICAgICAgIEdQ
UlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwogICAgICAgICBHUFJS
ZWcgcHJvcGVydHlHUFI7CiAgICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAgICB9IHJlZ3M7Cisg
ICAgR1BSUmVnIG1fc3R1YkluZm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7CiAgICAgLy8gRklYTUU6IFszMi1iaXRz
XSBDaGVjayBpZiBTdHJ1Y3R1cmVTdHViSW5mbzo6YmFzZVRhZ0dQUiBpcyB1c2VkIHNvbWV3aGVy
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA4YWRl
YWQ1MGY0NTU2Y2ZmMjVlN2M3Yzk5NzgzMDRkNDE3NzA5NzQ3Li40NzY1NGE3NmRiNWExMTNmMGZj
YjZiZjY4YTNkMjJhY2JjNmEwMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCkBAIC0xNTQsNiArMTU0LDExIEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVi
bGljIENDYWxsSGVscGVycyB7CiAgICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVjb3Jk
KGZ1bmN0aW9uQ2FsbCwgZnVuY3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsK
ICAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBjYWxsKGFkZHJlc3MsIE9wZXJhdGlvblB0clRhZyk7CisgICAg
fQogICAgIAogICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDk4MWU4NmNkN2RkYjAx
Y2E0OTU0M2I0ZTUzNzYwMDFiZTgxNjAxMjYuLjI5YWQ4NmVjZjRmMzQxYTFiMjZmZDE5NDUxYTBm
MGQ1MTg1OGVkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xv
d1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmgKQEAgLTE4OCw2ICsxODgsOCBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kQXJn
dW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJh
dAogICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKIH07CiAKKworCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFt
ZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiBpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLApAQCAtMjYzLDYgKzI2
NSw2NyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aE1vdmUoCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkp
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBl
LCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitjbGFzcyBDYWxs
UmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxs
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+IHsKK3B1YmxpYzoKKyAgICBD
YWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRvcigKKyAgICAgICAgSnVtcFR5
cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJh
dGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICAgICAgU3BpbGxSZWdpc3Rl
cnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwg
UmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogQ2Fs
bFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRUeXBlPihmcm9tLCBqaXQsIHNwaWxs
TW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKKyAgICAgICAgLCBtX3N0dWJJbmZvR1BSKHN0dWJJ
bmZvR1BSKQorICAgICAgICAsIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKHNsb3dQYXRoT3Bl
cmF0aW9uQWRkcmVzcykKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAs
IG1fYXJndW1lbnRzKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAg
ICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAg
IHRlbXBsYXRlPHNpemVfdC4uLiBBcmd1bWVudHNJbmRleD4KKyAgICB2b2lkIHVucGFja0FuZEdl
bmVyYXRlKFNwZWN1bGF0aXZlSklUKiBqaXQsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRz
SW5kZXguLi4+KQorICAgIHsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpOworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOworICAgICAgICBtX3N0
dWJJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAgICBqaXQtPm1faml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZv
R1BSKTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVzdWx0VHlwZSwgTm9S
ZXN1bHRUYWc+Ojp2YWx1ZSkKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlv
blR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBzdGQ6OmdldDxBcmd1bWVudHNJbmRl
eD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaml0LT5jYWxs
T3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGV4dHJh
Y3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJbmRleD4obV9hcmd1
bWVudHMpLi4uKTsKKyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0KTsKKyAgICB9CisKKyAgICB2
b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgZmluYWwKKyAgICB7Cisg
ICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0
ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2YWx1ZT4oKSk7CisgICAg
fQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0aW9uVHlwZSBtX2Z1bmN0aW9u
OworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKKyAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307CisKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1w
VHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1
bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50
cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFy
Z3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0
VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5mbywgc3R1YkluZm9HUFIsIHNs
b3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQs
IHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUs
IHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4g
QXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlv
biwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKK3sKKyAg
ICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHViSW5mbywgc3R1YkluZm9HUFIs
IHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0LCBhcmd1bWVudHMuLi4pOwor
fQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEQoREZHX0pJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhmOC4uMDVhZDc5Y2E2
OWY2ZDgwYjg5ZTA3NWU2ODI4NGE2MjZkMzRhYmQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwMjYsMjQgKzEwMjYsMzYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsK
ICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHVi
SW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
YmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9
IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVn
cyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsK
IAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3Ms
IHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1
bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1Nw
aWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIE9wdGlvbmFs
PEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAg
c3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDUxLDcgKzEwNjMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJy
YW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBz
dHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9T
cGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTA2NywyNyArMTA3OSwzOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHsKICAg
ICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTog
eworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7
Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisK
KyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0
dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVy
OjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGlj
aXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogewor
ICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2Uo
KTsKQEAgLTEwOTYsNyArMTEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3Mp
OwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVn
cywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250
U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTExMSwxNCArMTEzNSwx
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxl
dGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBz
bG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOwpAQCAtMTEyOCwy
MCArMTE1NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2Rl
KiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJl
Z2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAg
fQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRoLmdldCgp
KTsKQEAgLTExNzAsMjIgKzEyMTQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURl
bGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVC
eVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLQog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIo
KSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBr
ZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBKU1ZhbHVlUmVncyBrZXlS
ZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsK
IAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOworCiAgICAgICAgIGlm
IChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQogICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVncykpOwogCkBAIC0x
MTk0LDIwICsxMjQzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZh
bChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+
dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
a2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5
UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwor
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0g
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlW
YWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjM2LDkgKzEzMDAsMTUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0x
MjQ4LDE0ICsxMzE4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9k
ZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNp
dGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4s
IG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAg
ICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCi0g
ICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5z
dHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1Nw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAg
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
CkBAIC0zNTYxLDkgKzM2NDIsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
aXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKIHsKICAgICBE
RkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gR2V0UHJpdmF0ZU5h
bWUpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9ncmFwaC5jaGlsZChu
b2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxhdGVTeW1ib2wobV9n
cmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQorICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgc3BlY3VsYXRlU3ltYm9s
KG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOworCiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2pp
dC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVk
ZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTM1NzQsMTQgKzM2NjUsMjAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9k
ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoYmFzZSkpOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBiYXNlLCBwcm9wZXJ0
eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpE
RkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwg
dXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3VsdFJlZ3MsIHN0dWJJ
bmZvR1BSKTsKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkp
OwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1dG8gYmFzZSkgeworICAgIGF1
dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkgeworICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgcmV0dXJu
IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdl
dFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAgICAgICAgcmVzdWx0LnJlZ3Mo
KSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAgLTM1ODksOCArMzY4Niw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5v
ZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93bkNlbGwKLSAgICAgICAgPyBt
YWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQUigp
KSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOworICAgICAgICA/IG1ha2VTbG93
UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCisg
ICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAgICAgbV9qaXQuYWRkR2V0QnlW
YWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92
ZShzbG93UGF0aCkpOwpAQCAtMzYwMiwyOCArMzY5OSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNoICht
X2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogewor
ICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOwogICAgICAg
ICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBE
YXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRV
c2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAg
ICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdw
cigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1Zh
bHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKyAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1
bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxs
LCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgYnJl
YWs7CkBAIC0zNzIyLDI5ICszODMxLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisKKyAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hl
Y2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAgICAgLy8gdG8gY2hl
Y2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5k
KCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgY2FjaGVk
UHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwg
RUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKKyAg
ICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5k
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5m
b0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3Mg
PSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVl
LmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBicmFuZEdQUik7
CkBAIC0zNzU4LDE2ICszODc4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVj
a1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAg
ICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAg
ICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpLCBzdHViSW5m
b0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJy
YW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
T3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7Cisg
ICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM3
NzgsOSArMzkwNiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRl
QnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2YXRl
QnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UpOworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIGJyYW5kR1BSID0gYnJh
bmRWYWx1ZS5ncHIoKTsKIApAQCAtMzc5MiwxNiArMzkyNiwyNCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAKICAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
cmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgIGdlbi5z
dHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1
bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRp
b25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfQogCiAg
ICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5MTksMjIgKzQw
NjEsMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNl
KE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5v
ZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVn
cywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQ
UiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywg
SlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBt
X2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAogICAgIEpJVElu
c3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQ
UiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2Fk
R1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
IHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQ
UigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIs
IHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlz
VHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwotICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChz
bG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHByb3RvdHlwZVJlZ3MpOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
SW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdz
KTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0z
OTQ1LDYgKzQwOTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihO
b2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgCkBAIC0zOTUyLDEzICs0MTAxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAg
ICAgIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVl
LmdwcigpOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcHJvdG90eXBlLmdwcigpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9
IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKLSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQ
UiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOworICAgICAgICBjb21waWxl
SW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJl
Z3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2Ny
YXRjaDJHUFIpOwogICAgICAgICAKICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzk2OCwxMiArNDEyMiwxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgIERGR19B
U1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIAorICAgIE9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BS
ID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2
YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90
b3R5cGUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTM5ODksNyArNDE0OSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBl
UmVncyk7CiAgICAgCi0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJl
Z3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywg
c2xvd0Nhc2UpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZh
bGlkR1BSUmVnLCBzbG93Q2FzZSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAg
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEzMDE5LDQ2ICsxMzE3
OSw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBu
b2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5v
ZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0
dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdw
cigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBu
b2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAg
IGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1
dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAo
KSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0g
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3RE
aXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNt
YU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAot
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGly
ZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2Rl
KCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDY5MCwxOCArMTQ4NjgsMjAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAg
bm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
dXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwg
RUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGls
bFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3Rl
cnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3Bp
bGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUg
c3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3Rl
cnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodmFsdWVS
ZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9
CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2Vu
ZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVh
bS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlm
aWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVn
cywKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwKICAgICAg
ICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgobV9qaXQpOwpAQCAtMTQ3MTEsOSArMTQ4OTEsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBK
U1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgYXV0byBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5j
dGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVS
ZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmll
ci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsK
KyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQ
dXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdU
Rk1vdmUoc2xvd1BhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCA1MmUxZThjZDUyYTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYz
Li44YzMyOTM2MDgwMWMzOWVhNzViZGQ0ZjgzZTYyNDVlOTEyMjI1ZWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MTksMTYgKzcxOSwx
NiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja0RldGFj
aGVkKE5vZGUqKTsKIAotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5
cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwp
OworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwg
QWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVn
IHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxs
UmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENv
ZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxl
cjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lz
dGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQ
UiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21w
aWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkp
OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BS
UmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01v
ZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRU
YWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25z
dCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1
bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BS
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3Rl
cnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBH
UFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVz
dWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRo
VGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNv
bXBpbGVEZWxldGVCeUlkKE5vZGUqKTsKQEAgLTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBTcGVjdWxh
dGl2ZUpJVCB7CiAgICAgdm9pZCBnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9k
ZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RF
cShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVn
IHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpK
dW1wKCkpOworICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1
ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQ
VCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gy
R1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwog
ICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3Rh
bmNlT2ZDdXN0b20oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNl
KE5vZGUqKTsKQEAgLTk0OSw2ICs5NDksMjYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgRnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwKKyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24o
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdz
Li4uIGFyZ3MpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2Fs
bFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRk
cmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAg
ICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9p
ZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBBcmdz
Li4uIGFyZ3MpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2Fs
bChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZz
ZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0aW9uLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBD
b2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVyLgpAQCAtOTg4LDYgKzEwMDgsMTMgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlv
bik7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAg
ICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgICAgIG1faml0LmFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgfQorCiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgYXBwZW5kT3BlcmF0aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFs
Q2FsbCgpOwpAQCAtMTAxMCw2ICsxMDM3LDI4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0
KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
cmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEdQUlJlZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKKyAg
ICB7CisgICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIG1faml0LnNldHVwUmVz
dWx0cyhyZXN1bHQxLCByZXN1bHQyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGxTZXRS
ZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1
bHQoYWRkcmVzcywgcmVzdWx0UmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICBhcHBlbmRDYWxs
U2V0UmVzdWx0KGFkZHJlc3MsIHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRSZWdzLnRh
Z0dQUigpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENh
bGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwg
R1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsKGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGI1N2MzN2FhMDVkZDQ5MDkxYzdmYTM2
NTBmOGJiZmY3NTIzN2Y2MzkuLmMxYjVkMDYxYzNjNWE0YTY1MDZjYjdjNjBlZTI5NjdmYzIxNmE2
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtMTY4LDE1ICsxNjgsMTYgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcmIHRhZ0dQUiwgR1BSUmVnJiBwYXlsb2FkR1BS
LAogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3Jp
Z2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3Bp
bGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRC
eUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdH
UFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1v
ZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLnRhZ0dQUigpLCBiYXNl
LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBzdHVi
SW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOwogfQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAotICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BS
UmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsCisgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2Fk
R1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVn
IHN0dWJJbmZvR1BSLAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IEFjY2Vzc1R5cGUgdHlwZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oc3R1YkluZm9HUFIpOwogICAg
IC8vIFRoaXMgaXMgYSBoYWNreSBmaXggZm9yIHdoZW4gdGhlIHJlZ2lzdGVyIGFsbG9jYXRvciBk
ZWNpZGVzIHRvIGFsaWFzIHRoZSBiYXNlIHBheWxvYWQgd2l0aCB0aGUgcmVzdWx0IHRhZy4gVGhp
cyBvbmx5IGhhcHBlbnMKICAgICAvLyBpbiB0aGUgY2FzZSBvZiBHZXRCeUlkRmx1c2gvR2V0QnlJ
ZERpcmVjdEZsdXNoLCB3aGljaCBoYXMgYSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSByZWdpc3RlciBh
bGxvY2F0aW9uIHN0b3J5IGFscmVhZHkgc28gd2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0bwogICAg
IC8vIHRyaXAgb3ZlciBvbmUgbW92ZSBpbnN0cnVjdGlvbi4KQEAgLTIwMCw4ICsyMDEsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIAogICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFu
ZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCB0eXBlKTsKKyAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUs
IGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSKSwgSW52YWxpZEdQUlJlZywgdHlwZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOwogICAgIApAQCAtMjI4LDE1ICsyMjksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkR2V0QnlJZCgKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKAotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJP
ck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0
aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIsCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwg
R1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXls
b2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BS
UmVnIHN0dWJJbmZvR1BSLAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKKyAgICBVTlVTRURf
UEFSQU0oc3R1YkluZm9HUFIpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1f
aml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5l
ZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdz
KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJP
ck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxv
YWRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpT
VmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKGJh
c2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwg
dGhpc1BheWxvYWRHUFIpLCBJbnZhbGlkR1BSUmVnKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7CiAgICAgCkBAIC0yMzQxLDggKzIzNDMsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MudGFnR1BSKCkpKTsKIAogICAgICAg
ICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVz
ZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVz
dWx0UmVncyk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRG
R0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJl
Z3MsIEludmFsaWRHUFJSZWcpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAg
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0zNDA1
LDcgKzM0MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZhbGlkR1BSUmVnLCB0aGlzR1BS
LCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZhbGlkR1BSUmVnLCB0aGlzR1BSLCBy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIEludmFsaWRHUFJSZWcsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTM0MjUsNyArMzQyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoYmFzZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpKSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCB0aGlzVGFnR1BSLCB0aGlzUGF5
bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCB0
aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BS
LCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiOTExOGI2MmU4N2Q5
NzBhYzU0NjFmNjNiZDNjMzgwZmI4YjAxMjYwLi4zMzZiMWE5NWQyNDZlNzE5NGE3NzQxMDI2NTNj
MzI5ZDM0MzRmNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE0NywxMiArMTQ3LDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFj
Y2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9y
aWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5
cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIoKSwgcmVzdWx0
LmdwcigpLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CisgICAgY2Fj
aGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgc3R1YkluZm9HUFIs
IGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3Bp
bGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRH
UFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBt
X2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZO
ZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNl
ZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE2MCwyNiArMTYwLDM2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hl
ZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgog
ICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgICAgICBpZiAoc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZv
R1BSLCBmYWxzZSk7CiAgICAgfQogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhy
ZXN1bHRHUFIpLCB0eXBlKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRG
R0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisg
ICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHVi
SW5mb0dQUiwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1w
KCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGlt
aXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCi0gICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGFwcHJvcHJp
YXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZp
ZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5n
R2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRz
KCkpOworICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1w
TGlzdCYgc2xvd1BhdGhUYXJnZXQpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
V2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRo
aXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRo
VGFyZ2V0KQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdp
biwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRo
aXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE4NywyMCArMTk3LDMwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSCiAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldChy
ZXN1bHRHUFIsIGZhbHNlKTsKKyAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICAKICAg
ICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0g
ICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyh0aGlzR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpE
RkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAor
ICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNW
YWx1ZVJlZ3ModGhpc0dQUiksIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAg
ICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKLSAgICAgICAgRG9udFNwaWxs
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBp
ZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCisgICAgICAgICAg
ICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAg
ICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwg
aWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlk
V2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
V1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMjY4MSwxNiArMjcwMSwyMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKTsKLQorICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBwcm9wZXJ0eSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKKyAgICAgICAgICAg
IHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKwogICAg
ICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwog
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRl
QW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBt
X3N0cmVhbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0yNzAwLDggKzI3MjcsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUikpOwogCiAgICAgICAgICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3Mo
cmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JO
b2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAg
ICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBA
IC0yNzEyLDExICsyNzM5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKIAogICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
Ci0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIp
OworICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KQorICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aDsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBu
dWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVs
bHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAg
ICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5
ODQsOSArNDAxOSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENl
bGxVc2UpIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisK
KyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1Yklu
Zm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BS
ID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC0zOTk0LDE0ICs0MDM2LDIxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1
bXBMaXN0KCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBPcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpAQCAtNDAxMyw3ICs0MDYyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
bm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhiYXNl
R1BSKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
Q2VsbChKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5v
dENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBzdHViSW5mb0dQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IDgxNjdmYTNkMDUyYzEwYmRmMWI2ZjY0OTBjZTM1OTA3ZGFkOGJmMzUuLjJjODVkOTkzZGIyODRl
NGY3YjUwZTAwMTVjMDk3NjcyM2ViYmViZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTM5NzgsNiArMzk3OCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1
ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKIApAQCAtMzk5OSwxMCArNDAwMCwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICAgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5h
bWUsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVn
cyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCkBAIC00
MDE2LDEzICs0MDE4LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENl
bGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1
bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVz
dWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1
bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQx
MTAsNiArNDEyNCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywg
VmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBv
aW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtNDEzMCwxMCArNDE0NSwxMSBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFt
c1swXS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBicmFuZEdQUiA9IHBhcmFtc1sxXS5ncHIo
KTsKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsK
IAogICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAotICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LCBhY2Nlc3NUeXBlLAorICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCBzdHViSW5m
b0dQUik7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAg
ICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAtNDE1OSwxMyArNDE3NSwyNSBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAg
ICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUp
LCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFz
ZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQ
Uik7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgSW52YWxpZEdQUlJlZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwg
SW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENh
bGwpOwpAQCAtNDUxNiw2ICs0NTQ0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1i
ZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklY
TUU6IElmIHRoaXMgaXMgYSBQdXRCeUlkRmx1c2gsIHdlIG1pZ2h0IHdhbnQgdG8gbGF0ZS1jbG9i
YmVyIHZvbGF0aWxlIHJlZ2lzdGVycy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1Mjg0OApAQCAtNDUzOCwxMCArNDU2NywxMiBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIEpTIHNldHRlciBjYWxsIElDcyBnZW5l
cmF0ZWQgYnkgdGhlIFB1dEJ5SWQgSUMgd2lsbCBuZWVkIHRoaXMuCiAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNh
bGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkg
OiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8
SklUUHV0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0u
Z3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkp
LCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgc3R1YkluZm9HUFIsIEdQ
UkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAogICAgICAgICAgICAg
ICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVG
YXN0UGF0aChqaXQpOwpAQCAtNDU1MywxMiArNDU4NCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BS
UmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0u
Z3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2Vu
ZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJSZWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1Rv
KGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9y
dFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNTIzOSw2ICs1
MjgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAg
ICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBw
cmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTUyNTksMTAg
KzUzMDMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6OkdldEJ5VmFsLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5
R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAorICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwog
CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5n
ID0gcHJvcGVydHlJc1N0cmluZzsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZv
KCktPnByb3BlcnR5SXNJbnQzMiA9IHByb3BlcnR5SXNJbnQzMjsKQEAgLTUyODAsMTMgKzUzMjUs
MjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90
Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhK
dW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCByZXN1bHRHUFIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0
QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRy
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJl
Z2luLCBzbG93UGF0aENhbGwpOwpAQCAtNTgzNiw3ICs1ODkzLDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAyIDogMTsKIAog
ICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxl
ID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKQEAgLTU4NTYsOSArNTkxMywxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAg
ICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKTsKICAgICAg
ICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAg
ICAgIGF1dG8gc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgxKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsKLSAgICAgICAgICAgICAgICBBU1NF
UlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAg
IEFTU0VSVChiYXNlLmdwcigpICE9IHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIEFTU0VS
VChyZXR1cm5HUFIgIT0gc2NyYXRjaEdQUik7CiAKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CkBAIC01ODc0LDcgKzU5
MzMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBpZiBjb25z
dGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlLnJhd0Jp
dHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJdLmdwcigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IHBhcmFtc1syXS5ncHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkp
OwpAQCAtNTg4NCwxOSArNTk0MywyMCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNj
cmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIp
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFz
dFBhdGgoaml0KTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+
c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKIAogICAgICAgICAgICAgICAgIHBhcmFtcy5h
ZGRMYXRlUGF0aCgKQEAgLTU5MDUsMTIgKzU5NjUsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
IAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlv
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQp
OwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2Fs
bChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTIyNDIsOCArMTIzMTQsOCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0
ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1
ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJ
VCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
ZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0
aW9ucyhwYXRjaHBvaW50KTsKQEAgLTEyMjYwLDEwICsxMjMzMiwxMiBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNl
cHRpb25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogCisgICAgICAgICAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBh
cmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0
byBnZW5lcmF0b3IgPSBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpG
VExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFs
dWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJh
bXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTEyMjc0LDEyICsxMjM0OCwyNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJh
bXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlk
ZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5C
eUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwg
cGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCku
bGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTI0
ODYsNyArMTI1NzIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmRTb21lUmVnaXN0ZXIocHJvdG90eXBlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1
ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotICAgICAgICBwYXRj
aHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gMyA6IDI7CiAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBW
YWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICAKQEAgLTEy
NTAyLDYgKzEyNTg4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBH
UFJSZWcgcHJvdG90eXBlR1BSID0gcGFyYW1zWzJdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworICAgICAgICAgICAgICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJ
VCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDogSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZUp1bXA7CiAgICAgICAg
ICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkgewpAQCAtMTI1MjMsMTAgKzEyNjEwLDEyIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3Rv
dHlwZUdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3Vs
dEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsCiAg
ICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90b3R5cGVJc09iamVjdCk7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkp
OwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgK
QEAgLTEyNTM3LDEyICsxMjYyNiwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygm
aml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1Bh
dGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvR1BSLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90
eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmVz
dWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0
U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMzk4Niw2ICsx
NDA4Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRCeUlkRmx1c2gv
R2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5jZSBib29zdCBp
ZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxlIHJlZ2lzdGVy
cyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91Z2gsIHNpbmNl
IHRoZQpAQCAtMTQwMTQsMTAgKzE0MTE2LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0
ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52
YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdl
dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgdHlw
ZSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHN0
dWJJbmZvR1BSLCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVG
YXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9
IGppdC5sYWJlbCgpOwpAQCAtMTQwMzAsMTIgKzE0MTM0LDI0IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCku
bGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
c2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJh
bXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5n
cHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2Fs
bCk7CkBAIC0xNDA2MCw4ICsxNDE3Niw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlzVmFsdWUpOwogICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1i
ZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0K
ICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAg
UmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAg
ICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0x
NDA4MywxMCArMTQxOTksMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAg
ICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxl
LT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwog
CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVn
OworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSks
Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEpTVmFs
dWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpLCBzdHViSW5m
b0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0
KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwo
KTsKQEAgLTE0MDk5LDEyICsxNDIxNywyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVn
aW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
aWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRp
b25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1Rv
KGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9y
dFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4IDJhZGQ0OTRjNTMyYWFl
YThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFlNzkyNmM2YTA3MTgzNzMx
NTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRo
Q2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4OwogCiBTbG93UGF0aENhbGxD
b250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3Rl
cnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVn
aXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQs
IHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0
Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAgICwgbV9udW1BcmdzKG51
bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lzdGVyKQpAQCAtNjMsNiAr
NjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAogICAgIG1f
Y2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVudFJlZ2lzdGVycyk7CiAg
ICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIG1fY2FsbGlu
Z0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBp
ZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
bV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0
ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmlsdGVyKHVzZWRSZWdpc3Rl
cnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxpbmdDb252ZW50aW9uUmVn
aXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6flNsb3dQ
YXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxsQ29udGV4dDo6
a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgY2FsbFRh
cmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAgIHJldHVybiBTbG93UGF0
aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMs
IG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6
OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgbnVsbHB0ciwgbV9hcmd1
bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsKIH0KIAogU2xvd1BhdGhD
YWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwyMiBAQCBTbG93UGF0aENh
bGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xvd1BhdGhDYWxsIFNsb3dQ
YXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGNh
bGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtleVdpdGhUYXJnZXQoY2Fs
bFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQYXRoQ2FsbChtX2ppdC5j
YWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFkZExpbmtUYXNrKAorICAg
ICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0KKyAgICAgICAg
ICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCByZXN1bHQua2V5
KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0LmNhbGwoKSwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkpOworICAgICAgICB9KTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZv
ckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAg
aWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENh
bGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlmM2ZhODBjMTJhLi5kNmYy
ODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1NCwxNyBAQCBjbGFzcyBT
bG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhpbmd5IHRoYXQgd2lsbCBz
ZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0cyBhbmQgc3VjaC4KIGNs
YXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNsb3dQYXRoQ2FsbENvbnRl
eHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5zaWduZWQgbnVt
QXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0aENhbGxDb250ZXh0KFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51bUFyZ3Ms
IEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVy
KTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8gTk9URTogVGhlIGNhbGwg
dGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBsaW5rZWQgYnkgdGhlIEpJ
VCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHlv
dSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxs
IG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAogcHJpdmF0ZToKICAgICBT
bG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRoVGFyZ2V0KEND
YWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVnaXN0ZXJTZXQgbV9hcmd1
bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0
ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKIHsKICAg
ICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQg
Y29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEs
IHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVn
aXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgSW52
YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2b2lkKEFyZ3VtZW50VHlw
ZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29udGV4dC5tYWtlQ2FsbCh2
bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAgU2xvd1BhdGhDYWxsIGNh
bGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9u
KAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVs
cGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsCisgICAg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwgY2FsbDsKKyAgICB7Cisg
ICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNp
emVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDx2b2lkKEFyZ3Vt
ZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAgICAgICAgY2FsbCA9IGNv
bnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdH
UFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlvblRhcmdldCkK
KyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayh2
bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVu
dFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZtLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25U
YXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwK
KyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoY2FsbFNpdGVJbmRl
eCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24odm0sIHVzZWRS
ZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmd1
bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2lu
KFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlw
ZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0ZSYgc3RhdGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRhcmdl
dCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0LCBBcmd1bWVu
dFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9y
aWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sCisgICAg
ICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZU
TAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZjNjIwMzNhODM5MDhlNmZj
YzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3MmJlZjU1MTNlZmU1YWEz
OWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENh
bGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxs
S2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lzdGVycywgIiwg
b2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2ludGVyKG1fY2Fs
bFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3RlcnMgPSAiLCBt
X2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMg
PSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBpbmRpcmVj
dE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2lu
dGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3Rl
cnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQ
YXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxL
ZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEzODQyYmRkMzNkLi4wY2U2
MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUxLDExICs1MSwxMiBAQCBj
bGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSgKICAgICAg
ICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBj
YWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMsCi0gICAgICAg
IHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQsIGludDMyX3QgaW5k
aXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNldCkKICAgICAgICAgLCBt
X2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpCiAgICAg
ICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVycykKICAgICAgICAgLCBt
X29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNldChpbmRpcmVjdE9mZnNl
dCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBAIGNsYXNzIFNsb3dQYXRo
Q2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGFy
Z3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudFJlZ2lzdGVyczsgfQog
ICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIGlu
dDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGlyZWN0T2Zmc2V0OyB9
CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0KEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBTbG93UGF0
aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygp
LCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVy
cygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSwgaW5kaXJlY3RP
ZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgCiAgICAg
U2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJz
KFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewog
ICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZhbHVlVGFnKQogICAgICAg
ICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZhbHVlKQotICAgICAgICAs
IG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4ICs5MywyMCBAQCBjbGFz
cyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVy
cyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYmIG1fY2FsbFRhcmdldCA9
PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1f
b2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQKKyAgICAg
ICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRpcmVjdE9mZnNldDsKICAg
ICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV91
c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdldC5l
eGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICByZXR1cm4gbV91c2VkUmVn
aXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdldC5leGVjdXRh
YmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNldDsKICAgICB9CiAKIHBy
aXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lzdGVyU2V0IG1fYXJndW1l
bnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAgIHB0cmRpZmZfdCBtX29m
ZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQgeyAwIH07CiB9OwogCiBz
dHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRo
dW5rcy5jcHAKaW5kZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZhOTMzMTMzYzBiMzZjODY2MTNhZC4u
ZDkyMDJhM2Q0MTllNWNiMmE1OWUzMWZiZTg1YTRhZDUzYmU0OTQxNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2VuZXJhdGlvblRodW5rR2Vu
ZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIpOwogICAgIAogICAgIC8v
IFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0
aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVm
ZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAg
IGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0
Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAKICAgICBqaXQu
bG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBj
b25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQog
ICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9u
QXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtl
eS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BS
SW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjEs
IEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXkuYXJndW1lbnRSZWdpc3Rl
cnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXkuYXJndW1lbnRSZWdpc3Rl
cnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGRvbnRDbG9iYmVyLnNl
dChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIFdU
Rk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVyczo6Q2FsbCBjYWxsID0g
aml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2Fs
bDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwga2V5LmluZGlyZWN0T2Zmc2V0KCkpLCBPcGVy
YXRpb25QdHJUYWcpOwogCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSwgR1BS
SW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKQEAg
LTIzMiw3ICsyMzksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIGtl
eS5jYWxsVGFyZ2V0KCkpOworICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBwYXRj
aEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBhdGggY2FsbCB0
aHVuayBmb3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggMzU0Zjk1NDdiNGFiZjMy
ODk2ZDFjZWI0ZWEyMDBmYmI0YTRkZWNjZC4uYmY4YTA4MDQwY2VjODdiNjRmNzdjMzZhZWFkYmZl
ZDlkZTQwMjc0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUg
IkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNB
cnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjUy
LDcgKzY1Myw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0VmlydHVhbENhbGwoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgICAgIGF1dG8gY2FsbExv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SklUQ29tcGlsYXRpb25QdHJU
YWc+KGNhbGwpOwogICAgICAgICBsaW5rQnVmZmVyLmFkZE1haW5UaHJlYWRGaW5hbGl6YXRpb25U
YXNrKFs9LCAmdm1dICgpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCAqaW5m
byk7Ci0gICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1
YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtLCB7IH0pKTsK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExvY2F0aW9u
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRodW5rLmNv
ZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcyZDg5ZTdkODZi
ZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4OTdlYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3LDcgKzIwNyw3IEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogCiAgICAgLy8gZXh0cmFH
UFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBpbiBy
ZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBleHRyYVBva2UgaXMgdXNl
ZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFjay4KLSAg
ICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgor
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJz
LCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewogICAgICAg
ICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIxOSw4IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NE
ZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0gICAgICAgIHRl
bXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVu
c2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24o
QXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCisgICAgICAgIHRlbXBs
YXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2ln
bmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+CisgICAgICAgIEFyZ0Nv
bGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYgb3RoZXIpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAg
ICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwpAQCAtMjMw
LDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRp
b25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50
LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyAr
IDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJn
KEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1
bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2Vz
XSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJT
b3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRl
c3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJn
dW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBS
U291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJl
c3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsK
IAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVu
dDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBk
ZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Mg
KyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMp
OworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAg
ICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAg
ICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3NzU291cmNlc10gPSBkZXN0
aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJh
UG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9u
KQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyAr
IDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVu
dCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0
KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAg
ICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50Owog
ICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3Rp
bmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJnKEdQUlJlZyBh
cmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisK
KyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7
CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVz
dGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJn
KCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEs
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyAr
IDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0
aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEs
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQog
Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZf
NjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJl
bnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xhbmcgY2xhaW1zIHRoYXQg
aXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVtYmVyT2ZBcmd1
bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBzdGQ6Om1heC4u
LiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1bWVudFJl
Z2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQUnMpOworCiAg
ICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CiAgICAgICAgIGN1cnJl
bnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIElHTk9SRV9XQVJOSU5H
U19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEsMTUgQEAgY2xhc3MgQ0NhbGxI
ZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50
KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJl
bnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZv
ckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2ln
bmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkK
ICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0
KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9
IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1l
bnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2Up
OwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lO
TElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2ln
bmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3Vy
cmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsK
LSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVu
dEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3Vs
YXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAg
ICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAgLTM3Niw4ICszODcsOCBA
QCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRpb24gdGltZSBleHBsb3Np
b24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRlbXBsYXRlcy4K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBB
cmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50
UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNo
YWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9y
UmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlw
ZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSArNDAzLDMxIEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7
CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRT
dGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldl
IHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBt
YXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJn
LCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFy
ZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVy
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBB
cmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0LDggKzQzNSw4IEBAIGNs
YXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2Vsc2UgLy8gVVNF
KEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
dm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJn
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkg
YmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2OSwyNSArNDgwLDI1IEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVn
aXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7
CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdz
Li4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAg
Ly8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0gICAgICAgIGlmIChzdGFj
a0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpKSB7
CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsK
ICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBF
KSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFy
Z3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1B
cmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAg
ICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7
CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1i
bHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwg
dHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWduZWQoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0g
YXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgaWYgKGN1
cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFy
ZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAgICAgIH0gZWxzZSBpZiAo
c3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
MSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
KSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwot
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAyKTsKKyAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CisgICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDIpOwog
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFy
Z3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdD
b3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIoKSk7CkBAIC01NDQsOSAr
NTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VN
RU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZv
OjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJn
Q291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIoKSk7CkBAIC01NjksMTEg
KzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6
dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2
YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93
biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAg
ICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50
IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25zIHdpdGgg
bm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZlciBuZWVkZWQgdG8gc3Vw
cG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdlIHdvdWxkIG5lZWQgdG8g
ZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNoIHNvdW5kcwpAQCAtNTkx
LDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBl
bmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAg
ICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAg
ICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAg
ICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJn
cykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlw
ZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAg
ICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAg
ICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAg
ICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAg
ICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAg
ICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJs
ZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+PiosIENVUlJF
TlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19zYW1lPEFy
Zywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVk
SW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6
OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0byBkZWFs
IHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJn
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5M
SU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VN
RU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3NhbWU8QXJn
LCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3Ms
IFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNjM5LDggKzY1
MCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI3Vu
ZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0aGUgYXJndW1lbnQg
cmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3Mg
KyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJjZXMsIEZQUlJl
Zz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3Mu
ZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+
KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVibGljOgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdXNpbmcgRmlyc3RBcmd1
bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxh
dGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxG
aXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5j
ZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgp
ID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgor
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgfSBlbHNl
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3
b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzIt
Yml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQorICAgIH0KIAotI2RlZmlu
ZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElO
RSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxs
RnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQg
c2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAg
c3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgp
ID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNlbmRpZgot
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwg
MCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBs
PE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwg
YXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVw
QXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4uIGFyZ3MpCiAg
ICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29y
a3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJp
dC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7
Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAs
IDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJn
cy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFy
Z0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGZ1bmN0aW9u
R1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAgfQogCi0jdW5kZWYgRklS
U1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9y
SW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjww
LCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVzcy5iYXNlLCBHUFJJbmZv
Ojpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJlc3VsdHMo
R1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IGY3YWEzMjlmZTI1
ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLjZmM2ZjMmYwZjIxNWQ2YjM3NGMzNTk2ZmE0
NzBiYWY0NjlhOTJmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dD
QXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShK
SVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTM4LDkgKzM5
LDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1HQ0F3YXJlSklUU3R1YlJvdXRpbmU6OkdDQXdh
cmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCitHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OkdD
QXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mJiBrZXlzKQogICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKKyAgICAsIG1fdm0odm0pCisg
ICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkKIHsKICAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRp
bmVzLT5hZGQodGhpcyk7CiB9CkBAIC00OSw2ICs1MSw5IEBAIEdDQXdhcmVKSVRTdHViUm91dGlu
ZTo6fkdDQXdhcmVKSVRTdHViUm91dGluZSgpIHsgfQogCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91
dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRT
dHVicykKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisKICAg
ICBpZiAobV9pc0pldHRpc29uZWQpIHsKICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBm
b3Igd2hlbiB0aGUgc3lzdGVtIHNodXRzIGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8v
IHRoZSBKSVQgc3R1YiByb3V0aW5lIHNldCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91
bmQgdG8gZGVsZXRpbmcKQEAgLTc1LDkgKzgwLDkgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6OmRlbGV0ZUZyb21HQygpCiB9CiAKIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93
bmVyLAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMs
IGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywg
QmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKGNvZGUsIHZtKQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBX
VEZNb3ZlKGtleXMpKQogICAgICwgbV9jZWxscyhjZWxscy5zaXplKCkpCiAgICAgLCBtX2NhbGxM
aW5rSW5mb3MoV1RGTW92ZShjYWxsTGlua0luZm9zKSkKIHsKQEAgLTEwNiw5ICsxMTEsOSBAQCB2
b2lkIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRl
cm5hbChTbG90VmlzaXRvciYgdmlzaQogfQogCiBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhj
ZXB0aW9uSGFuZGxlcjo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIo
Ci0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVk0mIHZtLCAgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAorICAgIGNvbnN0IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwg
Rml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsICBjb25zdCBKU0NlbGwqIG93
bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNh
bGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVy
cywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgp
Ci0gICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2Vs
bHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpCisgICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2Fs
bExpbmtJbmZvcykpCiAgICAgLCBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgbV9j
b2RlT3JpZ2luUG9vbCgmbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlci0+Y29kZU9yaWdp
bnMoKSkKQEAgLTE1NCw2ICsxNTksNyBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIAogUmVmPEpJVFN0dWJSb3V0
aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAorICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4mJiBrZXlzLAogICAgIFZNJiB2bSwKICAgICBjb25zdCBKU0NlbGwqIG93bmVy
LAogICAgIGJvb2wgbWFrZXNDYWxscywKQEAgLTE2NSwxOCArMTcxLDE4IEBAIFJlZjxKSVRTdHVi
Um91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgaWYgKCFtYWtlc0NhbGxzKSB7CiAg
ICAgICAgIC8vIEFsbG9jYXRpbmcgQ2FsbExpbmtJbmZvcyBtZWFucyB3ZSBzaG91bGQgaGF2ZSBj
YWxscy4KICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKTsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRpbmUoY29kZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWFibGVKSVRTdHViUm91dGluZSh2bSwgY29kZSwgV1RGTW92
ZShrZXlzKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFu
ZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkpKTsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRs
ZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJs
b2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBvd25lciwgY2VsbHMsIFdU
Rk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNl
cHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOwogICAgIH0KIAogICAgIGlmIChjZWxscy5pc0Vt
cHR5KCkgJiYgY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmU6OmNyZWF0ZShjb2RlLCB2bSk7CisgICAgICAgIHJldHVybiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmU6OmNyZWF0ZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSk7CiAgICAgCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2Rl
LCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RG
TW92ZShrZXlzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5kZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4
ZTZjZTFjYTlmZC4uMjNjMzk4MjNkODBhNzgyYzU0NDYyY2JlZjQ3YzVlYjI0NzhiOWRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7
CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRT
dHViUm91dGluZVNldDsKIApAQCAtNTQsMTIgKzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5l
U2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4K
IGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBw
dWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91
dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+Jiwg
Vk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYpOwogICAgIH5HQ0F3YXJlSklU
U3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+
IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiBjb2RlLCBWTSYgdm0pCisgICAgc3RhdGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZN
JiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0p
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtLCBXVEZNb3ZlKGtleXMpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmlzaXRvcj4KQEAgLTY4LDYgKzY5LDggQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDog
cHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVy
bmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorCiAg
ICAgdm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTgxLDYgKzg0LDgg
QEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsK
IAogICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSmV0
dGlzb25lZCB7IGZhbHNlIH07CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+PiBtX2tleXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBt
YXJrIG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3
ICs5Myw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91
dGluZSB7CiBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdh
cmVKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91
dGluZSgKLSAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+Jiwg
QmFnPENhbGxMaW5rSW5mbz4mJik7CiAgICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
KSBvdmVycmlkZTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTEwOSw3ICsxMTQsNyBAQCBjbGFzcyBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBN
YXJraW5nR0NBd2FyZUpJVAogcHVibGljOgogICAgIHR5cGVkZWYgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lIEJhc2U7CiAKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxl
cihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0m
LCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExp
bmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CisgICAgR0NB
d2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+PiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxs
Kj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJ
bmRleCk7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKCkg
ZmluYWw7CiAKICAgICB2b2lkIGFib3V0VG9EaWUoKSBmaW5hbDsKQEAgLTEzMiw2ICsxMzcsNyBA
QCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6
IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogLy8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVK
SVRTdHViUm91dGluZSgKIC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mIGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAv
LyAgICBib29sIG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQzLDcgKzE0OSw3IEBAIGNs
YXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVi
bGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyB3YXkuCiAKIFJlZjxKSVRTdHViUm91dGluZT4gY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0Nh
bGxzLAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgVk0mLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2Vw
dGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKaW5kZXggOGY0NWIzNzdjMTY5NmE1MTZhODQzMDBiODkyMWY2YWRkNmEzZDRkZC4uMDY3YWJm
ZjFkNmFkMjAwNzU0NTE4MDA3N2IwYzRhNTVjNzc3MjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKQEAgLTQ2MCw2ICs0NjAsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyBy
ZWdUMwogI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4
NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1Qw
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3Rl
cnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1
ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6
OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC02NTIsNiArNjUzLDcgQEAgY2xh
c3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI2ID0g
QVJNNjRSZWdpc3RlcnM6Ong2OyAvLyByZWdUNgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IGFyZ3VtZW50R1BSNyA9IEFSTTY0UmVnaXN0ZXJzOjp4NzsgLy8gcmVnVDcKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gQVJNNjRSZWdpc3RlcnM6Ong4OyAvLyByZWdU
OAorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBBUk02NFJlZ2lzdGVy
czo6eDk7IC8vIHJlZ1Q5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVH
UFIgPSBBUk02NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IEFSTTY0
UmVnaXN0ZXJzOjp4MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1NTU2MzAzN2Fl
YjU4ZmVjOWIzZjAzZjdjZmVlMWZjMGRlM2VjZTIzLi40MWQ4YjhmODIwYjkyNzY2YTcxNmFhYThk
NjNkZjFiNWQ4ZmE4MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC05MDIsMTIg
KzkwMiwxMiBAQCB2b2lkIEpJVDo6bGluaygpCiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBi
eVZhbENvbXBpbGF0aW9uSW5mbyA6IG1fYnlWYWxDb21waWxhdGlvbkluZm8pIHsKICAgICAgICAg
ICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlTm90SW5kZXhKdW1wID0gYnlWYWxDb21waWxhdGlv
bkluZm8ubm90SW5kZXhKdW1wOwotICAgICAgICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2RlTG9jYXRp
b25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICAgICAgICAgIGlmIChK
dW1wKHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJ
bmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7CiAK
ICAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENv
bXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAg
PSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgICAgICAgICAg
aWYgKEp1bXAocGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAg
YmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVm
ZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFk
VHlwZUp1bXApKTsKIApAQCAtOTE2LDE0ICs5MTYsMTkgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAg
ICAgICAgICAgYXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJu
YWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxD
b21waWxhdGlvbkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKIAogICAgICAgICAgICAgYnlWYWxDb21w
aWxhdGlvbkluZm8uYnlWYWxJbmZvLT5zZXRVcCgKLSAgICAgICAgICAgICAgICBub3RJbmRleEp1
bXAsCi0gICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAsCiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlciwKICAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheU1v
ZGUsCiAgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlQcm9maWxlLAog
ICAgICAgICAgICAgICAgIGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhU
YXJnZXQsCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOworICAgICAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAg
ICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJn
ZXQgPSBzbG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAg
ICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1
bXBUYXJnZXQgPSBzbG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4o
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlv
bkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKKyAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAgPSBi
YWRUeXBlSnVtcDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggNzVjOWNiOTZiMTM2NTMyZjA4NjFmMmYwYTgwNThlZmM2YjA1NmIy
NC4uOWYzMTY1ZDU1YjhiZGZkZjEwMmJmYWY4YWQxMzhlNjgxYWFkY2Y2NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0yOTQsNiArMjk0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgYXBw
ZW5kQ2FsbChBZGRyZXNzIGZ1bmN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsKGZ1
bmN0aW9uLCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAm
JiBDUFUoWDg2XzY0KQogICAgICAgICBDYWxsIGFwcGVuZENhbGxXaXRoU2xvd1BhdGhSZXR1cm5U
eXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAgICAg
IHsKQEAgLTM5NSwzOSArNDAwLDM5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBQcm9w
ZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQgemVybyBleHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNr
ZWQuCiAgICAgICAgIC8vIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLiBSZXR1cm5zIHRo
ZSBzbG93IGNhc2VzLiBGYWxsLXRocm91Z2gKICAgICAgICAgLy8gY2FzZSBjb250YWlucyByZXN1
bHQgaW4gcmVnVDAsIGFuZCBpdCBpcyBub3QgeWV0IHByb2ZpbGVkLgotICAgICAgICBKdW1wTGlz
dCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSkgeyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBi
YWRUeXBlLCBJbnQzMlNoYXBlKTsgfQotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1w
TGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7
Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9y
QXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlW
YWxJbmZvKSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUs
IGJ5VmFsSW5mbywgSW50MzJTaGFwZSk7IH0KKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
KTsKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGV4cGVj
dGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlT
dG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyopOworICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJ
bnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJ
bmZvKik7CiAKICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW4gcmVnVDEsIGJhc2UgaXMgaW4gcmVn
VDAuIHJlZ1QyIGNvbnRhaW5zIGluZGVjaW5nIHR5cGUuCiAgICAgICAgIC8vIFRoZSB2YWx1ZSB0
byBzdG9yZSBpcyBub3QgeWV0IGxvYWRlZC4gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kCiAg
ICAgICAgIC8vIHplcm8tZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLiBTdHJ1Y3R1cmUg
aXMgYWxyZWFkeSBwcm9maWxlZC4KICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2xvdyBjYXNlcy4K
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQz
MlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBK
dW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJT
aGFwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbywgSW50MzJTaGFwZSk7CiAgICAgICAgIH0KICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVt
cExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVT
aGFwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbywgRG91YmxlU2hhcGUpOwogICAgICAgICB9CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGln
dW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAg
ICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlW
YWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBl
ID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1
b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIEluZGV4
aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJh
eVN0b3JhZ2VQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50
VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5
VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUp
OworICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKIAogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOwpA
QCAtODcwLDEzICs4NzUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOworICAgICAgICB2b2lkIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyk7CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82
NCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KTsKICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB2b2lkIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFs
dWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBNZXRhZGF0YT4KKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgQWRkcmVzcywgVmlydHVhbFJl
Z2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpD
YWxsPgpAQCAtODg2LDYgKzg5NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNh
bGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAgICB9CisK
ICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPgogICAgICAgICBzdHJ1Y3QgaXM2NEJpdFR5cGUgewpAQCAtOTA2LDYgKzkyMywxNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9uKTsKICAgICAg
ICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgICAgIHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJn
cy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGly
ZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgLy8g
eDY0IFdpbmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBl
IGlzIGxhcmdlciB0aGFuIDY0IGJpdHMuCisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRC
aXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBl
Pjo6dmFsdWUpCisgICAgICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhB
ZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xv
d1BhdGhSZXR1cm5UeXBlKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNl
dCkpOworICAgICAgICB9CiAjZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKE9wZXJhdGlvblR5cGUg
b3BlcmF0aW9uLCBBcmdzLi4uIGFyZ3MpCkBAIC05MTMsNiArOTQxLDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHM8T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7
CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRp
b24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3Mg
dGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAg
ICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAjZW5kaWYgLy8gT1MoV0lORE9X
UykgJiYgQ1BVKFg4Nl82NCkKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YSwg
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KQEAgLTkyMyw2ICs5NTgs
MTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0
aW9uLCByZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAg
IHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3Vs
dCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRh
ZGF0YSwgQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJn
cykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFk
YXRhLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQp
OworICAgICAgICB9CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbldpdGhSZXN1bHQoT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MsIEFyZ3MuLi4gYXJncykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKaW5kZXggMWI0OWQ0ODlkYWEyYjc4NmFiNzkzOTJmOWEzNGViYzY0NGNkYWIxOC4u
Mzc0YmEzMGM3Zjc2NzEzNzk0NzBlNGRkOWQ0ZGE4MzY1ZGEzNjBlYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0zOTgsOCArMzk4LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgp
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMiw4ICs0MzIsMTUgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0MKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAot
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0
ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjAp
OworICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgIH0g
ZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgIGF1dG8gZG9uZSA9IGp1bXAoKTsKIAogICAgIG5v
dE9iamVjdC5saW5rKHRoaXMpOwpAQCAtNDgwLDggKzQ4Nyw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBS
ZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpOwogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7CiAgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAotICAgICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5
TmFtZXMtPmRvbmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVS
ZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHBy
ZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBKU1Zh
bHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHJlZ1QzLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwpAQCAtNDk5LDggKzUwNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBKdW1w
TGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9u
ZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwogCiAg
ICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNW
YWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCByZWdUNCwgQWNjZXNzVHlw
ZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlkcy5h
cHBlbmQoZ2VuKTsKQEAgLTUyOCwxNiArNTM1LDIzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
CiAgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgICAgIEp1bXBMaXN0IG5vdE9i
amVjdDsKICAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwoaXRlclJlc3Vs
dEdQUikpOwotICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJS
ZXN1bHRHUFIpKTsKIAogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnBy
b3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwogICAgICAgICAKICAgICAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygp
KTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0
R1BSKSk7CiAKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRy
ZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJv
ZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOwogICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKICAgICAgICAgZW1pdEp1bXBT
bG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CkBAIC01NTYsOCArNTcwLDEzIEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDCiAKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1
ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Ci0KKyAgICAgICAgQ2FsbCBjYWxs
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5z
dHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHZhbHVlVlJlZywgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJl
c3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBjYWxsKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcAppbmRleCBlY2M0ZTVmM2ZmNmQwN2Y5OWMwNzg0ZGQ0YzEyZGViYTBlMjEw
ZGNmLi4xNTI1MTRhZmRjYWM3ODJhYzljODc0ZTU1MGFmZmI5YzcyOGJlYTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0zOTYsMTIgKzM5NiwxNCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVC
bG9jaywKKyAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksCiAgICAgICAgIEpTVmFsdWVSZWdz
KHRhZ0l0ZXJhdG9yR1BSLCBwYXlsb2FkSXRlcmF0b3JHUFIpLAogICAgICAgICBuZXh0UmVncywK
KyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAg
ICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtNTA1LDEyICs1MDcsMTQg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCiAgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHBheWxvYWRWYWx1ZUdQUik7CiAg
ICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAgbV9jb2RlQmxvY2ss
CisgICAgICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgICAgIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgICAgIHByZXNlcnZlZFJl
Z3MsCiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLAogICAgICAgICAgICAg
SlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAg
ICAgICAgICAgZG9uZVJlZ3MsCisgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAg
ICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTUzMywx
MiArNTM3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwK
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAg
ICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAg
ICAgcmVzdWx0UmVncywKKyAgICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBB
Y2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAppbmRleCA2ZmE3MjQ0ZWYwYTA4YzlmMDQ3YTMyMjA0ZjczN2QyOTI4
NzE5MDZmLi44Nzc3MGJmODQ4YTNhZmE5ZGRiZjBiMTgyMjM3ZjEzY2EwZTJiYmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaApAQCAtNTIsMTMgKzUyLDE1IEBAIGNsYXNzIFRyYWNr
ZWRSZWZlcmVuY2VzOwogY2xhc3MgVk07CiAKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Qg
ewotICAgIE5vbmUsCi0gICAgSG9zdENhbGxUaHVuaywKLSAgICBJbnRlcnByZXRlclRodW5rLAot
ICAgIEJhc2VsaW5lSklULAotICAgIERGR0pJVCwKLSAgICBGVExKSVQKKyAgICBOb25lID0gMGIw
MDAsCisgICAgSG9zdENhbGxUaHVuayA9IDBiMDAxLAorICAgIEludGVycHJldGVyVGh1bmsgPSAw
YjAxMCwKKyAgICBCYXNlbGluZUpJVCA9IDBiMDExLAorICAgIERGR0pJVCA9IDBiMTAwLAorICAg
IEZUTEpJVCA9IDBiMTAxLAogfTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd2lkdGhPZkpJ
VFR5cGUgPSAzOworc3RhdGljX2Fzc2VydChXVEY6OmdldE1TQlNldENvbnN0ZXhwcihzdGF0aWNf
Y2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEpJVFR5cGU+PihKSVRUeXBlOjpGVExKSVQpKSAr
IDEgPT0gd2lkdGhPZkpJVFR5cGUpOwogCiBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKIHB1YmxpYzoKQEAgLTE1Niw2ICsxNTgsMTUgQEAgY2xh
c3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7CiAgICAg
ICAgIHJldHVybiBqaXRUeXBlID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmsgfHwgaml0VHlw
ZSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCB1c2VT
aGFyZWRJQyhKSVRUeXBlIGppdFR5cGUpCisgICAgeworICAgICAgICBpZiAoIU9wdGlvbnM6OnVz
ZVNoYXJlZElDKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKTsKKyAg
ICB9CisKICAgICB2aXJ0dWFsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCiAgICAgZW51bSBjbGFzcyBTaGFyZUF0dHJp
YnV0ZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBmNTJjM2M3NjIxNWFhMzI2ZGRlOWY4OTg1
NjI5OGMzZGU2NDYyMmNlLi4yZmU4YjliOGUzMWM4YmRiYTM3MTQyYTZmNjA4Nzg0YmRiNDNmZGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcApAQCAtNDMsOSArNDMsMTAgQEAgc3RhdGljIFN0cnVjdHVyZVN0dWJJbmZv
KiBnYXJiYWdlU3R1YkluZm8oKQogfQogCiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
LAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
LAogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQogICAgIDogbV9jb2RlQmxv
Y2soY29kZUJsb2NrKQorICAgICwgbV9qaXRUeXBlKGppdFR5cGUpCiB7CiAgICAgbV9zdHViSW5m
byA9IG1fY29kZUJsb2NrID8gbV9jb2RlQmxvY2stPmFkZFN0dWJJbmZvKGFjY2Vzc1R5cGUsIGNv
ZGVPcmlnaW4pIDogZ2FyYmFnZVN0dWJJbmZvKCk7CiAgICAgbV9zdHViSW5mby0+Y2FsbFNpdGVJ
bmRleCA9IGNhbGxTaXRlOwpAQCAtNjAsMjAgKzYxLDIyIEBAIHZvaWQgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3I6OmZpbmFsaXplKAogCiAgICAgbV9zdHViSW5mby0+ZG9uZUxvY2F0aW9uID0gZmFz
dFBhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX2RvbmUpOwogCi0gICAgbV9zdHVi
SW5mby0+c2xvd1BhdGhDYWxsTG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJu
YWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fc2xvd1BhdGhDYWxsTG9jYXRpb24g
PSBzbG93UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsK
ICAgICBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlv
bk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pOwogfQogCiBKSVRCeUlk
R2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVn
aXN0ZXJzKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlLAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAg
ICwgbV92YWx1ZSh2YWx1ZSkKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXls
b2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7
CiAgICAgbV9zdHViSW5mby0+cmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0
dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwpAQCAtODMsMTMgKzg2LDE1IEBA
IEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAKIHZvaWQgSklUQnlJZEdlbmVy
YXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRo
KQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5s
b2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9j
YXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIg
PSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIHZvaWQgSklUQnlJZEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBp
bmxpbmVJQ1NpemUpCiB7CisgICAgLy8gV2UgZ2VuZXJhdGUgdGhlIHNhbWUgY29kZSByZWdhcmRs
ZXNzIG9mIHdoZXRoZXIgU2hhcmVkSUMgaXMgZW5hYmxlZCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQg
dG8gdXNlIElubGluZUFjY2VzcworICAgIC8vIGZvciB0aGUgcGVyZm9ybWFuY2UgcmVhc29uLgog
ICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1f
YXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQu
anVtcCgpOwpAQCAtMTAxLDkgKzEwNiw5IEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJh
dGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1NpCiB9CiAK
IEpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZh
bHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywg
YmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICwgbV9pc0xlbmd0aEFjY2Vzcyhwcm9wZXJ0
eU5hbWUudWlkKCkgPT0gY29kZUJsb2NrLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBs
KCkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFn
R1BSKCkpOwpAQCAtMTE1LDkgKzEyMCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhp
c1JlZ3MpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwg
dmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHVi
SW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0
ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodGhp
c1JlZ3MucGF5bG9hZEdQUigpICE9IHRoaXNSZWdzLnRhZ0dQUigpKTsKIApAQCAtMTMzLDEwICsx
MzgsMTAgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0
QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIsCisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRL
aW5kIHB1dEtpbmQpCi0gICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZh
bHVlKQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2
YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAg
ICAgLCBtX3B1dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3MSwxNCArMTc2LDE1IEBAIFZfSklUT3Bl
cmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZh
bEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykK
K0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQs
IEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9j
aywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRl
QnlWYWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVu
dGlmaWVyID0gZmFsc2U7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5w
YXlsb2FkR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIo
KTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQ
UigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAg
ICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwog
ICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMTkxLDI2ICsx
OTcsMzAgQEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklURGVsQnlWYWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0
ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVz
cyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZD
b2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFi
ZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlu
a0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeVZh
bEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNs
b3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0g
ICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZp
bmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2pp
dFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93
UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRH
ZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQorSklU
RGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRU
eXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1
c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9
IHRydWU7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BS
KCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBt
X3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0dWJJ
bmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNT
RVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5i
YXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTIyMywyMiArMjMzLDI1IEBAIEpJVERlbEJ5
SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
ZGVPcmlnaW4gY29kZU9yCiB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0g
ICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7
CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHVi
Um91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0
LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBK
SVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwg
TGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXpl
KExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NF
UlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAot
ICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xv
d1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQp
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9z
dHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwog
fQogCiBKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUp
Ci0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVy
YXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIC8v
IEZJWE1FOiBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9w
ZXJ0eS4KICAgICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI1MSwxNSArMjY0LDE1
IEBAIHZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJiBqaXQpCiB9CiAKIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5l
cmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUs
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVn
IHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIEdQUlJlZyBzY3JhdGNoMSwgR1BS
UmVnIHNjcmF0Y2gyLCBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QpCi0gICAgOiBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQorICAgIDogSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQogewogICAg
IG1fc3R1YkluZm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9
IHJlc3VsdDsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3RvdHlwZTsK
KyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsK
ICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0yNzksMjEg
KzI5MiwyNCBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KAogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAg
IG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9q
aXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2Fs
bChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVy
YXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRo
KQogewotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFz
dFBhdGgsIHNsb3dQYXRoLAotICAgICAgICBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihtX2p1bXApKTsKLSAgICAKLSAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1
bXAsIHNsb3dQYXRoLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAg
IEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxK
SVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJ
bmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVEdldEJ5VmFsR2VuZXJhdG9yOjpK
SVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCi0gICAgOiBCYXNlKGNvZGVC
bG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVy
cykKK0pJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFz
ZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5
cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fcmVzdWx0KHJl
c3VsdCkKIHsKQEAgLTMwMiw2ICszMTgsNyBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogICAg
IG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAgIG1fc3R1Yklu
Zm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0
dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0
dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1
ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKQEAgLTMxMiwyMCArMzI5LDIzIEBAIEpJVEdldEJ5
VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwot
ICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIp
OworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQg
SklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRo
LCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFs
aXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBB
U1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFz
dFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1f
Y29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3Io
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCkKLSAg
ICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBl
LCB1c2VkUmVnaXN0ZXJzKQorSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0
VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIp
CisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRl
eCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9
PSBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCB8fCBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5
cGU6OlNldFByaXZhdGVCcmFuZCk7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlm
aWVyID0gZmFsc2U7CkBAIC0zMzMsNiArMzUzLDcgQEAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmwK
ICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHVi
SW5mby0+cmVncy5icmFuZEdQUiA9IGJyYW5kLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT52YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQ
UiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+
YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+di5icmFuZFRhZ0dQ
UiA9IGJyYW5kLnRhZ0dQUigpOwpAQCAtMzQzLDE2ICszNjQsMTkgQEAgSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2Nr
KiBjb2RlQmwKIHZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgp
OwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9H
UFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9
IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZv
aWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZm
ZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6
OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkK
KyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFy
dExvY2F0aW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBkNmNhNmUxNmEz
ZjMyYzY0MGY5NmNiMjU1MTk1NTQ4YjBmMmViNjUxLi5iNjkwODc4NTc2NDM4ZDk3ZDk5NDMwYWM2
M2Q5MTdiYzJlYzkzZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC00MSwxMiArNDEsMTIgQEAgY2xhc3MgQ29kZUJs
b2NrOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6
IGludDhfdDsKK2VudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cigpIHsgfQotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sq
LCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycyk7CisgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoQ29kZUJsb2Nr
KiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOwogICAgIAogcHVibGljOgogICAgIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc3R1YkluZm87IH0KQEAgLTY1
LDYgKzY1LDcgQEAgY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIAogcHJvdGVj
dGVkOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgSklUVHlwZSBtX2ppdFR5cGU7
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6TGFiZWwgbV9kb25lOwpAQCAtNzcsOCArNzgsOCBAQCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9y
IDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRCeUlkR2VuZXJhdG9y
KCkgeyB9CiAKICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUp
OworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7
CiAKIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25z
dApAQCAtMTAxLDEzICsxMDIsMTMgQEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbV9zbG93
UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5
SWRHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBK
SVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9
CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2Fj
aGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEFjY2Vzc1R5cGUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2Fj
aGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSk7CiAgICAgCiAgICAgdm9pZCBn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAKQEAgLTExNSwyNiArMTE2LDI2IEBA
IGNsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAg
ICAgYm9vbCBtX2lzTGVuZ3RoQWNjZXNzOwogfTsKIAotY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGlj
OgogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIHRoaXNSZWdzKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENh
Y2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAg
IHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklU
UHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9k
ZTo6c3RyaWN0KCkpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0
S2luZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyBiYXNlLAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAog
ICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1
LDE0ICsxNDYsMTQgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKLWNsYXNzIEpJVERlbEJ5
VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAg
ICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9y
KAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93
UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTE3MCwxNCArMTcxLDE0IEBAIGNsYXNzIEpJVERl
bEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNz
IEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igewor
Y2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVi
bGljOgogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNo
KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0
dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBz
bG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTE5NSw0MiArMTk2LDUwIEBAIGNsYXNzIEpJ
VERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAg
IE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xh
c3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3Mg
SklUSW5CeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVi
bGljOgogICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUSW5CeUlkR2VuZXJh
dG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxv
Y2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2
b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CiAKLWNsYXNzIEpJVElu
c3RhbmNlT2ZHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xh
c3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CiBwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJh
dG9yOwogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoKSB7IH0KICAgICAKICAgICBKSVRJbnN0
YW5jZU9mR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwK
LSAgICAgICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc2NyYXRjaDEs
IEdQUlJlZyBzY3JhdGNoMiwKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJl
ZyByZXN1bHQsCisgICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwKICAgICAgICAg
Ym9vbCBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2UpOwogICAgIAogICAgIHZvaWQgZ2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRo
SnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1
bXA7CisgICAgfQorCiAgICAgdm9pZCBmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtC
dWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CiAKIHByaXZhdGU6Ci0gICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9qdW1wOworICAgIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xv
d1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigp
IHsgfQogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHBy
b3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTI1MSwx
NCArMjYwLDE0IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Ns
b3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igewog
ICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0g
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKTsKKyAgICAgICAgQ29k
ZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IGU3OWNkMzZlZjU3ZDdiZGNlY2UxNzY4ZDA1ODhh
ZmVlZDg4ODUwMTUuLjI4YTY0MzM3ZTJmMDhmNWYyMGFkYTczN2JiNzZiY2I0NzM2MjI4ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0zMywxNyArMzMsMTcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRG
b3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJy
YXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZh
bEluZm8pCiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgot
ICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUp
OworICAgICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5
cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHJldHVybiBlbWl0
RG91YmxlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4g
ZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwog
ICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9h
ZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdENvbnRp
Z3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBj
YXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2Fk
KGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0QXJyYXlT
dG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI4LDYgKzEyOCwxMyBAQCBBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhjb25zdCBGdW5jdAogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24p
Cit7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgYXBwZW5kQ2FsbChmdW5jdGlvbik7
CisgICAgZXhjZXB0aW9uQ2hlY2soKTsKK30KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZf
NjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogewpAQCAtMTU3LDYgKzE2NCwxNiBAQCBBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRy
ZXNzIGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAgZW1pdFN0
b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYKK30KKwog
dGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRX
aXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCiB7CkBAIC0xNzEsNiArMTg4
LDE5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0
YSYgbWV0YWRhdGEsIEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7Cisg
ICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQ
Uik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNl
bHNlCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgSlNWYWx1ZVJlZ3MocmV0
dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUikpOworICAgIGVtaXRTdG9yZShkc3QsIHJldHVy
blZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisKIEFMV0FZU19JTkxJTkUg
dm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgaWYgKCFtX2NvZGVC
bG9jay0+aXNLbm93bkNlbGwocmVnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IGJkNTVhM2QwNTE2ZDQ2YjY3YWU1OTdiNmMzYTRmNTg3YjVmZGQ3MzAuLjQ1
YTA3NTFjOTZjNmEyYWNlOGI2NGZmMDRmMzQ5MDNjZGQxZjc2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTY0LDEzICsxNjQsMTggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAg
SklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8g
cmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8K
KyAgICAgICAgcmVnVDUsCiAgICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5zdGFu
Y2VPZnMuYXBwZW5kKGdlbik7CiAgICAgCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OwpAQCAtMTg2LDcgKzE5MSwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIEpJVElu
c3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiA9IG1faW5zdGFuY2VPZnNbbV9pbnN0YW5jZU9mSW5kZXgr
K107CiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QyLCByZWdUMSk7CisKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOworICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVyYXRpb25JbnN0YW5jZU9m
T3B0aW1pemUpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIHJl
Z1QxKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
SW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVnVDEpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTE3MTks
NyArMTczMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVu
dHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQu
Ci0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudElu
c3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9
IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRU
eXBlLCBudWxscHRyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHRydWUpKSksIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTE3
MzQsOCArMTc0NiwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVy
dHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVC
bG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxp
bmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRv
Q1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVl
KCkpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJh
ZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJp
YykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNv
ZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVM
b2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJl
dHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgfQogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xNzY5LDExICsxNzg2LDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBz
bG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUs
IGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2Rl
KGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAKICAg
ICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJl
Z1QwKTsKIAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRU
eXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUg
PSBsYWJlbCgpOwpAQCAtMTc5OSw3ICsxODE3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9o
YXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlW
YWxJbmZvKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdDsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGJ5VmFsSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBj
YWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQp
PihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgcmVnVDAsIHJlZ1QxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVs
dCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1Qw
LCByZWdUMSwgYnlWYWxJbmZvKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZh
bEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZh
bENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9
IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
aW5kZXggOGRiMzU5ZWJkOGNkMDU2Njk3M2I4NjNjNDg2NzQxYTdmYWUyMjQ1ZS4uNGQ3NDEyNmJl
MWUzZGU0MzBkM2E2ZDljYjdmZGRiNmRjODZmN2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTYyLDEzICsxNjIsMTUgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAg
SklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8g
cmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8K
KyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRj
aAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CiAgICAgCiAg
ICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKQEAgLTExODMsNyArMTE4NSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5m
bywgUmV0dXJuQWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBv
dGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xv
d0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1v
ZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlN
b2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsK
IApAQCAtMTE5OCw3ICsxMjAwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhl
ZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAg
bV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAg
IkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQg
JXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdn
ZWRWYWx1ZSgpKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJ
bmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOwogfQogCkBAIC0xMjM0LDcgKzEy
MzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVt
cExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9u
LCBtb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFy
cmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGFkZFNsb3dDYXNlKGJhZFR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXgg
MjFhZjM2NTMwOWQyNzkzMzcxZGU2ZWI0MDBiNDQ2OGFhODM3MGIyNS4uMDI5MmI5YjhjNGVjZTI3
YTgxNjc1MDBhMzVkNDEyNTY1NDlkNjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDAyLDcgKzEwMDIsMTAgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmEKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7
CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbElu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5
VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAg
ICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2Vu
ZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlW
YWxHZW5lcmljKTsKICAgICB9CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZh
bChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBl
Y21hTW9kZSkpOwogfQpAQCAtMTA5NCw3ICsxMDk3LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgaWYgKHJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAg
ICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
UmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAg
ICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2
YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwpAQCAtMTI3OCw3ICsxMjg0LDEwIEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6
YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRp
bWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBj
dGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FE
RFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAgICAgICBpZiAoY29k
ZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CiAgICAg
fQogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjU2Nyw3ICsyNTc2LDExIEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTCiAgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+
PSAxMAogICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmlu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8o
KSkgewogICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCi0gICAgICAg
ICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVU
VVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKKyAgICAg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAg
ICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAg
YnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlH
ZW5lcmljOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5
UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY0
NDY3ZTlhMjVlMTQ3N2UxZWMwNjM1ZDQwOTc1NGQ4ZTc1MzkyZWYuLmQxNzJlZGYxMTdmN2E4MzFh
ZWM3M2U5ZTRkZDBmNGE2MzM0NWZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC02OSwxMiArNjksMTUgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAg
ICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgICAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnBy
b3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhZGRTbG93Q2FzZSgpOwogICAgICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAog
ICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSwgcmVzdWx0UmVncyk7CkBAIC05Myw4ICs5Niw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTCiAKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgICAgICBKSVRHZXRC
eVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICAg
ICAgKyttX2dldEJ5VmFsSW5kZXg7CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKICAgICAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0x
MTgsNyArMTIxLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRC
eVZhbE9wdGltaXplOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1
cm5WYWx1ZUdQUik7CkBAIC0xMzgsNyArMTQ1LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQK
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAog
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTU3LDkgKzE2NSwxMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmls
ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwg
ZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVy
bmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEwICsxOTEsMTMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7
CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MsIHJlZ1QyKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNl
CisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAK
ICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgcmVzdWx0UmVncyk7CkBAIC0yMDEsOCArMjEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmUKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICArK21fZ2V0QnlW
YWxJbmRleDsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9n
ZXRCeVZhbEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAj
aWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMjI2LDcgKzIzNywxMSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSks
IHN0dWJJbmZvR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOworICAgIGVs
c2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI0NSw3ICsyNjAsOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBA
IC0yNjMsOSArMjc5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtp
bmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0
ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBq
aXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Cisg
ICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC0y
ODUsMTAgKzMwMiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChiYXNlR1BSLCBiYXNlKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAg
ICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQ
cml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgcmVnVDIp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vz
c2VzLmFwcGVuZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBh
dCB0aGUgZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0
ZXJzLgpAQCAtMzAyLDggKzMyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiB7CiAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVy
YXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0lu
ZGV4XTsKLSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0
ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zMjgsOSArMzQ3LDE0IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVu
Y3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6
QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25TZXRQ
cml2YXRlQnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogI2VuZGlmCisKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOwogfQogCkBAIC0zNDYsMTAgKzM3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAogICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCkBAIC0zNTcsOCArMzg0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdl
biA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsK
ICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKQEAgLTM4Myw3ICs0MDksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShv
cGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0
aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJn
dW1lbnRUeXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGlt
aXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNDE1LDggKzQ0NSwxNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsK
ICAgICBQYXRjaGFibGVKdW1wIG5vdEluZGV4OwogICAgIGlmICghcHJvcGVydHlOYW1lSXNJbnRl
Z2VyQ29uc3RhbnQpIHsKLSAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90
SW50KHJlZ1QxKTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAg
ICBhdXRvIGlzSW50MzIgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICAgICAgICAgIGZhckp1
bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElm
Tm90SW50KHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAg
ICAgfQogICAgICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgICAgICB6
ZXJvRXh0ZW5kMzJUb1dvcmQocmVnVDEsIHJlZ1QxKTsKICAgICB9CkBAIC00MzIsMjMgKzQ2OCwy
NCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUo
cHJvZmlsZSk7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAg
ICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlW
YWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNs
b3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAg
IHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6
Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChi
eXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGFk
ZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRT
bG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAt
NDU3LDcgKzQ5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQor
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhp
bmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNv
ZGUubV92YWx1ZTsKQEAgLTQ2NSw3ICs1MDIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRH
ZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQK
ICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0g
YnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAg
ICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVt
cFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5
cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFw
ZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworCiAgICAgCiAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdU
Mik7CiAgICAgSnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEs
IEFkZHJlc3MocmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAt
NTE1LDcgKzU2MSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5
dGVjb2RlLm1fdmFsdWU7CkBAIC01MjMsNyArNTY5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3Jh
Z2VTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0Nv
cnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9y
YWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAg
ICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZElt
bTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3Jh
Z2VTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92
ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0
aE9mZnNldCgpKSkpOwogCkBAIC01NjgsOCArNjIzLDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5k
LAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEp
OwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUs
Ci0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwg
ZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcg
U3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAv
LyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0
aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTU4MCw3ICs2MzUsMTMgQEAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0
S2luZCBwdXRLaW5kLAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIGdl
bi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFt
ZS5yYXdCaXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhH
UFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMu
YXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYzOCw4ICs2OTksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVH
UFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgYXV0byogb3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9w
dGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKLSAgICBDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93
T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDog
b3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAj
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTY1Nyw3ICs3MjEsOCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwg
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC02
NzUsOSArNzQwLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RH
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIGVjbWFNb2Rl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6
IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQg
b3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBj
YWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CkBAIC02OTYs
OCArNzYyLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0g
cGF0Y2hhYmxlSnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICBQYXRj
aGFibGVKdW1wIGZhc3RQYXRoSm1wOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZh
bEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
IGVsc2UgeworICAgICAgICBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIH0KICAgICAKICAgICBMYWJlbCBkb25lID0g
bGFiZWwoKTsKICAgICAKQEAgLTc0Myw3ICs4MTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmUKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAK
QEAgLTc2MSw3ICs4MzYsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC03NzksOSArODU1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFByaXZhdGVO
YW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1
ZVBSLCBieVZhbEluZm9HUFIsIHB1dEtpbmRHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNh
bGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJl
dHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGpp
dC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQo
KTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9w
dXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC04NDYsMTEgKzkyMywxNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOwogICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xv
d0Nhc2UoKTsKICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTg5OCwxNSArOTc4LDE4IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9k
ZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemU7CisgICAgZWxzZQor
ICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5W
YWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAK
LSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAg
Ym94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCkBAIC05MTgsNyArMTAwMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGpp
dC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTkzNSw5ICsxMDE5LDEwIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJl
Q2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBk
aXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJu
aW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
cmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9k
ZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTk1NiwxMCArMTA0MSwxMyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOwogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOwogICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAg
ICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAg
IGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC0xMDA4LDE1ICsxMDk2
LDE4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
Z2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0
YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cisg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lm
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTAyOCw3ICsxMTE5LDggQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVw
YXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBq
aXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTA0NSw5ICsx
MTM3LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4
ICsxMTYxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTEwLDcgKzEyMDMsMTEg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
blRyeUdldEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisgICAgZWxz
ZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUp
OwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTExMzMsOCArMTIzMCw4IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJl
Z3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVn
cywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCks
IHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTE3Niw3ICsxMjczLDExIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOwor
ICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVj
dE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIwNyw4ICsx
MzA4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1
bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMzNCw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDAp
OwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dl
dEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjc1LDcgKzEzNzYsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTI5NCw3ICsxMzk5LDggQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJ
VCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTMxMSw5
ICsxNDE3LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFp
bCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBv
ZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAg
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTM1NCw3ICsxNDYxLDExIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKKyAgICBDYWxsIGNh
bGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5W
YWx1ZUdQUik7CkBAIC0xMzczLDcgKzE0ODQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQog
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAg
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAg
ICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzkyLDkgKzE1MDQsMTAgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpc19wcmVwYXJlQ2EKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwg
Y2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2Yg
cmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAg
ICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsIik7CkBAIC0xNDE4LDExICsxNTMx
LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwg
YmFzZVZSZWcpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBlY21hTW9kZShieXRlY29kZSksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAgICAgICAg
ZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKLSAgICAKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTQ2NSw3ICsxNTc3
LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdl
bi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOwor
ICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIApAQCAtMTQ4MSw3ICsxNTk3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwog
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTUwMCw5ICsxNjE3LDEwIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBh
IHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAg
Ly8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQor
ICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTE1MjEsOCArMTYzOSw4IEBA
IHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJl
Zyk7CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTE1NjQsNyAr
MTY4MiwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNzU0LDggKzI4NzYsOCBAQCBKSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QzLCByZWdUMik7CiAKICAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJl
Z1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BSUmVn
LCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yNzY1
LDcgKzI4ODcsMTMgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIC8vIEpJVFB1dEJ5SWRH
ZW5lcmF0b3Igb25seSBwcmVzZXJ2ZSB0aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwg
d2UgaGF2ZSB0byByZWxvYWQgdGhlIHRhZy4KICAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdz
KHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5y
YXdCaXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJ
bmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEpT
VmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3Bl
cnR5TmFtZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJh
dGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVt
cCgpKTsKIApAQCAtMjgxNywyOSArMjk0NSwyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwog
CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRy
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNl
cyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dD
YXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2Vz
ID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNs
b3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxw
dHIpOwogICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRy
KTsKICAgICAgICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHR5cGVkQXJy
YXlUeXBlRm9ySklUQXJyYXlNb2RlKGFycmF5TW9kZSk7CiAgICAgICAgIGlmIChpc0ludCh0eXBl
KSkKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5
cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkg
LyBCaWdVaW50NjRBcnJheSBpbiBJQwogICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2
NEFycmF5IC8gQmlnVWludDY0QXJyYXkgbmV2ZXIgY29tZXMgaGVyZS4KICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKICAgICAgICAg
ICAgIEFTU0VSVChpc0Zsb2F0KHR5cGUpKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRG
bG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAg
ICAgICBzbG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIG51bGxwdHIsIHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTI4NjYsOCArMjk5NCwxNCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAg
ICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBv
aW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVu
dGFnZ2VkVmFsdWUoKSk7CiAgICAgfQotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRy
ZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25E
aXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAg
ICAgYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkp
OworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAg
IH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNz
KSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9
CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0
aW9uIHVuaXQgKEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28g
ZXhwZWN0ZWQgc3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCkBAIC0yOTA2LDggKzMwNDAsMTMg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkEKICAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRl
X25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4g
cG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAg
IGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2Fs
bDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVz
c1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdElu
ZGV4SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZv
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNz
KSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljKSk7CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTI5NDQsMTUg
KzMwODMsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQo
QnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICAgICAgIkJhc2VsaW5lIHB1
dF9ieV92YWwlcyB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJl
dHVybiBwb2ludCAlcCIsIChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCkgPyAiX2RpcmVjdCIg
OiAiIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29k
ZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZh
bEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgp
KSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0
dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJU
YWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5k
ID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9w
ZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVt
cFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Ns
b3dPcGVyYXRpb24gPSBwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2Ug
eworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdElu
ZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykp
OworICAgIH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3Ro
ZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBv
ZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRl
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+
KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZp
ZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVk
SWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2lu
ZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91Ymxl
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk2OCw3ICszMTEyLDE2IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
RG91YmxlU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8g
aXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERv
dWJsZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAg
ICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0
ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hh
cGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JF
cXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1Ymxp
Y0xlbmd0aCgpKSkpOwogICAgIGxvYWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5
LCBUaW1lc0VpZ2h0KSwgZnBSZWdUMCk7CkBAIC0yOTc3LDcgKzMxMzAsNyBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlKQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklU
OjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI5
OTUsNyArMzE0OCwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qg
c2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBp
bmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbElu
Zm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBp
bmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1
bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRT
dHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRl
eGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVz
cyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2Ny
YXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWRWYWx1
ZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCByZXN1bHQpOwpAQCAt
MzAwNCw3ICszMTY2LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICByZXR1cm4gc2xv
d0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTMwMjMsNyArMzE4NSwxNiBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIGFkZDMy
KFRydXN0ZWRJbW0zMigtQXJyYXlTdG9yYWdlU2hhcGUpLCBpbmRleGluZywgc2NyYXRjaCk7Ci0g
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1t
MzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAg
ICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJh
bmNoMzIoQmVsb3dPckVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3Rv
cmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJz
b2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3Zl
LCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlT
dG9yYWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNo
YXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBK
U09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQXJy
YXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTMwMzUsNyArMzIwNiw3IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7
CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAg
ICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAt
MzA2MCw3ICszMjMxLDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgSnVtcExpc3Qg
c2xvd0Nhc2VzOwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRB
cnJheVR5cGUodHlwZSkpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAg
YXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVt
cChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlw
ZSh0eXBlKSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNo
MzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5
VHlwZSh0eXBlKSkpOworCiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMg
PSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5
UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CkBAIC0zMTExLDcgKzMyOTIs
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
LUpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUg
dHlwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CkBAIC0zMTM2LDcgKzMzMTcsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVG
b3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAg
ICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNo
LCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAg
ICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5r
KHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVk
QXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5
cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBp
bkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBl
bWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmlu
ZGV4IGMyMmM3NzA0Mjg5YWJiMDgyZjlkZGYyMGQ4YzJmZjY2NWRmZDU2ZTIuLjBlM2JlNmFmODQy
Y2U5ZDAyNjIxMzVkZWQ1NmM5YjBhZWJkZTBiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTMxLDkgKzEzMSw5
IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNl
UmVncy5wYXlsb2FkR1BSKCkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNl
LCBiYXNlUmVncy50YWdHUFIoKSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KSwKLSAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAg
ICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTY2LDggKzE2Niw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3Bl
cnR5UmVncy50YWdHUFIoKSk7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAotICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIHByb3Bl
cnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CkBAIC0yNTcsOCArMjU3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRC
eVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5
KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC0zMDUsOCArMzA1LDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2VHUFIsIHByb3BlcnR5
R1BSLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3Vs
dFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlWYWxzLmFw
cGVuZChnZW4pOwpAQCAtMzkzLDggKzM5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgICAg
ICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQ
cml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMyw4ICs0MzMs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQ
cml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFu
ZFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXMuYXBwZW5kKGdlbik7CkBAIC00ODYsMTYgKzQ4NiwxNiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmlsZSk7CiAgICAgc3dp
dGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBl
bWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3Vi
bGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRE
b3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29u
dGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwg
YnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0go
KTsKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5n
U2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTUyMCw2ICs1MjAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZAogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShi
eVZhbEluZm8pOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKQEAgLTU3
Miw3ICs1NzMsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRl
Y29kZS5tX2Jhc2U7CkBAIC01ODEsNiArNTgyLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRB
cnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkK
IAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKKyAgICBVTlVTRURfUEFSQU0oYnlWYWxJ
bmZvKTsKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKQEAgLTY2MCw4
ICs2NjIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7Cisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlk
R1BSUmVnLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dl
dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzAxLDggKzcwMyw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRS
ZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6Okdl
dEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7
CkBAIC03NDgsOCArNzUwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZh
bGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dl
dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzkxLDggKzc5Myw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KTsKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOworICAgICAgICBtX2Nv
ZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0
UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQs
IHJlZ1QzKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkc1dp
dGhUaGlzLmFwcGVuZChnZW4pOwpAQCAtODM1LDkgKzgzNyw5IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAorICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJ
bnZhbGlkR1BSUmVnLAogICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgp
LCBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTg4Miw4ICs4ODQsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAg
ICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YlJvdXRpbmUuaAppbmRleCA4ODE0NjQwZTZhY2NlYWMxYjliMDY4YTQwYzg5NDI4MzQ4NmNk
ZmFiLi4yYmY4OGIyOWVlYWExZmVmNDMzZDc5NjgxZjY0ZGIzOGMyZmRiMzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCkBAIC0zNSw2ICszNSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorY2xh
c3MgQWNjZXNzQ2FzZTsKKwogLy8gVGhpcyBpcyBhIGJhc2UtY2xhc3MgZm9yIEpJVCBzdHViIHJv
dXRpbmVzLCBhbmQgYWxzbyB0aGUgY2xhc3MgeW91IHdhbnQKIC8vIHRvIGluc3RhbnRpYXRlIGRp
cmVjdGx5IGlmIHlvdSBoYXZlIGEgcm91dGluZSB0aGF0IGRvZXMgbm90IG5lZWQgYW55CiAvLyBo
ZWxwIGZyb20gdGhlIEdDLiBJZiBpbiBkb3VidCwgdXNlIG9uZSBvZiB0aGUgb3RoZXIgc3R1YiBy
b3V0aW5lcy4gQnV0CkBAIC05OCw2ICsxMDAsOCBAQCBjbGFzcyBKSVRTdHViUm91dGluZSB7CiAg
ICAgLy8gZGVzdHJveWVkLgogICAgIHZpcnR1YWwgYm9vbCB2aXNpdFdlYWsoVk0mKTsKIAorICAg
IHZpcnR1YWwgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBv
YnNlcnZlWmVyb1JlZkNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2ODYyNzNk
ZGE4MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4uNDQ3MDU1YmZlOGFiZWZhYTU2ZmU3OGU4MDY4
ZDJjYzY2ODkzMjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENvZGVPcmln
aW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25l
ciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0
IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8dWlu
dDMyX3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVm
LCB2bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSwgeyB9KQogICAg
ICwgbV92YXJpYW50cyhjYXNlcy5zaXplKCkpCiAgICAgLCBtX2Zhc3RDb3VudHMoV1RGTW92ZShm
YXN0Q291bnRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDM1
OTNjY2U4ODYwODgwMTgzNDZhODA4ZTVmODY0Nzg3MWE0NDFiMjkuLmFkYzdiYzAzMjZjYTYzOGQ2
ODk5YTk5ZmY4ZjZkMDY2NmU5YzM3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcApAQCAtNzEsOCArNzEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCkKK3N0YXRp
YyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKKyAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICByZXR1cm4gc3R1YkluZm8ubV9zbG93
T3BlcmF0aW9uLnJldGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKTsKKyAgICBDb2RlTG9jYXRpb25D
YWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwgPSBzdHViSW5mby5tX3Nsb3dQYXRoQ2FsbExvY2F0
aW9uOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRUeXBlOjpGVExKSVQpIHsKICAgICAgICAgRnVuY3Rpb25QdHI8SklUVGh1bmtQdHJUYWc+
IHRhcmdldCA9IE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldDxKSVRUaHVua1B0clRhZz4o
Y2FsbCk7CkBAIC0xMDUsNiArMTA4LDE1IEBAIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFn
Z2VkPE9wZXJhdGlvblB0clRhZz4oKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlcGF0Y2hTbG93UGF0
aENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbikKK3sKKyAgICBp
ZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fc2xvd09w
ZXJhdGlvbiA9IG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5tX3Nsb3dQYXRoQ2FsbExvY2F0aW9uLCBuZXdDYWxsZWVGdW5jdGlv
bik7Cit9CisKIGVudW0gSW5saW5lQ2FjaGVBY3Rpb24gewogICAgIEdpdmVVcE9uQ2FjaGUsCiAg
ICAgUmV0cnlDYWNoZUxhdGVyLApAQCAtMjA5LDcgKzIyMSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayoKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKICAg
ICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5h
bWUgfHwga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDsKIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgpIHsKICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZUNlbGwpKSB7CkBA
IC0yMTksNyArMjMxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0Qnko
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVB
cnJheUxlbmd0aChzdHViSW5mbywganNDYXN0PEpTQXJyYXkqPihiYXNlQ2VsbCkpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2lu
ZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRBcnJheUxlbmd0aChsb2NrZXIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMjI3LDEwICsyMzksMTEgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKgogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwg
Y29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0aCwgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmluZyhiYXNlQ2VsbCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldCAmJiBJbmxpbmVB
Y2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKSkgeworICAgICAgICAgICAg
ICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAg
ICAgICAgICAgICAgICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1
YkluZm8pKSB7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9
IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRTdHJpbmdMZW5ndGgobG9ja2VyKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTI4MiwxMiArMjk1LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayoKICAgICAgICAgICAgICAgICAmJiAhc2xvdC53YXRjaHBvaW50U2V0KCkKICAgICAgICAgICAg
ICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkKICAgICAg
ICAgICAgICAgICAmJiAhbG9hZFRhcmdldEZyb21Qcm94eSkgewotCiAgICAgICAgICAgICAgICAg
Ym9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9w
ZXJ0eUFjY2VzcyhzdHViSW5mbywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAg
ICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5U2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNs
b3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNl
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemlu
Z0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1Bh
dGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVu
Y3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0R2V0QnlJZFNl
bGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsK
ICAgICAgICAgICAgICAgICB9CkBAIC00MjUsNyArNDM3LDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKgogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwg
YmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHBy
b3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzksNyArNDUxLDcgQEAgdm9pZCByZXBh
dGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTVmFsdWUgYmEKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywga2luZCkgPT0gR2l2
ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihr
aW5kKSk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
YXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKIH0KIAogCkBAIC01MjksNyArNTQxLDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVu
dGlmaWVyKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFj
Y2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC01NDAsNyArNTUyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKIHZvaWQg
cmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQogewogICAgIGlmICh0cnlDYWNoZUFycmF5R2V0QnlWYWwoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2UsIGluZGV4LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNo
ZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8u
c2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CisgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uR2V0QnlW
YWxHZW5lcmljKTsKIH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1
bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2luZCBwdXRLaW5kKSAtPiBk
ZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkKQEAgLTYzNiw3ICs2NDgsNyBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICBpZiAoaXNQcm94eSAmJiAocHV0S2lu
ZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0S2luZCA9PSBQdXRLaW5k
OjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7Cisg
ICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmJh
c2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CiAgICAgICAgICAg
ICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpFeGlzdGluZ1Byb3BlcnR5KSB7
CkBAIC02NTgsNyArNjcwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0
ZVNlbGZQcm9wZXJ0eVJlcGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRP
ZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRTZWxmUGF0
Y2gsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNl
VmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9w
dGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3By
aWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNlKGxvY2tlciwgY29kZUJs
b2NrLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC04MDEsNyArODEzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7
CiAKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
KyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVC
bG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihy
ZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgxNSw3ICs4MjcsNyBAQCB2
b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3Qs
IHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAg
ICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdl
bmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCiBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNN
QU1vZGUgZWNtYU1vZGUpCkBAIC04NDYsNyArODU4LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2MKICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAog
ICAgICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBuZXdPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtODc0LDcgKzg4Niw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUo
KSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAgICAg
ICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkp
KSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8s
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7
CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC04OTEsOSArOTAzLDkgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAKICAgICBpZiAodHJ5Q2Fj
aGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRT
dHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQsIGVjbWFNb2RlKSA9PSBHaXZl
VXBPbkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEdl
bmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgICAgICBpZiAo
a2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7
CisgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CiAgICAgfQogfQogCkBAIC05MzcsNyArOTQ5LDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAg
ICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19J
QygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVu
dCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0
dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUpOworICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC05ODQsNyAr
OTk2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogCiAgICAg
ICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKIAotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKKyAgICAg
ICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgICAg
ICAgICB2bSwgY29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNz
Q2FzZTo6SW5NaXNzLCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kID8gc2xvdC5jYWNoZWRPZmZzZXQo
KSA6IGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNz
Q2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCks
IHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CkBAIC05OTMsNyArMTAwNSw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgIExPR19J
QygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlk
ZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6
cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEwMDcsNyArMTAxOSw3IEBAIHZvaWQgcmVwYXRjaEluQnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqCiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYg
KHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkKTsKIH0KIAogc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCkBAIC0xMDMyLDcg
KzEwNDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVC
cmFuZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAgIExPR19J
QygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0
ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7CisgICAgICAgIFJlZjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQo
dm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKIAogICAgICAgICByZXN1bHQgPSBz
dHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVD
TUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTEwNDAs
NyArMTA1Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0
ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZFJl
cGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3Bl
cnR5KSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAg
ICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA1NCw3
ICsxMDY2LDcgQEAgdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sKICAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVDaGVja1ByaXZh
dGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgYnJhbmRJRCwgc3R1
YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAK
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKQEAgLTEw
OTEsNyArMTEwMyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZh
dGVCcmFuZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAgIExP
R19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgb2xkU3RydWN0dXJl
LT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2
YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5l
d1N0cnVjdHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShs
b2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5k
SUQsIFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMDk5LDcgKzExMTEsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OlNldFByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJl
LT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJs
b2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTExMyw3ICsxMTI1LDcgQEAg
dm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLAogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNoZVNldFByaXZhdGVCcmFuZChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCAgYnJhbmRJRCwgc3R1
YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQ
cml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKQEAgLTExMzMsNyArMTE0
NSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAg
ICAgIAogICAgICAgICBKU0NlbGwqIHZhbHVlID0gdmFsdWVWYWx1ZS5hc0NlbGwoKTsKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nl
c3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7CiAgICAgICAgIGlmIChwcm90b3R5
cGUpIHsKICAgICAgICAgICAgIGlmICghanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB2YWx1
ZSkpIHsKQEAgLTExNjgsOSArMTE4MCwxMyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hK
dW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKLSAgICAgICAg
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSByZXN1bHQuY29kZSgpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKAor
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCisgICAgICAgICAg
ICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMTg1
LDcgKzEyMDEsNyBAQCB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKAogewogICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAodHJ5Q2FjaGVJbnN0YW5j
ZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZhbHVlLCBwcm90b3R5cGVWYWx1ZSwg
c3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKIH0KIAog
c3RhdGljIHZvaWQgbGlua1Nsb3dQYXRoVG8oVk0mLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5m
bywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBjb2RlUmVmKQpA
QCAtMTIwMiw3ICsxMjE4LDcgQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0mIHZtLCBDYWxs
TGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2Fs
bExpbmtJbmZvKTsKICAgICBsaW5rU2xvd1BhdGhUbyh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFs
VGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dT
dHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSkp
OwogfQogCiBzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQpA
QCAtMTMyMCw3ICsxMzM2LDcgQEAgc3RhdGljIHZvaWQgbGlua1ZpcnR1YWxGb3IoVk0mIHZtLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0kKIAogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmly
dHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIHJldmVydENhbGwodm0sIGNhbGxM
aW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NB
d2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgIGNhbGxM
aW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFs
VGh1bmssIHZtLCB7IH0pKTsKICAgICBjYWxsTGlua0luZm8uc2V0Q2xlYXJlZEJ5VmlydHVhbCgp
OwogfQogCkBAIC0xNjQxLDE0ICsxNjU3LDE0IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAK
IHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVP
cHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJB
c0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFB1dEJ5
SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsK
ICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdE9wdGltaXplKTsKLSAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OworICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2Fz
dDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mbyku
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGltaXplZEZ1bmN0aW9u
OwogICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Qg
fHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUp
CiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGlt
aXplOwpAQCAtMTY2NSw0NSArMTY4MSw0OCBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6
ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAg
ICB9CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wdGlt
aXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNz
KGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7
CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAgIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAg
ZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Ci0g
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93
UGF0aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFj
Y2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2Nr
LCBzdHViSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCitzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHVi
SW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJl
ZElDKCkpCisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbjsKKyAgICBlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVt
cChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlv
bik7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBJbmxpbmVB
Y2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQog
Ci12b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lk
IHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogewotICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5mbyk7CisgICAgcmVz
ZXRQYXRjaGFibGVKdW1wKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0Q2hl
Y2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRp
bWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Cisg
ICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29k
ZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVz
ZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5m
byk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlD
Q29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNPYmplY3QqIGNh
bGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggMzEzNzlkYzRlNWE5ZGMy
ZGM2ZWE0OTMxNzc5NDcyNmEwMDIwMzUxYS4uM2ExOWZkMzY1NDlkMWE4NDgwOWY5NGRhZGEyZGZi
ZTU3MDAwZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTY1LDcgKzY1
LDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0
QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxC
eUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRJ
bnN0YW5jZU9mKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0Q2hl
Y2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVz
ZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNhbGw8SlNJ
bnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVu
Y3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5k
ZXggZDk0OTdlYmQ0ZjBiYTZmNjI1NzlkY2Q1NDIzYTdiOTg0N2U5NDRlMi4uN2UwZTU5MzI3NDVi
OGFhZWRiOTkwZDk4ZGE2NjI3Nzg0MzVjZTIzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzYsNiArNTM2LDggQEAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZl
ciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlVG9wTGV2ZWxBd2Fp
dCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtleXdvcmQgYXQgdGhlIHRvcCBsZXZl
bCBvZiBhIG1vZHVsZS4iKSBcCiAgICAgdihCb29sLCB2ZXJib3NlRXhlY3V0YWJsZVBvb2xBbGxv
Y2F0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VTaGFyZWRJ
QywgaXNBUk02NCgpLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYXJlZElD
SW5PcHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAKIAogZW51bSBPcHRp
b25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjBm
OThmNTYzYTc2ZWRlZGE1MmEwNzI4ODNlNGJhZmViZDcyZGVlNS4uNWYxNDVlZjM3ZjFkNDc1MzI0
NTJmODQ2OTU3NDQ5ODMwZWVjMTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNLmgi
CiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCkBAIC01NjYs
NiArNTY3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6
OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9K
SVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JD
YWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgICAgIG1fc2hhcmVkSklUU3R1YnMgPSBtYWtlVW5pcXVlPFNoYXJl
ZEpJVFN0dWJTZXQ+KCk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKQEAgLTY0OSw2
ICs2NTEsMTAgQEAgVk06On5WTSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2Ny
YXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRj
aEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUKQorICAgIG1fc2hhcmVkSklU
U3R1YnMgPSBudWxscHRyOworI2VuZGlmCiB9CiAKIHZvaWQgVk06OnByaW1pdGl2ZUdpZ2FjYWdl
RGlzYWJsZWRDYWxsYmFjayh2b2lkKiBhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCmluZGV4IDJkM2NkNDY2ODg4YmNlM2FmYjVhODg5MzYxNzI3NThmMThjOTNmYTYuLjRkZTk1
ZjYzOGIxZTIzODU5YTFiMzRlOTE3ZGM5M2FhMmY5ZjM1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaApAQCAtMTc0LDYgKzE3NCw3IEBAIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
OwogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsK
K2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3Mg
U291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwpAQCAtODQxLDExICs4
NDIsMTMgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJs
aWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJzOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJU3R1YihUaHVua0dlbmVyYXRvcik7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJTZXQ+IG1fc2hhcmVkSklUU3R1YnM7CiAKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
VEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCisKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5j
dGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rv
ciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430184</attachid>
            <date>2021-05-31 00:49:39 -0700</date>
            <delta_ts>2021-05-31 11:40:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210531004938.patch</filename>
            <type>text/plain</type>
            <size>429700</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi5kOTZiMzdhMjlhNDgxYjYw
NjdjMzhjMWEwZjk1ODZiZDk1NzY5MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzEgQEAKKzIwMjEtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6dmlzaXRXZWFrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmg6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNjZXNzR2VuZXJhdGlvblN0YXRlKToK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0
dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmFwcGVuZENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBl
bmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNl
dFJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250
ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9G
VExTbG93UGF0aENhbGxLZXkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAg
ICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRs
L0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0
b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0Nv
bGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hSZWdBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hFeHRyYVJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaE5vbkFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6YWRkR1BSQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9u
OjphZGRHUFJFeHRyYUFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVj
dGlvbjo6YWRkU3RhY2tBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxl
Y3Rpb246OmFkZFBva2UpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBv
a2VPZmZzZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjptYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNFbnRyeUltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbCk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAg
IChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToK
KyAgICAgICAgKEpTQzo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUlDSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAo
SlNDOjpjcmVhdGVKSVRTdHViUm91dGluZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5oOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0
L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6dXNlU2hhcmVkSUMpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJ
VEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdENvbW1vbik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJ
VEdldEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJ
VEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6
OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9y
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpT
Qzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRH
ZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
SklURGVsQnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZh
bEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5z
dGFuY2VPZkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2Rl
KToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJl
c3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3By
b3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3By
aXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5
X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFt
ZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdERvdWJsZUxvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRDb250aWd1b3VzTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEFycmF5U3RvcmFnZUxvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93
aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJv
dXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmtleXMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6d2Vha1JlZmVyZW5jZXMgY29uc3QpOgorICAgICAg
ICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSk6Cisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFy
Z2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNsb3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlE
KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3Rh
bmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAo
SlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAg
KEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6Cisg
ICAgICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9m
KToKKyAgICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OnJlc2V0U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTGV2
ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5kZXggZTUxNzU3ZTli
OGZjNjQyODc4MjdjMTZkMDJkMjFjYzIxOGZiMTMyNi4uODNjYjM2ZDA2ZjgzMTJjODk1ZjZhNDli
MjU2YmJlYzM0NjI3M2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmgKQEAgLTIzNCw4ICsyMzQsOCBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICAgICB0
ZW1wbGF0ZTxQdHJUYWcgdGFnPgogICAgIENvZGVMb2NhdGlvbkNhbGw8dGFnPiBsb2NhdGlvbk9m
KENhbGwgY2FsbCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpM
aW5rYWJsZSkpOwotICAgICAgICBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsK
KyAgICAgICAgLy8gQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6OkxpbmthYmxlKSk7CisgICAg
ICAgIC8vIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOwogICAgICAgICByZXR1
cm4gQ29kZUxvY2F0aW9uQ2FsbDx0YWc+KGdldExpbmtlckFkZHJlc3M8dGFnPihhcHBseU9mZnNl
dChjYWxsLm1fbGFiZWwpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggYTI0NWU3N2U0M2U3
MGMwZWFhMjQzOTY0M2FkYTFmYzAzNGNjNzQxZC4uZTViMGIyZmY3ODkwYjRmZGIyMjAxZmE4NjFi
NzQzZWNiMTA0YzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMjIwLDE5ICsyMjAsMTkgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAg
ICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRh
cmdldEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChB
ZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGwo
QWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRhZyAh
PSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKICAgICAgICAgQVNTRVJUKCFP
cHRpb25zOjp1c2VKSVRDYWdlKCkgfHwgY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5
cGU6OkpJVCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lz
dGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQog
Ci0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHRhZykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRhZyAhPSBkYXRhVGVtcFJlZ2lzdGVy
KTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRh
Zyk7CisgICAgICAgIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgY2FsbE9wZXJhdGlvbihjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+IG9wZXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAppbmRleCBjNWZmNzgyMjYyZTcxODViODc1MDQ4NzBkNGI0YzliYzQ5MmE0
YWE0Li44OWQ3YzViMTRlNmNmZjFiOWI1ZTNiNDVjZjQ0ZGM5ZDhlZjM3NGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC02OCw3ICs2OCw3
IEBAIEFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25kaXRp
b25TZXQuaXNWYWxpZCgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0
aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hh
aW4pCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIEluSGl0OgpAQCAtMTA1LDEwICsxMDUsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAor
UmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRp
b25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFp
bikKIHsKQEAgLTEyMiwzNCArMTIyLDM0IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3ND
YXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRl
bnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90
b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0
cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CiAgICAgQVNTRVJUKCFuZXdT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVj
dHVyZSwgeyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZt
LCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7
IH0pKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1JlZjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBz
dHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0
LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCitSZWY8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3Ry
dWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgU2V0UHJpdmF0
ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFBy
aXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0s
IHsgfSkpOwogfQogCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8oCitS
ZWZQdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAogICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgc3dpdGNoIChzdHViSW5mby5jYWNo
ZVR5cGUoKSkgewpAQCAtMTg4LDkgKzE4OCw5IEBAIEpTT2JqZWN0KiBBY2Nlc3NDYXNlOjphbHRl
cm5hdGVCYXNlKCkgY29uc3QKICAgICByZXR1cm4gY29uZGl0aW9uU2V0KCkuc2xvdEJhc2VDb25k
aXRpb24oKS5vYmplY3QoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgp
IGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgQWNj
ZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBBY2Nlc3ND
YXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KQEAgLTk2NCw2ICs5NjQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1
YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAg
ICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8u
bV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAg
ICAgICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2Ny
YXRjaEdQUigpOwpAQCAtMTA2MSw2ICsxMDYzLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BS
KTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRj
aEdQUigpOwogCkBAIC0xMTQ0LDYgKzExNDgsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
V2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxv
Y2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHVi
SW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIp
OwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNo
R1BSKCk7CiAKQEAgLTEyMDUsNiArMTIxMSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVX
aXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJ
bmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7
CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hH
UFIoKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTMxNyw2ICsxMzI1LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAg
aWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQ
UiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEzOTQsNiArMTQwNCw4MSBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiAgICAgZ2VuZXJhdGVJbXBsKHN0YXRlKTsKIH0KIAordm9pZCBBY2Nlc3NDYXNlOjpjb2xsZWN0
SW52YXJpYW50c0ZvckNvZGVSZXVzZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS5tX3ZtOworCisgICAgc3dp
dGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNl
IFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkU2NvcGVkQXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREaXJl
Y3RBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVk
QXJyYXlVaW50OENsYW1wZWRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxv
YWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheUludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMy
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJ
bmRleGVkVHlwZWRBcnJheUZsb2F0NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6
CisgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6
CisgICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlT
dG9yYWdlTG9hZDoKKyAgICBjYXNlIEluc3RhbmNlT2ZHZW5lcmljOgorICAgIGNhc2UgQ2hlY2tQ
cml2YXRlQnJhbmQ6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBH
ZXRHZXR0ZXI6CisgICAgY2FzZSBHZXR0ZXI6CisgICAgY2FzZSBTZXR0ZXI6CisgICAgY2FzZSBD
dXN0b21WYWx1ZUdldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgorICAgIGNh
c2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjogewor
ICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChtX29mZnNldCkpIHsKKyAgICAgICAgICAgIFN0cnVj
dHVyZSogY3VyclN0cnVjdHVyZTsKKyAgICAgICAgICAgIGlmICghaGFzQWx0ZXJuYXRlQmFzZSgp
KQorICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUoKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gYWx0ZXJuYXRlQmFzZSgp
LT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgY3VyclN0cnVjdHVyZS0+c3RhcnRXYXRjaGlu
Z1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBvZmZzZXQoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbiA6IG1fY29u
ZGl0aW9uU2V0KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BvbHlQcm90b0FjY2Vzc0No
YWluKTsKKworICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydDo6
RW5zdXJlV2F0Y2hhYmlsaXR5KSkgeworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9p
bnQoY29kZUJsb2NrLCBjb25kaXRpb24pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFsbG93IGVxdWl2YWxlbmNlIHdoZW4g
aXQncyB3YXRjaGFibGUuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbmRpdGlvbi5jb25kaXRp
b24oKS5raW5kKCkgIT0gUHJvcGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlKTsKKworICAgICAg
ICBpZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAgICAgICAvLyBUaGUgcmVhc29uIHdoeSB0aGlz
IGNhbm5vdCBoYXBwZW4gaXMgdGhhdCB3ZSByZXF1aXJlIHRoYXQgUG9seW1vcnBoaWNBY2Nlc3Mg
Y2FsbHMKKyAgICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKCkgb25seSBhZnRlciBp
dCBoYXMgdmVyaWZpZWQgdGhhdAorICAgICAgICAgICAgLy8gQWNjZXNzQ2FzZTo6Y291bGRTdGls
bFN1Y2NlZWQoKSByZXR1cm5lZCB0cnVlLgorCisgICAgICAgICAgICBkYXRhTG9nKCJUaGlzIGNv
bmRpdGlvbiBpcyBubyBsb25nZXIgbWV0OiAiLCBjb25kaXRpb24sICJcbiIpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFdlIHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2VhayByZWZlcmVuY2UgdGhhdCBpc24ndCBv
dGhlcndpc2UgbGlzdGVkIGFueXdoZXJlLgorICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgc3RhdGUud2Vha1Jl
ZmVyZW5jZXMuYXBwZW5kKHN0cnVjdHVyZS0+aWQoKSk7CisgICAgfQorfQorCiB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogewogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKQEAgLTE0MTcsNyAr
MTUwMiw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSYgc3RhdGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BvbHlQcm90b0FjY2Vzc0No
YWluKTsKIAogICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydDo6
RW5zdXJlV2F0Y2hhYmlsaXR5KSkgewotICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9p
bnQoY29uZGl0aW9uKTsKKyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVC
bG9jaywgY29uZGl0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAg
LTE0MzUsNyArMTUyMCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gV2Ugd2lsbCBlbWl0IGNvZGUgdGhh
dCBoYXMgYSB3ZWFrIHJlZmVyZW5jZSB0aGF0IGlzbid0IG90aGVyd2lzZSBsaXN0ZWQgYW55d2hl
cmUuCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5z
dHJ1Y3R1cmUodm0pOwotICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5hcHBlbmQoV3JpdGVC
YXJyaWVyPEpTQ2VsbD4odm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSk7CisgICAgICAgIHN0YXRl
LndlYWtSZWZlcmVuY2VzLmFwcGVuZChzdHJ1Y3R1cmUtPmlkKCkpOwogCiAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb25kaXRpb24ub2JqZWN0KCkpLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKApAQCAtMTU4Miw3
ICsxNjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2Fy
eSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0
ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwo
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgwMiw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5k
aWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJ
bmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9
PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE4MTQsOCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAg
ICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2st
PnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRl
Lm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChj
b2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0
ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBz
cGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsK
KyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQ
b2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFs
dWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyAr
MTkzNiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVy
QnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUu
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOwor
CisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAg
ICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJz
Ojpscik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsyMDMz
LDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFz
ZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1
ZVJlZ3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2Vy
dmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYg
KzIxMzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9u
U3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygp
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0yMTkxLDYgKzIyOTcsMTMg
QEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5VHlwZShBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBKSVRTdHVi
Um91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTAzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tD
b25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nl
c3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3Qg
Y2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhl
bSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0Fj
Y2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1f
dHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhz
Lm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5
ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5t
X3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobGhzLm1faWRlbnRpZmllciAhPSByaHMubV9pZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRpdGlvblNldCAhPSByaHMu
bV9jb25kaXRpb25TZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAobGhz
Lm1fdHlwZSkgeworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2Fz
ZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxl
dGVNaXNzOgorICAgIGNhc2UgUmVwbGFjZToKKyAgICBjYXNlIE1pc3M6CisgICAgY2FzZSBHZXRH
ZXR0ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIEFycmF5
TGVuZ3RoOgorICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgorICAgIGNhc2UgRGlyZWN0QXJndW1lbnRz
TGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgQ2hlY2tQ
cml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBJbmRleGVk
SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6CisgICAgY2FzZSBJbmRleGVk
Q29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9yYWdlTG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFy
Z3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNh
c2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eVVpbnQ4Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRU
eXBlZEFycmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjog
eworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNldHRlciByZWxpZXMgb24gQ29kZUJsb2NrLCB3aGlj
aCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JH
ZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vz
c29yU2V0dGVyOiB7CisgICAgICAgIC8vIFRoZXkgYXJlIGVtYmVkZGluZyBKU0dsb2JhbE9iamVj
dCB0aGF0IGFyZSBub3QgdGllZCB0byBzaGFyaW5nIEpJVFN0dWJSb3V0aW5lLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6IHsKKyAgICAg
ICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAg
ICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+KCk7Cisg
ICAgICAgIHJldHVybiBsaHNkLm1faW50cmluc2ljRnVuY3Rpb24gPT0gcmhzZC5tX2ludHJpbnNp
Y0Z1bmN0aW9uOworICAgIH0KKworICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDogeworICAg
ICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7Cisg
ICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsK
KyAgICAgICAgcmV0dXJuIGxoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmplY3QgPT0gcmhzZC5tX21v
ZHVsZU5hbWVzcGFjZU9iamVjdAorICAgICAgICAgICAgJiYgbGhzZC5tX21vZHVsZUVudmlyb25t
ZW50ID09IHJoc2QubV9tb2R1bGVFbnZpcm9ubWVudAorICAgICAgICAgICAgJiYgbGhzZC5tX3Nj
b3BlT2Zmc2V0ID09IHJoc2QubV9zY29wZU9mZnNldDsKKyAgICB9CisKKyAgICBjYXNlIEluc3Rh
bmNlT2ZIaXQ6CisgICAgY2FzZSBJbnN0YW5jZU9mTWlzczoKKyAgICBjYXNlIEluc3RhbmNlT2ZH
ZW5lcmljOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8SW5zdGFuY2VPZkFjY2Vzc0Nh
c2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+
KCk7CisgICAgICAgIHJldHVybiBsaHNkLm1fcHJvdG90eXBlID09IHJoc2QubV9wcm90b3R5cGU7
CisgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
aAppbmRleCBiZGQxYjIzN2Q2MThhMmNjZTgyNzIwZjcyY2E3NTM3ZGUzZmE3MDY4Li5mY2RmZTA5
YjNlMzY1ZTAxYzk2ZjgxODY4YzQzMjdjZDMzOWNjODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTI4LDEwICsyOCwxMyBAQAogI2lmIEVOQUJM
RShKSVQpCiAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSklU
U3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCiAjaW5jbHVkZSAiUG9seVByb3RvQWNjZXNz
Q2hhaW4uaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC03OSw3ICs4Miw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KEFjY2Vzc0Nhc2UpOwogLy8gV2Ugd2lsbCBzb21ldGltZXMgYnVmZmVyIGNvbW1pdHRlZCBBY2Nl
c3NDYXNlcyBpbiB0aGUgUG9seW1vcnBoaWNBY2Nlc3Mgb2JqZWN0IGJlZm9yZSBnZW5lcmF0aW5n
CiAvLyBjb2RlLiBUaGlzIGFsbG93cyB1cyB0byBvbmx5IHJlZ2VuZXJhdGUgb25jZSB3ZSd2ZSBh
Y2N1bXVsYXRlZCAoaG9wZWZ1bGx5KSBtb3JlIHRoYW4gb25lIG5ldwogLy8gQWNjZXNzQ2FzZS4K
LWNsYXNzIEFjY2Vzc0Nhc2UgeworY2xhc3MgQWNjZXNzQ2FzZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBY2Nlc3NDYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lU
SF9IRUFQX0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiBwdWJsaWM6CiAgICAgZW51bSBBY2Nlc3NU
eXBlIDogdWludDhfdCB7CkBAIC0xNDcsMTkgKzE1MCwxOSBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlVHlwZT4obmV3IEFjY2Vz
c0Nhc2VUeXBlKGFyZ3VtZW50cy4uLikpOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAorICAg
IHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0
LAogICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisg
ICAgc3RhdGljIFJlZlB0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxs
KiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYp
OwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUo
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVh
dGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3Jl
YXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7
CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYs
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3RhdGljIFJlZlB0cjxB
Y2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCiAgICAgQWNjZXNzVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlOyB9CkBAIC0yNTMsMTEgKzI1Niw0MyBAQCBjbGFzcyBBY2Nlc3NDYXNl
IHsKICNlbHNlCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koU3RydWN0
dXJlU3R1YkluZm8mKSB7IH0KICNlbmRpZgotICAgIAorCisgICAgdm9pZCBjb2xsZWN0SW52YXJp
YW50c0ZvckNvZGVSZXVzZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBDb2RlQmxvY2sqKTsKKwor
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gSXQgaXMgcG9zc2li
bGUgdGhhdCBtX3N0cnVjdHVyZSBpcyBhbHJlYWR5IGRlc3Ryb3llZC4gV2UgYXJlIGRlc3Ryb3lp
bmcgSklUU3R1YlJvdXRpbmUsIGFuZCB0aGlzIGRlc3RydWN0aW9uIGlzIGRyaXZlbgorICAgICAg
ICAvLyBieSBDb2RlQmxvY2sncyBkZXN0cnVjdG9yICh0eXBpY2FsbHkpLiBBbmQgYXQgdGhhdCB0
aW1lLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFscmVhZHkgZGVzdHJv
eWVkIGJlZm9yZQorICAgICAgICAvLyBDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuIEJ1dCBoZXJl
LCB3ZSBkbyBub3QgY2FyZSBhYm91dCB0aGUgbGl2ZW5lc3Mgb2YgdGhpcyBzdHJ1Y3R1cmUgc2lu
Y2UgdGhlIG93bmVyIHNob3VsZCBrZWVwIGl0LAorICAgICAgICAvLyBhbmQgaWYgaXQgaXMgZGVh
ZCwgaXQgaXMgb25seSBwb3NzaWJsZSBpbiB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3duZXIuIFdl
IGp1c3QgZ2V0IGEgcG9pbnRlciB2YWx1ZSB2aWEgdW52YWxpZGF0ZWRHZXQoKS4KKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVIYXNoKG1fY29uZGl0aW9uU2V0Lmhhc2goKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fdHlwZSksIG1fdmlhUHJveHksIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCks
IG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbEluU2hhcmluZyhjb25z
dCBBY2Nlc3NDYXNlJiwgY29uc3QgQWNjZXNzQ2FzZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQWNj
ZXNzQ2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7Ci0gICAgQWNjZXNzQ2Fz
ZShBY2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsKLSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nh
c2UmIG90aGVyKSA9IGRlZmF1bHQ7CisgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYgb3RoZXIp
CisgICAgICAgIDogbV90eXBlKFdURk1vdmUob3RoZXIubV90eXBlKSkKKyAgICAgICAgLCBtX3N0
YXRlKFdURk1vdmUob3RoZXIubV9zdGF0ZSkpCisgICAgICAgICwgbV92aWFQcm94eShXVEZNb3Zl
KG90aGVyLm1fdmlhUHJveHkpKQorICAgICAgICAsIG1fb2Zmc2V0KFdURk1vdmUob3RoZXIubV9v
ZmZzZXQpKQorICAgICAgICAsIG1fc3RydWN0dXJlKFdURk1vdmUob3RoZXIubV9zdHJ1Y3R1cmUp
KQorICAgICAgICAsIG1fY29uZGl0aW9uU2V0KFdURk1vdmUob3RoZXIubV9jb25kaXRpb25TZXQp
KQorICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShvdGhlci5tX3BvbHlQ
cm90b0FjY2Vzc0NoYWluKSkKKyAgICAgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShvdGhlci5t
X2lkZW50aWZpZXIpKQorICAgIHsgfQorCisgICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNl
JiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICAgICAsIG1fc3Rh
dGUob3RoZXIubV9zdGF0ZSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KG90aGVyLm1fdmlhUHJveHkp
CisgICAgICAgICwgbV9vZmZzZXQob3RoZXIubV9vZmZzZXQpCisgICAgICAgICwgbV9zdHJ1Y3R1
cmUob3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQob3RoZXIubV9j
b25kaXRpb25TZXQpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihvdGhlci5tX3Bv
bHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICAsIG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50
aWZpZXIpCisgICAgeyB9CiAKICAgICBBY2Nlc3NDYXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNz
Q2FzZSYpID0gZGVsZXRlOwogICAgIHZvaWQgcmVzZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1v
cmRpYWw7IH0KQEAgLTI3NSw3ICszMTAsNyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2Ugb2YgaG93IEFjY2Vzc0Nhc2UgcHV0cyBw
b3N0LWdlbmVyYXRpb24gdGhpbmdzIGludG8gaXRzZWxmLgogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0NTYKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmPEFjY2Vzc0Nh
c2U+IGNsb25lKCkgY29uc3Q7CiAKICAgICAvLyBQZXJmb3JtIGFueSBhY3Rpb24gdGhhdCBtdXN0
IGJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXBvY2ggaW4gd2hpY2ggdGhlIGNh
c2UKICAgICAvLyB3YXMgY3JlYXRlZC4gUmV0dXJucyBhIHNldCBvZiB3YXRjaHBvaW50IHNldHMg
dGhhdCB3aWxsIG5lZWQgdG8gYmUgd2F0Y2hlZC4KQEAgLTMxNSw2ICszNTAsMTgwIEBAIGNsYXNz
IEFjY2Vzc0Nhc2UgewogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsK
IAorY2xhc3MgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMgSklUU3R1YlJv
dXRpbmUgeworcHVibGljOgorICAgIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKFZNJiB2bSwgY29u
c3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgRml4
ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiYmIHdlYWtSZWZlcmVuY2VzKQorICAgICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCisg
ICAgICAgICwgbV92bSh2bSkKKyAgICAgICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkKKyAgICAg
ICAgLCBtX3dlYWtSZWZlcmVuY2VzKFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0
cnVjdHVyZUlEPiogd2Vha1JlZmVyZW5jZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV93ZWFr
UmVmZXJlbmNlczsgfQorCisgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+PiBtX2tleXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+IG1fd2Vha1JlZmVyZW5j
ZXM7Cit9OworCitjbGFzcyBTaGFyZWRKSVRTdHViU2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsKK3B1YmxpYzoKKyAgICBTaGFyZWRKSVRTdHViU2V0
KCkgPSBkZWZhdWx0OworCisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRml4ZWRWZWN0
b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYga2V5cykKKyAgICB7CisgICAgICAgIEhhc2hlciBoYXNo
ZXI7CisgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykKKyAgICAgICAgICAgIFdURjo6YWRk
KGhhc2hlciwga2V5LT5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAg
ICB9CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0cnVjdCBLZXkgeworICAgICAgICAg
ICAgS2V5KCkgPSBkZWZhdWx0OworCisgICAgICAgICAgICBLZXkoR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyB2YWx1ZUdQUiwgR1BSUmVnIGV4dHJhR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMsIEpJVFN0dWJSb3V0aW5lKiB3cmFwcGVkKQorICAgICAgICAg
ICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQpCisgICAgICAgICAgICAgICAgLCBtX2Jhc2VHUFIo
YmFzZUdQUikKKyAgICAgICAgICAgICAgICAsIG1fdmFsdWVHUFIodmFsdWVHUFIpCisgICAgICAg
ICAgICAgICAgLCBtX2V4dHJhR1BSKGV4dHJhR1BSKQorICAgICAgICAgICAgICAgICwgbV9zdHVi
SW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1
c2VkUmVnaXN0ZXJzKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAgICAgIEtleShXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQoYml0
d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpCisg
ICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRp
bmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorCisgICAgICAgICAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBhLm1fd3JhcHBlZCA9PSBiLm1fd3JhcHBlZAorICAg
ICAgICAgICAgICAgICAgICAmJiBhLm1fYmFzZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAg
ICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAg
ICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAg
ICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9zdHViSW5mb0dQUgorICAgICAgICAgICAgICAg
ICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXkmIGEs
IGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5t
X3dyYXBwZWQgIT0gYi5tX3dyYXBwZWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpJ
VFN0dWJSb3V0aW5lKiBtX3dyYXBwZWQgeyBudWxscHRyIH07CisgICAgICAgICAgICBHUFJSZWcg
bV9iYXNlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fdmFsdWVHUFI7CisgICAgICAgICAgICBH
UFJSZWcgbV9leHRyYUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAg
ICAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAgICAgICB9OworCisgICAg
ICAgIHVzaW5nIEtleVRyYWl0cyA9IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxLZXk+OworCisgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYgcCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFwLm1fd3JhcHBlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAg
ICAgICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKCpwLm1fd3JhcHBlZC0+a2V5cygp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwg
Y29uc3QgS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0cnVjdCBTZWFyY2hlciB7Cisg
ICAgICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gU2hhcmVkSklUU3R1YlNldDo6aGFzaChzZWFyY2hlci5tX2tleXMpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpL
ZXkgYSwgY29uc3QgU2VhcmNoZXImIGIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEu
bV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4
dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1Yklu
Zm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV91c2Vk
UmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGF1dG8mIGF2ZWMgPSAqYS5tX3dyYXBwZWQtPmtleXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYXV0byYgYnZlYyA9IGIubV9rZXlzOworICAgICAgICAgICAgICAgICAgICBpZiAo
YXZlYy5zaXplKCkgIT0gYnZlYy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IGJ2ZWMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhd
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYXdlYWsgPSAqYS5t
X3dyYXBwZWQtPndlYWtSZWZlcmVuY2VzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1
dG8mIGJ3ZWFrID0gYi5tX3dlYWtSZWZlcmVuY2VzOworICAgICAgICAgICAgICAgICAgICBpZiAo
YXdlYWsuc2l6ZSgpICE9IGJ3ZWFrLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6
ZSA9IGF3ZWFrLnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF3ZWFrW2ldICE9IGJ3ZWFrW2ldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jh
c2VHUFI7CisgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRy
YUdQUjsKKyAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0
IG1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vz
c0Nhc2U+PiYgbV9rZXlzOworICAgICAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4m
IG1fd2Vha1JlZmVyZW5jZXM7CisgICAgfTsKKworICAgIHN0cnVjdCBQb2ludGVyVHJhbnNsYXRv
ciB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKEpJVFN0dWJSb3V0aW5lKiBzdHViKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU2hhcmVkSklUU3R1YlNldDo6aGFzaCgqc3R1
Yi0+a2V5cygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IEhhc2g6OktleSBrZXksIEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4ga2V5Lm1fd3JhcHBlZCA9PSBzdHViOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIHZvaWQgYWRkKEhhc2g6OktleSYmIGtleSkKKyAgICB7CisgICAgICAgIG1fc3R1YnMuYWRk
KGtleSk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmUoSklUU3R1YlJvdXRpbmUqIHN0dWIpCisg
ICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0dWJzLmZpbmQ8UG9pbnRlclRyYW5zbGF0b3I+
KHN0dWIpOworICAgICAgICBpZiAoaXRlciAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAgICAgICAg
bV9zdHVicy5yZW1vdmUoaXRlcik7CisgICAgfQorCisgICAgSklUU3R1YlJvdXRpbmUqIGZpbmQo
Y29uc3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgIHsKKyAgICAgICAgYXV0byBlbnRyeSA9IG1f
c3R1YnMuZmluZDxTaGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcj4oc2VhcmNo
ZXIpOworICAgICAgICBpZiAoZW50cnkgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBlbnRyeS0+bV93cmFwcGVkOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgSGFzaFNldDxIYXNoOjpLZXksIEhhc2gsIEhhc2g6OktleVRyYWl0cz4g
bV9zdHViczsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAppbmRleCBmYzk4ZjRlNDAwYjhmYzZjY2I4
OGRmMGNhYTRjNWE1NTUzNjc5Yzg0Li5iMjI2ZmIxNmY1ZGI3NDRmN2ZlNTU2YmVjNzU4ZDdjZWEw
NGU0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCkBA
IC0yNDQsMTAgKzI0NCw4IEBAIHN0cnVjdCBCeVZhbEluZm8gewogICAgIHsKICAgICB9CiAKLSAg
ICB2b2lkIHNldFVwKENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbm90SW5kZXhK
dW1wLCBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKKyAgICB2b2lkIHNldFVw
KENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRs
ZXIsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQsIENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQogICAgIHsKLSAg
ICAgICAgdGhpcy0+bm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOwotICAgICAgICB0aGlzLT5i
YWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOwogICAgICAgICB0aGlzLT5leGNlcHRpb25IYW5kbGVy
ID0gZXhjZXB0aW9uSGFuZGxlcjsKICAgICAgICAgdGhpcy0+ZG9uZVRhcmdldCA9IGRvbmVUYXJn
ZXQ7CiAgICAgICAgIHRoaXMtPmJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCA9IGJhZFR5cGVOZXh0
SG90UGF0aFRhcmdldDsKQEAgLTI2Miw4ICsyNjAsMjEgQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAK
ICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsKIAotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4gbm90SW5kZXhKdW1wOwotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4gYmFkVHlwZUp1bXA7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dP
cGVyYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRh
cmdldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1w
VGFyZ2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJn
ZXQpOyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlv
bjsKKworICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+IG1fbm90SW5kZXhKdW1wVGFyZ2V0OworICAgICAgICBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+IG1fbm90SW5kZXhKdW1wOworICAgIH07CisgICAgdW5pb24gewor
ICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gbV9iYWRUeXBl
SnVtcFRhcmdldDsKKyAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBt
X2JhZFR5cGVKdW1wOworICAgIH07CisKICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25I
YW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQ7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDc3MzI5ZjNhNDFlMDRhMWM3MmRiNjJjMWQ1
OGY0ZjVjMzYzOTcyNTEuLjgxYWI5N2ZiZDgxOGIxZmI3YzFmYmZlZDQwMjQ5ZmM5MzcxNjNmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMCw2
ICs0MjAsMTEgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAg
ICAgICByZXR1cm4gaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKwor
ICAgIGJvb2wgdXNlU2hhcmVkSUMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEpJVENv
ZGU6OnVzZVNoYXJlZElDKGppdFR5cGUoKSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIw
MmVmYzU0NjY2MTk4NTRkYWFhNjIwYzY5N2ZmMWNmZjdjZjM4MzYuLjZhMzBlNjM4ZTIwMGNhMDgw
ZTE0YmFhZDg3YWU4ZTE2NGZmNjljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1h
eUJlTnVsbCh2bSwgb3duZXIsIGN1c3RvbVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3ND
YXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBX
YXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0
clRhZz4gY3VzdG9tR2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgT3B0aW9u
YWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJl
ZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNl
dCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAg
cmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3Vz
dG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0
clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAog
ICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQ
cm94eSwgCiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRl
ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRl
ciB8fCB0eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JT
ZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1
bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3Vz
dG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0
eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94
eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KSk7CiAgICAgcmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rp
b25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC05MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nh
c2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYg
b3RoCiAgICAgbV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkg
Y29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNv
bnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3Vs
dChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0
LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBA
QCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBh
bGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhz
Y3JhdGNoR1BSKTsKIAogICAgIEdQUlJlZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpA
QCAtMjIzLDYgKzIyNSwxMSBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01K
SVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBS
UmVnIHJlZyA6IGZwU2NyYXRjaCkKICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNl
dChyZWcpOwogICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0
OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02
NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBw
YXJhbXMoc3RhdGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZN
b3ZlKGZwU2NyYXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJh
bXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggODczZTdjMzU4ODhlYjNiMTIxZGJmZDdhZjA2ZTJjYWJl
YjdkMzNiMi4uMTAwZmIyN2VlODU2NjE2ZmI0MTg0MjVlYzJjNzIzNDk0YTRhZWYzNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oCkBAIC01MywxNyArNTMsMTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERP
TUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNl
dHRlciosIEdQUlJlZyBiYXNlRm9yR2V0R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRl
KAogICAgICAgICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0
aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIs
CiAgICAgICAgIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgT3B0aW9uYWw8RE9NQXR0cmlidXRl
QW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmLCBib29sIHZpYVByb3h5ID0gZmFsc2UsCiAgICAgICAg
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21TZXR0ZXIgPSBudWxscHRy
LCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcElt
cGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNz
Q2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5jcHAKaW5kZXggODMyY2QwYjhmYWZkOThkMGIyODU5M2NiYmIwNTdiYWU5NmZiMzIxYS4u
MjE5NDJjNDM1YmVlYzE0YzE1ODYzOTVlM2Q2NDExMzZlMjI4ODhhZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKQEAgLTIxNiw2ICsyMTYs
OCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBHUFJSZWcgZ2V0U2NyYXRjaFJlZ2lzdGVyKFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
VGFnR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52YWx1ZVRhZ0dQUik7CiAjZW5k
aWYKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBHUFJSZWcg
c2NyYXRjaCA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKICAgICBpZiAoYWxsb2Nh
dG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkpCiAgICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwpA
QCAtMzc5LDggKzM4MSw1NCBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmSW5BY2Nl
c3MoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAgcmV0dXJuIGxp
bmtlZENvZGVJbmxpbmU7CiB9CiAKLXZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
KFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IHRhcmdldCkKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IHRhcmdldCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAg
ICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwor
CisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hv
dWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNC
cmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwg
c3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwg
bmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlz
VmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHRhcmdldCk7CisKKyAgICBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNv
bnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJ
bkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQoreworICAg
IGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgLy8gSWYgaXQgaXMgbm90
IEdldEJ5SWQtbGlrZS10aGluZywgd2UgZG8gbm90IGVtaXQgbm9wIHNsZWQgKGUuZy4gR2V0QnlW
YWwpLgorICAgICAgICAvLyBUaGUgY29kZSBpcyBhbHJlYWR5IGFuIGluZGlyZWN0IGp1bXAsIGFu
ZCBvbmx5IHRoaW5nIHdlIHNob3VsZCBkbyBpcyByZXBsYWNpbmcgbV9jb2RlUHRyLgorICAgICAg
ICBpZiAoc3R1YkluZm8uaGFzQ29uc3RhbnRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICAvLyBJ
ZiBtX2NvZGVQdHIgaXMgcG9pbnRpbmcgdG8gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9u
LCB0aGlzIG1lYW5zIHRoYXQgSW5saW5lQWNjZXNzIGNvZGUgaXMgbm90IGEgc3R1YiBvbmUuCisg
ICAgICAgICAgICAvLyBXZSByZXdyaXRlIHRoaXMgd2l0aCB0aGUgc3R1Yi1iYXNlZCBkaXNwYXRj
aGluZyBjb2RlIG9uY2UsIGFuZCBjb250aW51ZSB1c2luZyBpdCB1bnRpbCB3ZSByZXNldCB0aGUg
Y29kZS4KKyAgICAgICAgICAgIGlmIChzdHViSW5mby5tX2NvZGVQdHIuZXhlY3V0YWJsZUFkZHJl
c3MoKSA9PSBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3Mo
KSkgeworICAgICAgICAgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnN0dWJJbmZvKSwgc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgICAgICAgICAgICAgYm9vbCBuZWVkc0JyYW5j
aENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXpl
KCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RT
dWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKworICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhqdW1wLCBzdHViSW5mby5kb25lTG9jYXRpb24pOworCisgICAgICAgICAgICAgICAg
RklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlua2lu
ZyBzdHViIGNhbGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdHViSW5m
by5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwogCiAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKQEAgLTM5NCw2ICs0
NDIsMjYgQEAgdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWIKICAgICBGSU5BTElaRV9DT0RFKGxpbmtC
dWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsK
IH0KIAordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0
OworCisgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKworICAgIC8vIFdlIGRvbid0IG5lZWQg
YSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhl
IG1pZGRsZSBvZiBhbiBJQy4KKyAgICBib29sIG5lZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNl
OworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9h
c3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5l
Q2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7
CisgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworICAgIGxpbmtCdWZm
ZXIubGluayhqdW1wLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworCisgICAgRklO
QUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlua2luZyBj
b25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJ
bkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKaW5k
ZXggZjQ5YjM1YjhmMjI2NDA2YzdmYjI2ZmZiYjQ4ODZiMmI4NDcxZDEyZC4uZWI3NmZmMzk2ZDI4
OGVjZGJlM2FmMTAxN2YzMjQzYWFhNzQ0MGFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaApAQCAtMTA0LDEwICsxMDQsMTQgQEAgY2xhc3MgSW5s
aW5lQWNjZXNzIHsKICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVj
dHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlU3Ry
aW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVB
cnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKLSAgICBzdGF0aWMgdm9p
ZCByZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFj
Y2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBib29sIGdl
bmVyYXRlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKKyAgICBzdGF0aWMgdm9p
ZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lu
bGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICBzdGF0aWMgdm9p
ZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
OworCiAgICAgLy8gVGhpcyBpcyBoZWxwZnVsIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNpemUgb2Yg
YW4gSUMgb24KICAgICAvLyB2YXJpb3VzIHBsYXRmb3Jtcy4gV2hlbiBhZGRpbmcgYSBuZXcgdHlw
ZSBvZiBJQywgaW1wbGVtZW50CiAgICAgLy8gaXRzIHBsYWNlaG9sZGVyIGNvZGUgaGVyZSwgYW5k
IGxvZyB0aGUgc2l6ZS4gVGhhdCB3YXkgd2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCmluZGV4IDIxZjI0NTNiYWM3
YWZhZTc3MjQxY2IwNGEyNWQyMGZkZDk5M2JjMzQuLjk5NDkwOGQ2OGI2MmJiZTA2ZTA5YWEwYjM3
ZTc3YzExMGM2NjkyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFj
Y2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6
Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0LCBKU09iamVjdCogcHJvdG90eXBlKQogewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBv
d25lciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwg
YWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3RvdHlwZSkpOwogfQogCiB2
b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21t
YVByaW50ZXImIGNvbW1hKSBjb25zdApAQCAtNDUsOSArNDUsOSBAQCB2b2lkIEluc3RhbmNlT2ZB
Y2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1h
KSBjb25zdAogICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSA9ICIsIEpTVmFsdWUocHJv
dG90eXBlKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZB
Y2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zdGFuY2VPZkFj
Y2Vzc0Nhc2U+IHJlc3VsdChuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsK
ICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
aAppbmRleCA2OWUyYjMxYWE5NGE1OWQzMGRmYjRjYWYyMjQ0OTlkNjAyNzc4NDdjLi5hZDcxZTY5
NDJmNDQ5MmZhOGFiZGVhYWM3ZWEwZmM0NmI3MDc5ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaApAQCAtMzQsMTUg
KzM0LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UgZmlu
YWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEFjY2Vz
c0Nhc2U7CisgICAgZnJpZW5kIGNsYXNzIEFjY2Vzc0Nhc2U7CiAgICAgCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3ND
YXNlPiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgU3RydWN0dXJl
KiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLAogICAgICAgICBKU09iamVjdCog
cHJvdG90eXBlKTsKICAgICAKICAgICBKU09iamVjdCogcHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3Ry
ZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25l
KCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgfkluc3RhbmNlT2ZBY2Nlc3NDYXNlKCkgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNH
ZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCA2MzAxZGMyMzM2OTMzZDY3NmMzYmU5ZTkw
YzYwMTg5YTEzMTczODE3Li4zNGIxYTgwMjc4ODk1ZjcxYWJmZTY4Mjk2OWNkZTQzMGYzMmU3ZDYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0zOSwxOCArMzksMTggQEAgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2gKICAgICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGlu
dHJpbnNpY0Z1bmN0aW9uKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlv
blNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3NDYXNlPiBJbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25T
ZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPihuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1
bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RG
TW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6fkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAor
UmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QK
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0
KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQg
PSBhZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICBy
ZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlLmgKaW5kZXggNjI4NzAwNDE1ODczMWQ1YjhmZWI1MDYzNTNkZTU1OWI2NDQ3NjQ0Ni4uNDdh
ZjFhMmJmMWRkNmNiOTEzNjI2MzIxMDE5M2I0N2EzZmYyYWI1MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UgZmlu
YWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJvb2wgY2FuRW1pdEludHJpbnNp
Y0dldHRlcihKU0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBlbWl0SW50cmluc2lj
R2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiYmKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpT
Q2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1
bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nh
c2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjk1NmRkMGNkNWQwZWFl
NjFhMDhlM2RjNzY1YmY3NDM0NDFjNWY4ZC4uYzI5YzFkZGZhZjQ4MTU1NjYxNTE3MDg1YTg4ZTE5
YTA3M2FiZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAtNDUsMTggKzQ1LDE4IEBA
IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0s
IG93bmVyLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVu
dmlyb25tZW50LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1
bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50
LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRl
bnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVP
ZmZzZXQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3ND
YXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVF
bnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKIH0KIAogTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZTo6fk1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVm
PEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4gcmVzdWx0KG5l
dyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1
bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
LmgKaW5kZXggOTJhMGI4YTM1YjU0NzE2MjQxMzBkNjUwNjUzZDA1YmY1ZDc5MzM3Ny4uZDQzOTUw
YmYwNjMxMzdjZjc3M2I4NGM0YWFlNDk0NGIwNGM5YTNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5o
CkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UgZmluYWwg
OiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52
aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOyB9CiAg
ICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zmc2V0
OyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYs
IEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsKKyAgICBzdGF0aWMgUmVm
PEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3Bl
T2Zmc2V0KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0
IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCBlbWl0KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZmFsbFRocm91Z2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDVkOTA1NDU5NzRm
MWVkMzdmMjhjYWYzYTJhZWIzNDZhNDkxMGEyODMuLjA4NjNlMTU5ODUwOWQ0NjBjZmQ5Njg3MDlh
MmYxYzdmNjhjNjYwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
ODksNiArOTAsMzIgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBtX2RhdGEtPm1fdmVjdG9yLmVu
ZCgpOwogICAgIH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAg
SGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBjb25kaXRpb24gOiAqdGhpcykKKyAg
ICAgICAgICAgIGFkZChoYXNoZXIsIGNvbmRpdGlvbi5oYXNoKCkpOworICAgICAgICByZXR1cm4g
aGFzaGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBsaHMsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiByaHMpCisgICAgeworICAgICAgICBpZiAobGhzLnNpemUoKSAhPSByaHMuc2l6
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvIGxpdGVyID0gbGhz
LmJlZ2luKCk7CisgICAgICAgIGF1dG8gcml0ZXIgPSByaHMuYmVnaW4oKTsKKyAgICAgICAgZm9y
ICg7IGxpdGVyICE9IGxocy5lbmQoKTsgKytsaXRlciwgKytyaXRlcikgeworICAgICAgICAgICAg
aWYgKCEoKmxpdGVyID09ICpyaXRlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGxocywgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIHJocykKKyAgICB7CisgICAgICAgIHJldHVybiAh
KGxocyA9PSByaHMpOworICAgIH0KICAgICAKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBm
b3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBm
b3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmlu
ZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlhN2QwOWEwMTUuLmJkMGEyMWZjZTcw
YTZkNzhhODIzNWE4MzdiYmJlMzIwZWM4MmJjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNTksMTAgKzU5LDkg
QEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7CiB9CiAKLXZvaWQgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omluc3RhbGxXYXRj
aHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5z
dXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0gICAgICAgIHdhdGNocG9pbnRzLCBq
aXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9uKTsKKyAgICBXYXRjaHBvaW50c09u
U3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KHdh
dGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25kaXRpb24pOwogfQogCiB2b2lkIEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQpAQCAtNzMsNyArNzIsMTAgQEAg
dm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkKIHZvaWQgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICByZXN0b3JlU2NyYXRjaCgpOwotICAg
IHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBpZiAoaml0LT5jb2RlQmxvY2soKS0+
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsKKyAgICBlbHNlCisgICAgICAgIHN1
Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29uc3QgUmVnaXN0ZXJTZXQmIEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKQpAQCAtMTI2LDEwICsxMjgs
MTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1Rv
U3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9OwogfQogCi1hdXRvIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0
RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpw
cmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0
IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQogewogICAgIFJlZ2lzdGVyU2V0IGxp
dmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMoKTsKICAgICBsaXZlUmVnaXN0
ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBsaXZlUmVnaXN0ZXJzLm1l
cmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBleHRyYVN0YWNrUGFkZGluZyA9
IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2Vy
dmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJhU3RhY2tQYWRkaW5nKTsKQEAgLTI1
Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBvbHltb3JwaGljQWNjZXNzKCkgeyB9
CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAog
ICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCi0gICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQorICAg
IFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2FzZXNUb0FkZCkKIHsKICAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCkBAIC0y
NjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6
YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3MgYWZ0ZXIgZmFpbHVyZS4KICAgICAK
ICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2luYWxDYXNlc1RvQWRkIGRvZXNuJ3Qg
Y29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gY2FzZXNUb0Fk
ZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JpZ2luYWxDYXNlc1RvQWRkLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBteUNhc2UgPSBX
VEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAgICAgIGF1dG8gbXlDYXNlID0gV1RG
TW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwogCiAgICAgICAgIC8vIEFkZCBpdCBvbmx5IGlm
IGl0IGlzIG5vdCByZXBsYWNlZCBieSB0aGUgc3Vic2VxdWVudCBjYXNlcyBpbiB0aGUgbGlzdC4K
ICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMzQ2LDkgKzM0OSw5IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogfQogCiBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlKAotICAgIGNvbnN0IEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2Nr
ZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKIHsKLSAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKKyAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKICAgICBuZXdBY2Nlc3Nlcy5hcHBlbmQoV1RGTW92
ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4gYWRkQ2FzZXMobG9ja2VyLCB2bSwgY29kZUJsb2Nr
LCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nlc3NlcykpOwogfQpAQCAtMzU5LDkgKzM2MiwxNSBA
QCBib29sIFBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsoVk0mIHZtKSBjb25zdAogICAgICAg
ICBpZiAoIWF0KGkpLnZpc2l0V2Vhayh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIHdlYWtSZWZlcmVuY2Ug
OiBtX3dlYWtSZWZlcmVuY2VzKSB7Ci0gICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZCh3ZWFr
UmVmZXJlbmNlLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9z
dHViUm91dGluZSkgeworICAgICAgICBhdXRvKiB3ZWFrUmVmZXJlbmNlcyA9IG1fc3R1YlJvdXRp
bmUtPndlYWtSZWZlcmVuY2VzKCk7CisgICAgICAgIGlmICh3ZWFrUmVmZXJlbmNlcykgeworICAg
ICAgICAgICAgZm9yIChTdHJ1Y3R1cmVJRCB3ZWFrUmVmZXJlbmNlIDogKndlYWtSZWZlcmVuY2Vz
KSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1
cmUod2Vha1JlZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2Vk
KHN0cnVjdHVyZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ0MCw3ICs0
NDksNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVy
YXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIHVuc2lnbmVkIHNyY0luZGV4ID0g
MDsKICAgICB1bnNpZ25lZCBkc3RJbmRleCA9IDA7CiAgICAgd2hpbGUgKHNyY0luZGV4IDwgbV9s
aXN0LnNpemUoKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gc29tZUNh
c2UgPSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7CisgICAgICAgIFJlZlB0cjxBY2Nlc3ND
YXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIElmIHRoZSBjYXNlIGhhZCBiZWVuIGdlbmVyYXRlZCwgdGhlbiB3ZSBoYXZlIHRv
IGtlZXAgdGhlIG9yaWdpbmFsIGluIG1fbGlzdCBpbiBjYXNlIHdlCiAgICAgICAgIC8vIGZhaWwg
dG8gcmVnZW5lcmF0ZS4gVGhhdCBjYXNlIG1heSBoYXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFy
ZSB1c2VkIGJ5IHRoZSBjb2RlIHRoYXQgaXQKQEAgLTQ5MSw2ICs1MDAsOCBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvYwogICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQ
UlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNl
bmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3Rh
dGUuc2NyYXRjaEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAw
LDEyICs1MTEsNiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpy
ZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2sp
OwotICAgIHN0YXRlLmppdCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdp
c3RlclN0YXRlID0KLSAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQ
dXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5v
RXh0cmFTcGFjZSk7CiAKICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBA
IC01MjEsMTIgKzUyNiwzMCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNj
ZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgaWYgKFBv
bHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIk9wdGlt
aXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAKKworICAgIGJvb2wg
ZG9lc0NhbGxzID0gZmFsc2U7CisgICAgYm9vbCBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGZh
bHNlOworICAgIGJvb2wgY2FuQmVTaGFyZWQgPSB0cnVlOworICAgIFZlY3RvcjxKU0NlbGwqPiBj
ZWxsc1RvTWFyazsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGtleXMoY2Fz
ZXMuc2l6ZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvJiBlbnRy
eSA6IGNhc2VzKSB7CisgICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAm
Y2VsbHNUb01hcmspOworICAgICAgICBpZiAoZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpH
ZXR0ZXIgfHwgZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCisgICAgICAgICAg
ICBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IHRydWU7CisgICAgICAgIGtleXNbaW5kZXhdID0g
ZW50cnk7CisgICAgICAgICsraW5kZXg7CisgICAgfQorICAgIHN0YXRlLm1fZG9lc0NhbGxzID0g
ZG9lc0NhbGxzOworICAgIHN0YXRlLm1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSBkb2VzSlNH
ZXR0ZXJTZXR0ZXJDYWxsczsKKyAgICAvLyBHZXR0ZXIgLyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNr
LXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2ggaXMgdGllZCB0byB0aGUgbGlua2VkIENvZGVCbG9j
aywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVhYmxlLgorICAgIGlmIChkb2VzSlNHZXR0
ZXJTZXR0ZXJDYWxscykKKyAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKwogICAgIC8vIEF0
IHRoaXMgcG9pbnQgd2UncmUgY29udmluY2VkIHRoYXQgJ2Nhc2VzJyBjb250YWlucyB0aGUgY2Fz
ZXMgdGhhdCB3ZSB3YW50IHRvIEpJVCBub3cgYW5kIHdlCiAgICAgLy8gd29uJ3QgY2hhbmdlIHRo
YXQgc2V0IGFueW1vcmUuCiAgICAgCiAgICAgYm9vbCBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVj
ayA9IHRydWU7Ci0gICAgYm9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBmYWxzZTsKICAgICBi
b29sIG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N0cmlu
Z1Byb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3ltYm9sUHJvcGVydHlDaGVj
ayA9IGZhbHNlOwpAQCAtNTQyLDEwICs1NjUsNDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICAgICAgfQogICAgICAgICBjb21taXQobG9ja2VyLCB2bSwgc3RhdGUud2F0Y2hwb2ludHMs
IGNvZGVCbG9jaywgc3R1YkluZm8sICpuZXdDYXNlKTsKICAgICAgICAgYWxsR3VhcmRlZEJ5U3Ry
dWN0dXJlQ2hlY2sgJj0gbmV3Q2FzZS0+Z3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2soc3R1YkluZm8p
OwotICAgICAgICBpZiAobmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBu
ZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQotICAgICAgICAgICAgaGFzSlNH
ZXR0ZXJTZXR0ZXJDYWxsID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5ld0Nhc2UtPnVzZXNQb2x5UHJv
dG8oKSkKKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgfQorICAgIGlmIChu
ZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgfHwgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrIHx8IG5l
ZWRzSW50MzJQcm9wZXJ0eUNoZWNrKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCisg
ICAgYXV0byBmaW5pc2hDb2RlR2VuZXJhdGlvbiA9IFsmXShSZWZQdHI8SklUU3R1YlJvdXRpbmU+
JiYgc3R1YikgeworICAgICAgICBtX3N0dWJSb3V0aW5lID0gV1RGTW92ZShzdHViKTsKKyAgICAg
ICAgbV93YXRjaHBvaW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOworICAgICAgICBp
ZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFM
b2coIlJldHVybmluZzogIiwgbV9zdHViUm91dGluZS0+Y29kZSgpLCAiXG4iKTsKKworICAgICAg
ICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKKyAgICAgICAgbV9saXN0LnNocmlua1RvRml0KCk7
CisKKyAgICAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5kOworICAg
ICAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjptYXhBY2Nlc3NWYXJpYW50TGlzdFNp
emUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCisgICAgICAgICAgICByZXN1bHRLaW5kID0gQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxDb2RlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVk
TmV3Q29kZTsKKworICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdChyZXN1bHRL
aW5kLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICB9OworCisgICAgQ0NhbGxI
ZWxwZXJzIGppdChjb2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAgICBpZiAo
Y29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChzdGF0ZS5tX2RvZXNKU0dl
dHRlclNldHRlckNhbGxzKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGd1YXJhbnRlZSB0
aGF0IHN0YWNrLXBvaW50ZXIgaXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhpcyBpcyBub3QgYSBwcm9i
bGVtIGlmIHdlIGFyZSBub3QgaGF2aW5nIEpTIGdldHRlciAvIHNldHRlciBjYWxscyBzaW5jZSBz
dGFjay1wb2ludGVyIGlzCisgICAgICAgICAgICAvLyBjYWxsZWUtc2F2ZSByZWdpc3RlciBhbmQg
aXQgaXMga2VwdCBiZXlvbmQgY2FsbHMuIEhvd2V2ZXIsIG91ciBKUyBleGVjdXRhYmxlIGNhbGwg
ZG9lcyBub3Qgc2F2ZSBzdGFjay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0aW5nIHN0YWNrLXBv
aW50ZXIgYWZ0ZXIKKyAgICAgICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRlciBjYWxscy4gQnV0
IHRoaXMgY291bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3RhY2stcG9pbnRlciwg
YW5kIG1ha2VzIFBBQyB0YWdnaW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8vIFRvIGVuc3VyZSBQ
QUMtdGFnZ2luZyB3b3JrLCB3ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRlciB0byB0aGUgYXBw
cm9wcmlhdGUgb25lLgorICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVy
KSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICB9CiAKKyAg
ICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KKyAgICAgICAgYWxsb2NhdG9y
LnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAgCiAgICAgaWYgKGNh
c2VzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIHVubGlrZWx5LCBidXQg
d2UgbWFrZSBpdCBsZWdhbCBhbnl3YXkuCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFw
cGVuZChqaXQuanVtcCgpKTsKQEAgLTY5MCw3ICs3NTEsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRK
U0xvYwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJz
ID0gbnVsbHB0cjsKICAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9y
RXhjZXB0aW9uSGFuZGxpbmc7Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJz
SWZFeGNlcHRpb24oKSAmJiBoYXNKU0dldHRlclNldHRlckNhbGwpIHsKKyAgICBpZiAoc3RhdGUu
bmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGRvZXNKU0dldHRlclNldHRl
ckNhbGxzKSB7CiAgICAgICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLgogICAgICAg
ICAvLyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gZG9pbmcgZ2Vu
ZXJpY1Vud2luZCBmcm9tIGEgcHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4KICAgICAgICAgLy8gTm90
ZSBhbHNvIHRoYXQgdGhpcyBpcyBub3QgcmVhY2hhYmxlIGZyb20gY3VzdG9tIGdldHRlci9zZXR0
ZXIuIEN1c3RvbSBnZXR0ZXIvc2V0dGVycyB3aWxsIGhhdmUgCkBAIC03MzAsNiArNzkxLDMyIEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRp
b25IYW5kbGluZyA9IHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZygpOwog
ICAgIH0KIAorICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgZmFp
bHVyZS5saW5rKCZqaXQpOworICAgICAgICAvLyBJbiBBUk02NCwgd2UgZG8gbm90IHB1c2ggYW55
dGhpbmcgb24gc3RhY2sgc3BlY2lhbGx5LgorICAgICAgICAvLyBTbyB3ZSBjYW4ganVzdCBqdW1w
IHRvIHRoZSBzbG93LXBhdGggZXZlbiB0aG91Z2ggdGhpcyB0aHVuayBpcyBjYWxsZWQgKG5vdCBq
dW1wZWQpLgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRhaWwgY2FsbCB0byB0aGUgdGh1
bmsgd2hpY2ggY2FsbHMgdGhlIHNsb3cgcGF0aCBmdW5jdGlvbi4KKyAgICAgICAgLy8gQW5kIHdl
IHNob3VsZCBlbGltaW5hdGUgSUMgc2xvdy1wYXRoIGdlbmVyYXRpb24gaW4gQmFzZWxpbmVKSVQu
CisgICAgICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRp
b24oKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9CisKKyAgICBSZWZQdHI8SklUU3R1
YlJvdXRpbmU+IHN0dWI7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+IHdlYWtSZWZlcmVu
Y2VzKFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpICYmIGNhbkJlU2hhcmVkKSB7CisgICAgICAgIFNoYXJlZEpJVFN0dWJTZXQ6
OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmJhc2VHUFIsCisgICAg
ICAgICAgICBzdHViSW5mby52YWx1ZUdQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnJlZ3MudGhp
c0dQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsCisgICAgICAgICAgICBz
dHViSW5mby51c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAga2V5cywKKyAgICAgICAgICAgIHdl
YWtSZWZlcmVuY2VzLAorICAgICAgICB9OworICAgICAgICBzdHViID0gdm0ubV9zaGFyZWRKSVRT
dHVicy0+ZmluZChzZWFyY2hlcik7CisgICAgICAgIGlmIChzdHViKQorICAgICAgICAgICAgcmV0
dXJuIGZpbmlzaENvZGVHZW5lcmF0aW9uKFdURk1vdmUoc3R1YikpOworICAgIH0KKwogICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRl
cm5hbDo6dmVyYm9zZSkKQEAgLTczOSw5ICs4MjYsMTIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2MKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHN1Y2Nlc3NMYWJl
bCA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKIAotICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5z
dWNjZXNzLCBzdWNjZXNzTGFiZWwpOwotCi0gICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgQVNTRVJUKHN0YXRlLnN1Y2Nlc3MuZW1wdHkoKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwp
OworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBz
dHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1
YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKQEAgLTc0OSwyOSArODM5LDE1IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBjb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9j
aywgbGlua0J1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICIlcyIsIHRvQ1N0
cmluZygiQWNjZXNzIHN0dWIgZm9yICIsICpjb2RlQmxvY2ssICIgIiwgc3R1YkluZm8uY29kZU9y
aWdpbiwgIiB3aXRoIHJldHVybiBwb2ludCAiLCBzdWNjZXNzTGFiZWwsICI6ICIsIGxpc3REdW1w
KGNhc2VzKSkuZGF0YSgpKTsKLQotICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7Ci0gICAgVmVj
dG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOwotICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykK
LSAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7
Ci0gICAgCi0gICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZt
LCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxs
TGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShz
dGF0ZS53YXRjaHBvaW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5
KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmIChQb2x5bW9y
cGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6
ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKLSAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2Vz
KTsKLSAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7Ci0gICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9u
czo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQotICAg
ICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxD
b2RlOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OkdlbmVyYXRlZE5ld0NvZGU7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQocmVzdWx0S2luZCwgY29kZS5jb2RlKCkpOworICAgIHN0dWIgPSBjcmVhdGVJQ0pJVFN0
dWJSb3V0aW5lKGNvZGUsIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpLCB2
bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2Fs
bExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRl
SW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFy
ZWRJQygpKSB7CisgICAgICAgIGlmIChjYW5CZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1fc2hh
cmVkSklUU3R1YnMtPmFkZChTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFz
ZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8u
bV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNlZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOworICAg
IH0KKworICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKIH0K
IAogdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6YWJvdXRUb0RpZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZk
Y2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFiMzRhZWNiNDEuLjQ1OWJiMGJmYWM1N2VkZTJiMWM0MzVh
MGJmZTdkMTY5NzQ3ZmQ5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5
bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8gV2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCks
IHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xkIHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0
cnkKICAgICAvLyB0byBjYWxsIHRoaXMgbWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGlj
QWNjZXNzIGluc3RhbmNlLgogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0g
ICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAy
Pik7CisgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7
CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVD
b25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwg
UmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2Vu
ZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAt
MTc5LDcgKzE3OSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBmcmllbmQgY2xh
c3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlOwog
ICAgIAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4g
TGlzdFR5cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0
VHlwZTsKICAgICAKICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVy
ZVN0dWJJbmZvPiYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwKQEAgLTE4OCw3ICsx
ODgsNiBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgTGlzdFR5cGUgbV9saXN0Owog
ICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gbV9zdHViUm91dGluZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiBtX3dhdGNocG9pbnRzOwotICAg
IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PiBtX3dlYWtSZWZlcmVuY2VzOwogfTsK
IAogc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CkBAIC0xOTYsNiArMTk1LDggQEAgc3Ry
dWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgICAgIDogbV92bSh2bSkgCiAgICAgICAg
ICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCisgICAgICAgICwgbV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyhmYWxzZSkKKyAgICAg
ICAgLCBtX2RvZXNDYWxscyhmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRSZWdpc3RlcnNG
b3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoZmFsc2UpCiAgICAgICAgICwgbV9uZWVkc1RvUmVz
dG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZENh
bGxTaXRlSW5kZXgoZmFsc2UpCkBAIC0yMjMsMTAgKzIyNCwxMiBAQCBzdHJ1Y3QgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlIHsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiB7IEludmFsaWRGUFJSZWcgfTsK
ICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlIHsgRUNNQU1vZGU6OnNsb3BweSgpIH07CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7
Ci0gICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PiB3ZWFrUmVmZXJlbmNlczsKKyAgICBW
ZWN0b3I8U3RydWN0dXJlSUQ+IHdlYWtSZWZlcmVuY2VzOwogICAgIEJhZzxDYWxsTGlua0luZm8+
IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgOiAx
OworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwogCi0gICAgdm9pZCBpbnN0YWxsV2F0Y2hwb2lu
dChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOworICAgIHZvaWQgaW5zdGFsbFdhdGNo
cG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKIAogICAg
IHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2b2lkIHN1Y2NlZWQoKTsKQEAgLTI0OCw3ICsy
NTEsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBjb25zdCBSZWdpc3Rl
clNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZygp
OwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChj
b25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwotICAgIFNwaWxsU3RhdGUgcHJlc2VydmVM
aXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOworICAgIFNwaWxs
U3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9u
cyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwogCiAgICAgdm9pZCByZXN0b3JlTGl2
ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKGNvbnN0IFNwaWxs
U3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChj
b25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRvbnRSZXN0b3JlID0geyB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nl
c3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nl
c3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2MmEzODllMmVmNTBlZWE2YTNiMzRlNzVmYTlk
Li40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1MDc5YWNiY2MxMmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3Bw
CkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxlQWNjZXNzQ2FzZTo6UHJveHlhYmxlQWNjZXNz
Q2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXMKICAgICBtX3ZpYVBy
b3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5
cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQm
IGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQor
UmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRj
aHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYg
cHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5cGUgPT0gTG9hZCB8fCB0eXBl
ID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9PSBSZXBsYWNlKTsKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNl
KHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkp
OwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+UHJveHlhYmxlQWNjZXNzQ2FzZSgpCiB7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9u
ZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBj
b25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm94eWFibGVBY2Nlc3NDYXNlPiByZXN1bHQo
bmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRT
dGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaAppbmRleCBkYzM5ZTI2Y2EyZjRi
MmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5lODQzODVjYTc1YzlmNzUyZThlOGUxNmNkZGUw
YWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3LDExICszNywxMSBAQCBjbGFzcyBQcm94eWFi
bGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogCiAgICAgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWRkaXRpb25hbFNldC5n
ZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYg
PSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAogICAgICAgICBib29sIHZpYVByb3h5ID0g
ZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBudWxscHRyLCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJp
bnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8QWNjZXNz
Q2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIH5Qcm94eWFibGVBY2Nlc3NDYXNl
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2YTM5Yjg0NThiOTAwY2IyYTUy
ZWY0ZjE1MTEyMGYuLjhkZjU4MWU0NjRmMGUwMmUzNDc3NTVmYzc5MGQyN2NiODk0MjVhNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1
YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaQogICAgICwg
cHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwgcHJvcGVydHlJc1N5bWJvbChmYWxzZSkKIHsK
KyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogfQogCiBTdHJ1Y3R1cmVTdHViSW5m
bzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEzOSw3ICsxNDAsNyBAQCB2b2lkIFN0cnVjdHVy
ZVN0dWJJbmZvOjphYm91dFRvRGllKCkKIH0KIAogQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1
Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKLSAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gYWNjZXNzQ2FzZSkKKyAgICBjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFNb2RlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50LCBSZWZQdHI8QWNjZXNzQ2FzZT4gYWNjZXNzQ2FzZSkKIHsKICAgICBjaGVj
a0NvbnNpc3RlbmN5KCk7CiAKQEAgLTE1NSw3ICsxNTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIGlmIChtX2NhY2hlVHlwZSA9
PSBDYWNoZVR5cGU6OlN0dWIpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2Fz
ZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBXVEZNb3ZlKGFjY2Vzc0Nhc2UpKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ss
ICp0aGlzLCBhY2Nlc3NDYXNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOwpAQCAt
MTcwLDkgKzE3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86
OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNB
Y2Nlc3M+KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOworICAgICAgICAgICAgVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpm
cm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKKyAgICAg
ICAgICAgIGF1dG8gcHJldmlvdXNDYXNlID0gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJ
bmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7CiAgICAgICAgICAgICBpZiAocHJldmlv
dXNDYXNlKQogICAgICAgICAgICAgICAgIGFjY2Vzc0Nhc2VzLmFwcGVuZChXVEZNb3ZlKHByZXZp
b3VzQ2FzZSkpOwogICAgICAgICAgICAgCkBAIC0yNzYsNyArMjc3LDcgQEAgdm9pZCBTdHJ1Y3R1
cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBD
b2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRJbkJ5SUQoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKLSAgICAgICAgcmVz
ZXRJbnN0YW5jZU9mKCp0aGlzKTsKKyAgICAgICAgcmVzZXRJbnN0YW5jZU9mKGNvZGVCbG9jaywg
KnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6
CiAgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAppbmRleCA4ODI1NjhjMjZlYWQ2MmU0MGVhZTdmMjcwODBmMDkyMWVkZWM3NjQ1Li45NWU3
ZGJiODYzOGFiOTJmNzcxMzM4NzFmNmZhNDZkOTM1ZmNmZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtODcsNyArODcs
NyBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgdm9pZCBpbml0UHV0QnlJZFJlcGxh
Y2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSog
YmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgaW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZz
ZXQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCi0gICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBh
ZGRBY2Nlc3NDYXNlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgRUNNQU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPik7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRBY2Nl
c3NDYXNlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgRUNNQU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFJlZlB0cjxBY2Nlc3ND
YXNlPik7CiAKICAgICB2b2lkIHJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBD
b2RlQmxvY2sqKTsKIApAQCAtMzQ0LDE5ICszNDQsMzAgQEAgY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm8gewogcHVibGljOgogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiBzdGFydDsgLy8gVGhpcyBpcyBlaXRoZXIgdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUgSUMgZm9y
ICpieUlkIGNhY2hlcy4gb3IgdGhlIGxvY2F0aW9uIG9mIHBhdGNoYWJsZSBqdW1wIGZvciAnaW5z
dGFuY2VvZicgY2FjaGVzLgogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IGRvbmVMb2NhdGlvbjsKLSAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IHNs
b3dQYXRoQ2FsbExvY2F0aW9uOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb247CiAKKyAgICB1bmlvbiB7CisgICAgICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gbV9zbG93UGF0aENhbGxMb2NhdGlvbjsK
KyAgICAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247Cisg
ICAgfTsKKworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRhZz4g
bV9jb2RlUHRyOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRp
b24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7
IH0KKwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQ
UjsKLSAgICBHUFJSZWcgdmFsdWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BS
UmVnIH07CisgICAgR1BSUmVnIHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9u
IHsKICAgICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7
CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwog
ICAgIH0gcmVnczsKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBG
SVhNRTogWzMyLWJpdHNdIENoZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlz
IHVzZWQgc29tZXdoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCmluZGV4IDhhZGVhZDUwZjQ1NTZjZmYyNWU3YzdjOTk3ODMwNGQ0MTc3MDk3NDcuLjQ3NjU0
YTc2ZGI1YTExM2YwZmNiNmJmNjhhM2QyMmFjYmM2YTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xhc3MgSklU
Q29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQo
Q2FsbExpbmtSZWNvcmQoZnVuY3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4g
ZnVuY3Rpb25DYWxsOwogICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXgg
OTgxZTg2Y2Q3ZGRiMDFjYTQ5NTQzYjRlNTM3NjAwMWJlODE2MDEyNi4uMjlhZDg2ZWNmNGYzNDFh
MWIyNmZkMTk0NTFhMGYwZDUxODU4ZWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTg4LDYgKzE4OCw4IEBAIGNsYXNzIENh
bGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxs
U2xvd1BhdGhHZW5lcmF0CiAgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRz
OwogfTsKIAorCisKIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlv
blR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBK
dW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24s
CkBAIC0yNjMsNiArMjY1LDY3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoTW92ZSgKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5
LCBzb3VyY2VBcnJheSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFt
ZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KK2NsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4gewor
cHVibGljOgorICAgIENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAor
ICAgICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykK
KyAgICAgICAgOiBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZy
b20sIGppdCwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1
YkluZm9HUFIoc3R1YkluZm9HUFIpCisgICAgICAgICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJl
c3Moc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rp
b24pCisgICAgICAgICwgbV9hcmd1bWVudHMoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLikKKyAgICAgICAgLCBtX3N0dWJJbmZvKHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdGVtcGxhdGU8c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZv
aWQgdW5wYWNrQW5kR2VuZXJhdGUoU3BlY3VsYXRpdmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1
ZW5jZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAgeworICAgICAgICBBU1NFUlQoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSk7CisgICAgICAgIHRoaXMtPnNldFVwKGppdCk7
CisgICAgICAgIG1fc3R1YkluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG1fZnVuY3Rpb247CisgICAg
ICAgIGppdC0+bV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5m
byksIG1fc3R1YkluZm9HUFIpOworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxS
ZXN1bHRUeXBlLCBOb1Jlc3VsdFRhZz46OnZhbHVlKQorICAgICAgICAgICAgaml0LT5jYWxsT3Bl
cmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIHN0ZDo6Z2V0
PEFyZ3VtZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9u
QWRkcmVzcywgZXh0cmFjdFJlc3VsdCh0aGlzLT5tX3Jlc3VsdCksIHN0ZDo6Z2V0PEFyZ3VtZW50
c0luZGV4PihtX2FyZ3VtZW50cykuLi4pOworICAgICAgICB0aGlzLT50ZWFyRG93bihqaXQpOwor
ICAgIH0KKworICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KSBm
aW5hbAorICAgIHsKKyAgICAgICAgdW5wYWNrQW5kR2VuZXJhdGUoaml0LCBzdGQ6Om1ha2VfaW5k
ZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPj46OnZh
bHVlPigpKTsKKyAgICB9CisKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3M7CisgICAgRnVuY3Rpb25U
eXBlIG1fZnVuY3Rpb247CisgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRz
OworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOworfTsKKworCisKK3RlbXBsYXRl
PHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3Vs
dFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1
bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBG
dW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKKyAgICBSZXN1bHRUeXBlIHJl
c3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rp
b25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+Pihmcm9tLCBqaXQsIHN0dWJJbmZvLCBz
dHViSW5mb0dQUiwgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBmdW5jdGlvbiwgc3BpbGxNb2Rl
LCByZXF1aXJlbWVudCwgcmVzdWx0LCBhcmd1bWVudHMuLi4pOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBl
LCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2
ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rp
b25UeXBlIGZ1bmN0aW9uLAorICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJn
dW1lbnRzKQoreworICAgIHJldHVybiBzbG93UGF0aElDQ2FsbChmcm9tLCBqaXQsIHN0dWJJbmZv
LCBzdHViSW5mb0dQUiwgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBmdW5jdGlvbiwgTmVlZFRv
U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLCByZXN1bHQsIGFy
Z3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8v
IEVOQUJMRChERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCA3M2Y5MTE0ZWFmODgzY2VlZjljYTAzYjg0ZjE2ZWU2NDRlNmQy
OGY4Li4wNWFkNzljYTY5ZjZkODBiODllMDc1ZTY4Mjg0YTYyNmQzNGFiZDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTAyNiwy
NCArMTAyNiwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBu
b2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0
KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFs
dWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAg
ICBiYXNlLnVzZSgpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBK
SVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywg
c3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1
bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAg
ICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7
CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQog
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKQEAgLTEwNTEsNyAr
MTA2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RD
ZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRH
ZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUp
OworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3Ms
IHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5v
dENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDY3LDI3ICsxMDc5LDM5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAg
Y2FzZSBDZWxsVXNlOiB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlLmdwcigpKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNlLnVz
ZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNz
VHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLQogICAgICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFj
ZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAg
ICAgICB9CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygp
OwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAg
ICAgICBiYXNlLnVzZSgpOwpAQCAtMTA5Niw3ICsxMTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUp
CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IG5vdENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NU
eXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3Jt
YXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MTExLDE0ICsxMTM1LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1
c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotCiAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BS
KCk7CkBAIC0xMTI4LDIwICsxMTU3LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVE
ZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgSklURGVsQnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1
bHRSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAKICAgICAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgobV9qaXQpOwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2Vs
c2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUs
CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5m
bygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwpAQCAtMTE3MCwyMiArMTIxNCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGls
ZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IG5vZGUtPmNoaWxkMigpKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIGtleSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICAgICAgfQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3Mu
cGF5bG9hZEdQUigpOwogCisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7
CisKICAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkp
CiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChrZXlS
ZWdzKSk7CiAKQEAgLTExOTQsMjAgKzEyNDMsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgSklURGVsQnlWYWxHZW5l
cmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7
CiAKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUs
Ci0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1v
ZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2Vsc2UKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1
YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlS
ZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBt
X2ppdC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTEyMzYsOSArMTMwMCwx
NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkK
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlJZChOb2RlKiBub2RlKQogeworICAg
IE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlLCBQYXlsb2FkV29yZCk7CiAKKyAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7CiAKQEAgLTEyNDgsMTQgKzEzMTgsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluQnlJZChOb2RlKiBub2RlKQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2pp
dC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVk
ZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRS
ZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSwKLSAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAorICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2Vw
dGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAorICAgICAg
ICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVk
LAorICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdl
bi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkSW5C
eUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1v
dmUoc2xvd1BhdGgpKTsKQEAgLTM1NjEsOSArMzY0MiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNl
LCBKUwogewogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9
PSBHZXRQcml2YXRlTmFtZSk7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBt
X2dyYXBoLmNoaWxkKG5vZGUsIDEpLnVzZUtpbmQoKSA9PSBTeW1ib2xVc2UpOwotICAgIHNwZWN1
bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKIAorICAgIE9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICB9CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBz
cGVjdWxhdGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CisKICAgICBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGlu
Z09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMzU3NCwx
NCArMzY2NSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVC
eVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAKICAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
IGJhc2UsIHByb3BlcnR5LCByZXN1bHQucmVncygpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVz
dWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3lt
Ym9sID0gdHJ1ZTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5z
bG93UGF0aEp1bXAoKSk7Ci0KLSAgICBhdXRvIG1ha2VTbG93UGF0aENhbGwgPSBbJl0oYXV0byBi
YXNlKSB7CisgICAgYXV0byBtYWtlU2xvd1BhdGhJQ0NhbGwgPSBbJl0oYXV0byBiYXNlKSB7Cisg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1
bHQucmVncygpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAg
IGJhc2UsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5LnBheWxvYWRHUFIoKSkpOwor
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCiAgICAgICAgICAg
ICByZXN1bHQucmVncygpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLApAQCAtMzU4
OSw4ICszNjg2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1l
QnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICB9OwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IGJhc2VJc0tub3duQ2Vs
bAotICAgICAgICA/IG1ha2VTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZS5wYXlsb2FkR1BSKCkpKQotICAgICAgICA6IG1ha2VTbG93UGF0aENhbGwoYmFzZSk7CisgICAg
ICAgID8gbWFrZVNsb3dQYXRoSUNDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5
bG9hZEdQUigpKSkKKyAgICAgICAgOiBtYWtlU2xvd1BhdGhJQ0NhbGwoYmFzZSk7CiAKICAgICBt
X2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNjAyLDI4ICszNjk5LDQwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsK
ICAgICBzd2l0Y2ggKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkudXNlS2luZCgpKSB7CiAgICAgY2Fz
ZSBDZWxsVXNlOiB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGlsZChub2Rl
LCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
YmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9
IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVn
cyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9k
ZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2Us
IGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7
CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMp
OwogICAgICAgICBicmVhazsKQEAgLTM3MjIsMjkgKzM4MzEsNDAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAg
IEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOwotCi0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgLy8gV2UgZW1p
dCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQK
ICAgICAvLyB0byBjaGVjayBpdCBoZXJlLgogICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZh
dGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxk
RGVmaW5lIDogUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OwotICAgIGNhY2hlZFB1dEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgp
KTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFs
dWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2Rl
KiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVl
UmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLQogICAgIEdQUlJlZyBicmFuZEdQ
UiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAKICAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQy
KCksIGJyYW5kR1BSKTsKQEAgLTM3NTgsMTYgKzM4NzgsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CiAKICAgICBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2Vk
UmVnaXN0ZXJzLAotICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJy
YW5kR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFu
ZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3lt
Ym9sID0gdHJ1ZTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2hl
Y2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YnJhbmRHUFIpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93
UGF0aCkpOwpAQCAtMzc3OCw5ICszOTA2LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcg
YnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCkBAIC0zNzkyLDE2ICszOTI2LDI0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRl
QnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIp
OwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplLCBOb1Jlc3VsdCwgCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQs
CisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0
aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpA
QCAtMzkxOSwyMiArNDA2MSwyOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UoTm9kZSogbm9kZSkKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mRm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBKU1ZhbHVlUmVn
cyBwcm90b3R5cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BS
UmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJH
UFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQogewogICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCA9IG1faml0LmFkZENhbGxTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3Rl
cnMoKSwgcmVzdWx0R1BSLAotICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5
cGVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCisgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCisgICAgICAgIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzdHViSW5mb0dQ
Uiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCiAgICAgICAgIG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNPYmplY3QgfCB+U3BlY0NlbGwpKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKHNsb3dDYXNlKTsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKLSAgICAgICAgcHJv
dG90eXBlUmVncyk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3Ms
IHByb3RvdHlwZVJlZ3MpOworICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRJbnN0YW5jZU9mKGdl
biwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xv
d1BhdGgpKTsKQEAgLTM5NDUsNiArNDA5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UKICAgICAgICAgJiYgbm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTM5NTIsMTMgKzQxMDEsMTggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
Mih0aGlzKTsKICAgICAgICAgCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1
YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgR1BSUmVnIHZh
bHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwcm90
b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBjb21waWxl
SW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJl
Z3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7Cisg
ICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIAogICAgICAgICBibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0zOTY4LDEyICs0
MTIyLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5v
ZGUpCiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgCisgICAg
T3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvdG90eXBlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIAorICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAg
ICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVSZWdz
IHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcHJvdG90
eXBlUmVncyA9IHByb3RvdHlwZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAtMzk4OSw3ICs0MTQ5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkK
ICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChwcm90b3R5cGVSZWdzKTsKICAgICAKLSAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxz
KG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBJ
bnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CisgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhu
b2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNj
cmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKICAgICAKICAgICBkb25lLmxpbmso
Jm1faml0KTsKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAt
MTMwMTksNDYgKzEzMTc5LDY0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0luZGV4
U3RyaW5nKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlk
Rmx1c2goTm9kZSogbm9kZSkKIHsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZh
bHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5k
OjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERv
bnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAg
T3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGly
ZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQogeworICAg
IE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBs
YWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9
CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVl
UmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwg
bm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTE0NjkwLDE4
ICsxNDg2OCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHJvZmlsZVR5cGUoTm9k
ZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0
S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxN
b2RlID09IERvbnRTcGlsbCkgewogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVn
aXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldCh2YWx1ZVJlZ3MsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwg
ZmFsc2UpOwogICAgIH0KICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
R1BSKSwgdmFsdWVSZWdzLAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZH
SklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsIHN0dWJJ
bmZvR1BSLAogICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CkBAIC0xNDcxMSw5ICsxNDg5MSwxNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEpTVmFsdQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFy
Z2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBh
dXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KIAog
ICAgIG1faml0LmFkZFB1dEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUyZTFlOGNkNTJhMDQ4NmU2MTBjNWM0OTBj
M2JhMGE5MTdkYzg5ZjMuLjhjMzI5MzYwODAxYzM5ZWE3NWJkZDRmODNlNjI0NWU5MTIyMjVlZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTcxOSwxNiArNzE5LDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKIAogICAgIHZvaWQgY29t
cGlsZUNoZWNrRGV0YWNoZWQoTm9kZSopOwogCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVP
cmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUg
PSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxS
ZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2luZCwg
RUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6
Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogICAgIHZvaWQgY2Fj
aGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUs
IEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRC
eUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBH
UFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxl
cjo6SnVtcExpc3QoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHZvaWQgY2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5
bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwg
R1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBK
SVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9H
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFz
ZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcgdGhpc1BheWxvYWRH
UFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcg
c3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1w
TGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAjZW5kaWYK
IAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQoTm9kZSopOwpAQCAtNzUxLDcgKzc1MSw3IEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhv
bGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgYm9vbCBnZW5lcmlj
SlNWYWx1ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICAKLSAgICB2
b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BS
LCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0g
SklUQ29tcGlsZXI6Okp1bXAoKSk7CisgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxz
KE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BSLCBH
UFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBH
UFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gSklUQ29tcGls
ZXI6Okp1bXAoKSk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZihOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UoTm9kZSopOwpAQCAtOTQ5LDYgKzk0OSwyNiBAQCBjbGFzcyBTcGVjdWxh
dGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0UmVn
VHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICBG
dW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZvaWQ+CisgICAg
Y2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgUmVzdWx0UmVnVHlw
ZSByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3MsIGFyZ3MuLi4pOworICAg
ICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCksIHJlc3VsdCk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVu
YWJsZV9pZl90PAorICAgICAgICAhRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jl
c3VsdCwKKyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IGFkZHJlc3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3MsIGFyZ3MuLi4pOworICAg
ICAgICBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCBhZGRyZXNzLm9mZnNldCkpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9D
YiBvcGVyYXRpb24sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKICAgICAgICAgLy8gRG8g
bm90IHJlZ2lzdGVyIENvZGVCbG9jayogYXMgYSB3ZWFrLXBvaW50ZXIuCkBAIC05ODgsNiArMTAw
OCwxMyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBtX2ppdC5hcHBl
bmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZENhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxD
YWxsKCk7CisgICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAg
ICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRPcGVyYXRpb25DYWxsKGNvbnN0IEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAgewogICAgICAgICBwcmVw
YXJlRm9yRXh0ZXJuYWxDYWxsKCk7CkBAIC0xMDEwLDYgKzEwMzcsMjggQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVu
ZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEdQUlJlZyByZXN1
bHQpCisgICAgeworICAgICAgICBhcHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBpZiAocmVz
dWx0ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJl
c3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdDEsIEdQUlJl
ZyByZXN1bHQyKQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBSZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOworICAgIH0KKworICAgIHZvaWQg
YXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgYXBw
ZW5kQ2FsbFNldFJlc3VsdChhZGRyZXNzLCByZXN1bHRSZWdzLmdwcigpKTsKKyNlbHNlCisgICAg
ICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoYWRkcmVzcywgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCks
IHJlc3VsdFJlZ3MudGFnR1BSKCkpOworI2VuZGlmCisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+IGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYjU3YzM3YWEw
NWRkNDkwOTFjN2ZhMzY1MGY4YmJmZjc1MjM3ZjYzOS4uYzFiNWQwNjFjM2M1YTRhNjUwNmNiN2M2
MGVlMjk2N2ZjMjE2YTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xNjgsMTUgKzE2OCwxNiBAQCBib29sIFNw
ZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UsIEdQUlJlZyYgdGFnR1BSLCBHUFJS
ZWcmIHBheWxvYWRHUFIsCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBl
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewot
ICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLnRhZ0dQUigpLCBiYXNlLnBheWxvYWRHUFIo
KSwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBpZGVudGlmaWVyLCBzbG93
UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2Uu
dGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXls
b2FkR1BSKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwg
dHlwZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCi0gICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwK
KyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJS
ZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXls
b2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogeworICAgIFVOVVNFRF9QQVJBTShzdHVi
SW5mb0dQUik7CiAgICAgLy8gVGhpcyBpcyBhIGhhY2t5IGZpeCBmb3Igd2hlbiB0aGUgcmVnaXN0
ZXIgYWxsb2NhdG9yIGRlY2lkZXMgdG8gYWxpYXMgdGhlIGJhc2UgcGF5bG9hZCB3aXRoIHRoZSBy
ZXN1bHQgdGFnLiBUaGlzIG9ubHkgaGFwcGVucwogICAgIC8vIGluIHRoZSBjYXNlIG9mIEdldEJ5
SWRGbHVzaC9HZXRCeUlkRGlyZWN0Rmx1c2gsIHdoaWNoIGhhcyBhIHJlbGF0aXZlbHkgZXhwZW5z
aXZlIHJlZ2lzdGVyIGFsbG9jYXRpb24gc3RvcnkgYWxyZWFkeSBzbyB3ZSBwcm9iYWJseSBkb24n
dCBuZWVkIHRvCiAgICAgLy8gdHJpcCBvdmVyIG9uZSBtb3ZlIGluc3RydWN0aW9uLgpAQCAtMjAw
LDggKzIwMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiAgICAgCiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiks
IEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIHR5cGUpOworICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFz
ZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIpLCBJbnZhbGlkR1BSUmVnLCB0eXBlKTsKICAgICAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCkBAIC0yMjgsMTUgKzIyOSwxNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCi0gICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1Rh
Z0dQUiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZEdQUiwKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
VGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBH
UFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQ
YXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQog
eworICAgIFVOVVNFRF9QQVJBTShzdHViSW5mb0dQUik7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICAKICAgICBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRs
aW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSlNWYWx1ZVJl
Z3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFn
R1BSLCB0aGlzUGF5bG9hZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmll
ciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwg
SlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVn
cyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcpOwogICAgIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIzNDEsOCArMjM0Myw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncy50YWdHUFIo
KSkpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgICAgICBiYXNlUmVncywgcHJv
cGVydHlSZWdzLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0
QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5
UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAKICAgICAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNTdHJp
bmcpKQogICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0g
dHJ1ZTsKQEAgLTM0MDUsNyArMzQwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcu
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxv
YWQuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhp
cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJhc2VHUFIsIEludmFsaWRH
UFJSZWcsIHRoaXNHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJhc2VHUFIsIEludmFsaWRHUFJS
ZWcsIHRoaXNHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJl
Zywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMzQyNSw3ICszNDI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgICAgIG5v
dENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwodGhpc1ZhbHVlLmpzVmFsdWVS
ZWdzKCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlz
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHRoaXNU
YWdHUFIsIHRoaXNQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOworICAgICAgICAgICAgY2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVRhZ0dQUiwgYmFz
ZVBheWxvYWRHUFIsIHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJl
c3VsdFBheWxvYWRHUFIsIEludmFsaWRHUFJSZWcsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgbm90Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IGI5MTE4YjYyZTg3ZDk3MGFjNTQ2MWY2M2JkM2MzODBmYjhiMDEyNjAuLjMzNmIxYTk1ZDI0NmU3
MTk0YTc3NDEwMjY1M2MzMjlkMzQzNGY1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTQ3LDEyICsxNDcsMTIgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAgICAgfQogfQogCi12
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVy
c01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUg
bW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNl
LmdwcigpLCByZXN1bHQuZ3ByKCksIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0
eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIoKSwgcmVzdWx0Lmdwcigp
LCBzdHViSW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOwog
fQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVn
aXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lz
dGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMTYw
LDI2ICsxNjAsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAgICAgICAgLy8gV2UndmUg
YWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8g
c3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsK
ICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxzZSk7CisgICAgICAgIGlm
IChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVy
cy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHR5cGUpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywg
aWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHJl
c3VsdEdQUiksIHN0dWJJbmZvR1BSLCB0eXBlKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCht
X2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFw
cHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKLSAgICAgICAgc3BpbGxN
b2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlm
aWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkg
eworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAg
ICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
KyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFz
ZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWQoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93
UGF0aCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQ
UlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklU
Q29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1w
TGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1f
aml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5l
ZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMTg3LDIwICsxOTcsMzAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBm
YWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQodGhpc0dQUiwgZmFsc2UpOwogICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgIGlmIChzdHViSW5mb0dQUiAhPSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFs
c2UpOwogICAgIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywg
aWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlzR1BSKSwgc3R1YkluZm9HUFIpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAg
ICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAot
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VH
UFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hl
Y2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1Yklu
Zm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCisgICAgICAgICAg
ICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAg
ICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNl
R1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogICAgIAogICAgIG1f
aml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0yNjgxLDE2ICsyNzAxLDIzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwotCisgICAgICAgICAgICBPcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0
aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHByb3BlcnR5KTsKKworICAgICAg
ICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9
IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3Bl
cnR5LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
IAorICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MCkpOworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSkpOworCiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQu
cmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVk
KGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTI3MDAsOCArMjcyNyw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlR1BSKSk7CiAK
ICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5
VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAg
ICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIp
LCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIGlm
IChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNw
ZWNTdHJpbmcpKQogICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3Ry
aW5nID0gdHJ1ZTsKQEAgLTI3MTIsMTEgKzI3MzksMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCht
X2ppdCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKLQotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOworCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93
UGF0aCkpOwpAQCAtMzk4NCw5ICs0MDE5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSAmJiBub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBzdHViSW5mbzsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTM5OTQsMTQgKzQwMzYs
MjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBK
SVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRo
aXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQ
Uiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6
Okp1bXBMaXN0KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAg
ICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC00
MDEzLDcgKzQwNjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpT
VmFsdWVSZWdzKGJhc2VHUFIpKSk7CiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhU
aGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRH
UFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggODE2N2ZhM2QwNTJjMTBiZGYxYjZmNjQ5MGNlMzU5MDdkYWQ4YmYzNS4u
MmM4NWQ5OTNkYjI4NGU0ZjdiNTBlMDAxNWMwOTc2NzIzZWJiZWJmMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzk3OCw2ICszOTc4LDcg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90
Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwogCkBAIC0zOTk5LDEwICs0MDAwLDExIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIo
KTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAg
ICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAg
ICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+
OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJl
c3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQ
UiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAgICAgICAgICAgIGlmICghYmFz
ZUlzQ2VsbCkKQEAgLTQwMTYsMTMgKzQwMTgsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAog
ICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRQcml2
YXRlTmFtZU9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwg
cHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0
aENhbGwpOwpAQCAtNDExMCw2ICs0MTI0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0
Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVy
cyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC00MTMwLDEw
ICs0MTQ1LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0g
cGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJ
bnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5
cGUsCi0gICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFu
ZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5v
dENlbGw7CiAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCkBAIC00MTU5LDEzICs0MTc1LDI1
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5p
c1NldCgpKQogICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAg
ICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOwotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rp
b24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihh
Y2Nlc3NUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlk
R1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9u
KGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0
b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVn
aW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00NTE2LDYgKzQ1NDQsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6
OnJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAog
ICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2Fu
dCB0byBsYXRlLWNsb2JiZXIgdm9sYXRpbGUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyODQ4CkBAIC00NTM4LDEwICs0NTY3
LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVy
IGNhbGwgSUNzIGdlbmVyYXRlZCBieSB0aGUgUHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAg
ICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53
aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1z
LmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdl
bmVyYXRvciA9IEJveDxKSVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExK
SVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzKHBhcmFtc1swXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFN
b2RlLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBz
dHViSW5mb0dQUiwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUs
CiAgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CkBAIC00NTUzLDEyICs0NTg0LDI0IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xv
d1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9u
KCksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BS
UmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygp
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwg
SW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7
CkBAIC01MjM5LDYgKzUyODIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDog
MDsKIAogICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2Vw
dGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsK
IApAQCAtNTI1OSwxMCArNTMwMywxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BS
UmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgICAgIGF1
dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsCi0gICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1
ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsCisgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBz
dHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnBy
b3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5nOwogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gcHJvcGVydHlJc0ludDMyOwpAQCAt
NTI4MCwxMyArNTMyNSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RD
ZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhK
dW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhD
YWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01ODM2LDcgKzU4OTMsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDIgOiAxOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwpAQCAtNTg1Niw5ICs1OTEzLDExIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0u
Z3ByKCkpOwogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigp
OworICAgICAgICAgICAgICAgIGF1dG8gc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7
CisgICAgICAgICAgICAgICAgYXV0byBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDEpIDogSW52YWxpZEdQUlJlZzsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSByZXR1cm5HUFIpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBzY3JhdGNoR1BSKTsKIAogICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsK
QEAgLTU4NzQsNyArNTkzMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2Ny
aXB0VmFsdWUucmF3Qml0cygpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0u
Z3ByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gcGFy
YW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MocGFyYW1zWzJd
LmdwcigpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBh
cmFtc1syXS5ncHIoKSk7CkBAIC01ODg0LDE5ICs1OTQzLDIwIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewogICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46
OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3Jh
dGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5H
UFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJh
dG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3Jh
dGNoKDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVS
ZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAg
ICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKApAQCAtNTkwNSwxMiArNTk2NSwyNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygm
aml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1Bh
dGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGlt
aXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJh
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5r
VG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVw
b3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjI0Miw4
ICsxMjMxNCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90
Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtMTIyNjAsMTAgKzEyMzMyLDEyIEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6
SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKKyAgICAgICAg
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVh
dGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRl
bnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTIyNzQsMTIgKzEyMzQ4
LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVy
YXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRo
Q2FsbCk7CkBAIC0xMjQ4Niw3ICsxMjU3Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm90b3R5cGUpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9u
dW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7
Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7CisgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyAzIDogMjsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29u
c3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAg
ICAgICAgIApAQCAtMTI1MDIsNiArMTI1ODgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CiAgICAg
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwogICAg
ICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7Cisg
ICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMikgOiBJbnZhbGlkR1BSUmVnOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25l
SnVtcDsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlSXNDZWxsKSB7CkBAIC0xMjUyMywxMCAr
MTI2MTAsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAotICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2
YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzdHViSW5mb0dQUiwg
c2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIsIHByb3RvdHlwZUlz
T2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0
KTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZU
TEpJVCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25l
ID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcGFyYW1z
LmFkZExhdGVQYXRoKApAQCAtMTI1MzcsMTIgKzEyNjI2LDI0IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZh
bHVlR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlv
bkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsK
QEAgLTEzOTg2LDYgKzE0MDg3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZh
bHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBh
IEdldEJ5SWRGbHVzaC9HZXRCeUlkRGlyZWN0Rmx1c2gsIHdlIG1pZ2h0IGdldCBzb21lIHBlcmZv
cm1hbmNlIGJvb3N0IGlmIHdlIGNsYWltIHRoYXQgaXQKICAgICAgICAgLy8gY2xvYmJlcnMgdm9s
YXRpbGUgcmVnaXN0ZXJzIGxhdGUuIEl0J3Mgbm90IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3Ms
IHRob3VnaCwgc2luY2UgdGhlCkBAIC0xNDAxNCwxMCArMTQxMTYsMTIgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChw
YXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUR2V0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhw
YXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNb
MF0uZ3ByKCkpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1z
WzBdLmdwcigpKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDAzMCwxMiArMTQxMzQsMjQgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFy
YW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9H
UFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdw
cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmll
ci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlv
biwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5y
YXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdp
biwgc2xvd1BhdGhDYWxsKTsKQEAgLTE0MDYwLDggKzE0MTc2LDggQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1ZSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDog
MDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKQEAgLTE0MDgzLDEwICsxNDE5OSwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAgICAgICBl
eGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2Fs
bFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6
IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAor
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFd
LmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSk7CisgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5n
cHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJh
dGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9u
ZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwOTksMTIgKzE0MjE3LDI0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1w
KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBw
YXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdw
cigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1Bh
dGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1
YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1z
WzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKaW5kZXgg
MmFkZDQ5NGM1MzJhYWVhOGVlM2QxMWNlMTIyNzgxMTg5MzU2YWQ0Zi4uYjRlNDc1OGU1OGZiMWU3
OTI2YzZhMDcxODM3MzE1ODk4N2M3NmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCB3b3JkU2l6ZSA9IDg7CiAK
IFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQoCi0gICAgUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQ
UlJlZyByZXR1cm5SZWdpc3RlcikKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2Fs
bEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyLCBH
UFJSZWcgaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpCiAgICAgOiBtX2ppdChqaXQpCiAgICAg
LCBtX251bUFyZ3MobnVtQXJncykKICAgICAsIG1fcmV0dXJuUmVnaXN0ZXIocmV0dXJuUmVnaXN0
ZXIpCkBAIC02Myw2ICs2Myw4IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENv
bnRleHQoCiAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5tZXJnZShtX2FyZ3VtZW50
UmVnaXN0ZXJzKTsKICAgICBpZiAocmV0dXJuUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKICAg
ICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOworICAgIGlmIChpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlciAhPSBJbnZhbGlkR1BS
UmVnKQorICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChpbmRpcmVjdENh
bGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5maWx0
ZXIodXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIAogICAgIHVuc2lnbmVkIG51bWJlck9mQ2FsbGlu
Z0NvbnZlbnRpb25SZWdpc3RlcnMgPQpAQCAtMTE0LDcgKzExNiwxMiBAQCBTbG93UGF0aENhbGxD
b250ZXh0Ojp+U2xvd1BhdGhDYWxsQ29udGV4dCgpCiAKIFNsb3dQYXRoQ2FsbEtleSBTbG93UGF0
aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
Y2FsbFRhcmdldCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtT
YXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCk7CisgICAg
cmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1
bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIDApOworfQorCitTbG93UGF0aENhbGxLZXkgU2xvd1Bh
dGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVz
cykgY29uc3QKK3sKKyAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBu
dWxscHRyLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCwgYWRkcmVzcy5vZmZzZXQpOwog
fQogCiBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCkBAIC0xMzMsNiArMTQwLDIy
IEBAIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitTbG93
UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MgY2FsbFRhcmdldCkKK3sKKyAgICBTbG93UGF0aENhbGxLZXkga2V5ID0ga2V5
V2l0aFRhcmdldChjYWxsVGFyZ2V0KTsKKyAgICBTbG93UGF0aENhbGwgcmVzdWx0ID0gU2xvd1Bh
dGhDYWxsKG1faml0LmNhbGwoSklUVGh1bmtQdHJUYWcpLCBrZXkpOworCisgICAgbV9qaXQuYWRk
TGlua1Rhc2soCisgICAgICAgIFtyZXN1bHQsICZ2bV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGh1
bmsgPQorICAgICAgICAgICAgICAgIHZtLmZ0bFRodW5rcy0+Z2V0U2xvd1BhdGhDYWxsVGh1bmso
dm0sIHJlc3VsdC5rZXkoKSk7CisKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhyZXN1bHQu
Y2FsbCgpLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odGh1bmsuY29kZSgpKSk7
CisgICAgICAgIH0pOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihTdGF0ZSYgc3RhdGUsIENvZGVPcmlnaW4gY29kZU9y
aWdpbikKIHsKICAgICBpZiAoY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbC5oCmluZGV4IDcwZDI4OGUwM2YxZDhkODFmMjc3ZjZiODIxN2FjOWYz
ZmE4MGMxMmEuLmQ2ZjI4NTQ5YTMxYjMzNWRkNWI1NzU5YWNlMjEwZjQ4MmE4MzFkNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaApAQCAtNTQsMTUgKzU0
LDE3IEBAIGNsYXNzIFNsb3dQYXRoQ2FsbCB7CiAvLyBUaGlzIHdpbGwgYmUgYW4gUkFJSSB0aGlu
Z3kgdGhhdCB3aWxsIHNldCB1cCB0aGUgbmVjZXNzYXJ5IHN0YWNrIHNpemVzIGFuZCBvZmZzZXRz
IGFuZCBzdWNoLgogY2xhc3MgU2xvd1BhdGhDYWxsQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgU2xv
d1BhdGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMm
LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIpOworICAgIFNsb3dQYXRo
Q2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5z
aWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyLCBHUFJSZWcgaW5kaXJlY3RDYWxs
VGFyZ2V0UmVnaXN0ZXIpOwogICAgIH5TbG93UGF0aENhbGxDb250ZXh0KCk7CiAKICAgICAvLyBO
T1RFOiBUaGUgY2FsbCB0aGF0IHRoaXMgcmV0dXJucyBpcyBhbHJlYWR5IGdvaW5nIHRvIGJlIGxp
bmtlZCBieSB0aGUgSklUIHVzaW5nIGFkZExpbmtUYXNrKCksCiAgICAgLy8gc28gdGhlcmUgaXMg
bm8gbmVlZCBmb3IgeW91IHRvIGxpbmsgaXQgeW91cnNlbGYuCiAgICAgU2xvd1BhdGhDYWxsIG1h
a2VDYWxsKFZNJiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KTsKKyAg
ICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpOwogCiBw
cml2YXRlOgogICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkgY29uc3Q7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtl
eVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKSBjb25zdDsKICAgICAKICAgICBSZWdp
c3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwogICAgIFJlZ2lzdGVyU2V0IG1fY2FsbGluZ0Nv
bnZlbnRpb25SZWdpc3RlcnM7CkBAIC04Miw3ICs4NCw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3Bl
cmF0aW9uKAogewogICAgIFNsb3dQYXRoQ2FsbCBjYWxsOwogICAgIHsKLSAgICAgICAgU2xvd1Bh
dGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3Vt
ZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSKTsKKyAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBj
b250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwg
cmVzdWx0R1BSLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPHZv
aWQoQXJndW1lbnRUeXBlcy4uLik+KGFyZ3VtZW50cy4uLik7CiAgICAgICAgIGNhbGwgPSBjb250
ZXh0Lm1ha2VDYWxsKHZtLCBmdW5jdGlvbik7CiAgICAgfQpAQCAtMTE3LDYgKzExOSw0OCBAQCBT
bG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKICAgICAgICAgcmVzdWx0LCBhcmd1bWVudHMuLi4p
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxs
IGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlv
blRhcmdldCwKKyAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1
bHRHUFIsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIFNsb3dQYXRoQ2FsbCBj
YWxsOworICAgIHsKKyAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdp
c3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSLCBHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RD
YWxsPHZvaWQoQXJndW1lbnRUeXBlcy4uLik+KGZ1bmN0aW9uLCBhcmd1bWVudHMuLi4pOworICAg
ICAgICBjYWxsID0gY29udGV4dC5tYWtlQ2FsbCh2bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIGZ1bmN0aW9uLm9mZnNldCkpOworICAgIH0KKyAgICBpZiAoZXhj
ZXB0aW9uVGFyZ2V0KQorICAgICAgICBleGNlcHRpb25UYXJnZXQtPmFwcGVuZChqaXQuZW1pdEV4
Y2VwdGlvbkNoZWNrKHZtKSk7CisgICAgcmV0dXJuIGNhbGw7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBW
TSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAorICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QqIGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJS
ZWcgcmVzdWx0R1BSLAorICAgIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIGlm
IChjYWxsU2l0ZUluZGV4KSB7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAorICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOworICAgIH0KKyAgICByZXR1cm4gY2FsbE9wZXJh
dGlvbih2bSwgdXNlZFJlZ2lzdGVycywgaml0LCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLCBy
ZXN1bHRHUFIsIGFyZ3VtZW50cy4uLik7Cit9CisKK0NhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eEZvckNvZGVPcmlnaW4oU3RhdGUmLCBDb2RlT3JpZ2luKTsKKwordGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFN0YXRl
JiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYg
aml0LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCog
ZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyBy
ZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBjYWxsT3Bl
cmF0aW9uKAorICAgICAgICBzdGF0ZS52bSgpLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGNhbGxTaXRl
SW5kZXhGb3JDb2RlT3JpZ2luKHN0YXRlLCBjb2RlT3JpZ2luKSwgZXhjZXB0aW9uVGFyZ2V0LCBm
dW5jdGlvbiwKKyAgICAgICAgcmVzdWx0LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcAppbmRleCAyZDMwNmM2
MjAzM2E4MzkwOGU2ZmNjNmFiOWU2ZTg0Y2ZlODFlY2FhLi5jNGU3ZTgyNjFmZDQ3MzZiMWQzMzcy
YmVmNTUxM2VmZTVhYTM5YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGxLZXkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKIAogdm9pZCBTbG93UGF0aENhbGxLZXk6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2Vk
UmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgY2FsbFRhcmdldCA9ICIsIFJh
d1BvaW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAiLCBhcmd1bWVudFJl
Z2lzdGVycyA9ICIsIG1fYXJndW1lbnRSZWdpc3RlcnMsICI+Iik7CisgICAgb3V0LnByaW50KCI8
dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZz
ZXQsICIsIGluZGlyZWN0T2Zmc2V0ID0gIiwgbV9pbmRpcmVjdE9mZnNldCwgIiwgY2FsbFRhcmdl
dCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAiLCBh
cmd1bWVudFJlZ2lzdGVycyA9ICIsIG1fYXJndW1lbnRSZWdpc3RlcnMsICI+Iik7CiB9CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbEtleS5oCmluZGV4IDA4NmFlMDBlZTU4NTUyYzdjZTgzZDcwNTIwZTc2MTM4
NDJiZGQzM2QuLjBjZTYxZjI2YmE5NTBiOTNmYzNhOGVjMTliNTY3NDFhZTEwMDBkMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaApAQCAtNTEs
MTEgKzUxLDEyIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgCiAgICAgU2xvd1BhdGhD
YWxsS2V5KAogICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgc2V0LCBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lz
dGVycywKLSAgICAgICAgcHRyZGlmZl90IG9mZnNldCkKKyAgICAgICAgcHRyZGlmZl90IG9mZnNl
dCwgaW50MzJfdCBpbmRpcmVjdE9mZnNldCkKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoc2V0
KQogICAgICAgICAsIG1fY2FsbFRhcmdldChjYWxsVGFyZ2V0LnJldGFnZ2VkPE9wZXJhdGlvblB0
clRhZz4oKSkKICAgICAgICAgLCBtX2FyZ3VtZW50UmVnaXN0ZXJzKGFyZ3VtZW50UmVnaXN0ZXJz
KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX2luZGlyZWN0T2Zmc2V0
KGluZGlyZWN0T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MywxMCArNjQsMTEgQEAg
Y2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
IGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICBjb25zdCBS
ZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50
UmVnaXN0ZXJzOyB9CiAgICAgcHRyZGlmZl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0OyB9CisgICAgaW50MzJfdCBpbmRpcmVjdE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1faW5k
aXJlY3RPZmZzZXQ7IH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkgd2l0aENhbGxUYXJnZXQo
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3Vt
ZW50UmVnaXN0ZXJzKCksIG9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtl
eSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9mZnNl
dCgpLCBpbmRpcmVjdE9mZnNldCgpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CkBAIC03NiwxMyArNzgsMTEgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5
IHsKICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRW1wdHlWYWx1ZVRhZykKICAgICAgICAgOiBt
X3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkVtcHR5VmFsdWUpCi0gICAgICAgICwgbV9vZmZz
ZXQoMCkKICAgICB7CiAgICAgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShEZWxldGVkVmFs
dWVUYWcpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpEZWxldGVkVmFs
dWUpCi0gICAgICAgICwgbV9vZmZzZXQoMCkKICAgICB7CiAgICAgfQogICAgIApAQCAtOTMsMTgg
KzkzLDIwIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgewogICAgICAgICByZXR1cm4g
bV91c2VkUmVnaXN0ZXJzID09IG90aGVyLm1fdXNlZFJlZ2lzdGVycwogICAgICAgICAgICAgJiYg
bV9jYWxsVGFyZ2V0ID09IG90aGVyLm1fY2FsbFRhcmdldAotICAgICAgICAgICAgJiYgbV9vZmZz
ZXQgPT0gb3RoZXIubV9vZmZzZXQ7CisgICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5t
X29mZnNldAorICAgICAgICAgICAgJiYgbV9pbmRpcmVjdE9mZnNldCA9PSBvdGhlci5tX2luZGly
ZWN0T2Zmc2V0OwogICAgIH0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMuaGFzaCgpICsgUHRySGFzaDx2b2lkKj46Omhhc2go
bV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgbV9vZmZzZXQ7CisgICAgICAgIHJl
dHVybiBtX3VzZWRSZWdpc3RlcnMuaGFzaCgpICsgUHRySGFzaDx2b2lkKj46Omhhc2gobV9jYWxs
VGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgbV9vZmZzZXQgKyBtX2luZGlyZWN0T2Zmc2V0
OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CiAg
ICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX2NhbGxUYXJnZXQ7CiAgICAgUmVnaXN0
ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKLSAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7CisgICAg
cHRyZGlmZl90IG1fb2Zmc2V0IHsgMCB9OworICAgIGludDMyX3QgbV9pbmRpcmVjdE9mZnNldCB7
IDAgfTsKIH07CiAKIHN0cnVjdCBTbG93UGF0aENhbGxLZXlIYXNoIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAppbmRleCBkYmZlZDQ0ZDVhMTJhYWRkZDI3NmE5MzMxMzNj
MGIzNmM4NjYxM2FkLi5kOTIwMmEzZDQxOWU1Y2IyYTU5ZTMxZmJlODVhNGFkNTNiZTQ5NDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCkBAIC03OCw4ICs3OCw4IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNHZW5l
cmF0aW9uVGh1bmtHZW5lcmF0b3IoCiAgICAgc2F2ZUFsbFJlZ2lzdGVycyhqaXQsIGJ1ZmZlcik7
CiAgICAgCiAgICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNo
IGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIx
KTsKIAogICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKApAQCAtMjAwLDEzICsyMDAsMjAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVy
YXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXplb2YoZG91
YmxlKTsKICAgICB9CiAgICAgCi0gICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50
ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CisgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVz
c0FmdGVyQ2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5m
bzo6bm9uQXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICAKLSAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIGtleS5h
cmd1bWVudFJlZ2lzdGVycygpKTsKKyAgICBSZWdpc3RlclNldCBkb250Q2xvYmJlciA9IGtleS5h
cmd1bWVudFJlZ2lzdGVycygpOworICAgIGlmICgha2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAg
ZG9udENsb2JiZXIuc2V0KEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIHJlZ2lzdGVyQ2xvYmJl
ckNoZWNrKGppdCwgV1RGTW92ZShkb250Q2xvYmJlcikpOwogCi0gICAgQXNzZW1ibHlIZWxwZXJz
OjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIEFzc2VtYmx5SGVs
cGVyczo6Q2FsbCBjYWxsOworICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBjYWxs
ID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5jYWxs
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBrZXkuaW5kaXJlY3RP
ZmZzZXQoKSksIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhl
bHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXku
b2Zmc2V0KCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5y
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25S
ZXR1cm5HUFIpOwpAQCAtMjMyLDcgKzIzOSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAg
ICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMVGh1bmspOwotICAgIHBhdGNoQnVmZmVy
LmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkp
CisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRMIHNs
b3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRvQ1N0cmluZyhrZXkpLmRhdGEoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCAz
NTRmOTU0N2I0YWJmMzI4OTZkMWNlYjRlYTIwMGZiYjRhNGRlY2NkLi42ZWE2NTQ1NGI4YjI1Zjg3
ZDliNmM3YTQ5YTc3Y2NmNjUwMzEyY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklU
KQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCkBAIC02NTIsNyArNjUzLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0
dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAg
ICAgYXV0byBjYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKSVRD
b21waWxhdGlvblB0clRhZz4oY2FsbCk7CiAgICAgICAgIGxpbmtCdWZmZXIuYWRkTWFpblRocmVh
ZEZpbmFsaXphdGlvblRhc2soWz0sICZ2bV0gKCkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1
bmtGb3Iodm0sICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVK
SVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICAgICAgICAgIGlu
Zm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVu
aywgdm0sIHsgfSwgeyB9KSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5l
YXJDYWxsKGNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2OGIxMjEzZjZkMjRjNzBhZmI1
MDMzMjBlYWE3MmQ4OWU3ZDg2YmU5Li5lOTA5NmI1NzczZjMyMTczMTY5ZTczZmFlMzQxMTE4ODY5
ODk3ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTIw
Nyw3ICsyMDcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJz
IHsKIAogICAgIC8vIGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVu
dCB0eXBlcyBwYXNzZWQgaW4gcmVnaXN0ZXIgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuCiAgICAg
Ly8gZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3Nl
ZCBvbiB0aGUgc3RhY2suCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgogICAgIHN0cnVjdCBBcmdD
b2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAgICAgIHsKQEAgLTIxOSw4
ICsyMTksOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAg
ICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25l
ZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnPgotICAg
ICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwgZz4mIG90
aGVyKQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBj
LCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnLCB1bnNpZ25l
ZCBoPgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwg
ZiwgZywgaD4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBncHJTb3VyY2VzID0gb3Ro
ZXIuZ3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9ucyA9IG90aGVyLmdwckRl
c3RpbmF0aW9uczsKQEAgLTIzMCw2NSArMjMwLDc0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMgPSBv
dGhlci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVn
QXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikK
ICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVt
R1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNv
dXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJE
ZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcg
YXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1
c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNl
cyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5mcHJTb3VyY2VzW251bUZQ
UlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZnByRGVzdGluYXRpb25z
W251bUZQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsg
MSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBH
UFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQ
UlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAx
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQo
KnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2VzW251bUNyb3NzU291cmNl
c10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rlc3RpbmF0aW9uc1tudW1D
cm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhHUFJSZWcgYXJndW1lbnQs
IEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hFeHRyYVJl
Z0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAx
LCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
cmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291
cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVt
R1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4g
cHVzaE5vbkFyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJT
b3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tu
dW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQ
b2tlPiBhZGRHUFJFeHRyYUFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJn
KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJn
R1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0Fy
ZyhHUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcp
CisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigq
dGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsg
MT4gYWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CisgICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9CiAKICNpZiBPUyhX
SU5ET1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMzMxLDEyICszNDAsMTQgQEAgY2xhc3MgQ0NhbGxI
ZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0
KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9m
ZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1
bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIC8v
IENsYW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBzeW1ib2wgZm9yIEZQUlJlZy9H
UFJSZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0aGV5IGFyZSBwYXNzZWQgZGly
ZWN0bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1ZwogICAgICAgICB1bnNpZ25lZCBu
dW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMgPSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogCisgICAgICAgIFVOVVNFRF9QQVJB
TShub25BcmdHUFJzKTsKKwogICAgICAgICBjdXJyZW50R1BSQXJndW1lbnQgKz0gZXh0cmFHUFJB
cmdzOwogICAgICAgICBjdXJyZW50RlBSQXJndW1lbnQgLT0gbnVtQ3Jvc3NTb3VyY2VzOwogICAg
ICAgICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKQEAgLTM1MCwxNSArMzYx
LDE1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+Ci0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3Vt
ZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVu
dEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0g
Y2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVu
dCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVu
c2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVu
dCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOwogICAg
IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVu
dEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisg
ICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJn
dW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVk
IGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxh
dGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQg
cG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJy
ZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UpOwogICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CiAgICAgfQog
CkBAIC0zNzYsOCArMzg3LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogICAgIC8vIEF2b2lkIE1TVkMgb3B0aW1p
emF0aW9uIHRpbWUgZXhwbG9zaW9uIGFzc29jaWF0ZWQgd2l0aCBfX2ZvcmNlaW5saW5lIGluIHJl
Y3Vyc2l2ZSB0ZW1wbGF0ZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVn
VHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZv
aWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVnVHlwZSBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkVfRVhD
RVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdXNpbmcgSW5m
b1R5cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAgICAgdW5zaWduZWQgbnVtQXJn
UmVnaXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CkBAIC0zOTIs
MzEgKzQwMywzMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJz
IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwg
ZG91YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBk
b3VibGUiKTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNo
YWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFy
Z3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFy
Z3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVS
ZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJl
Z2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZh
bHVlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBhcmcsIEFy
Z3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KQEAg
LTQyNCw4ICs0MzUsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQ
VShNSVBTKQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1
ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogCkBA
IC00NjksMjUgKzQ4MCwyNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlI
ZWxwZXJzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50R1BBcmdDb3VudCA8IG51
bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MgKyAxLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBu
b25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhh
cmcpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICNlbmRpZgogCiAgICAgICAgIC8vIE90aGVyd2lzZSBwYXNzIEZQIGFyZ3VtZW50IG9uIHN0YWNr
LgotICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4u
Lik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKS5hZGRQb2tlKCks
IGFyZ3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKENV
UlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNl
UmVncy5hcmdDb3VudChhcmcpOwpAQCAtNDk3LDM0ICs1MDgsMzQgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFy
ZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBwb2tlQXJn
dW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwg
dHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHBva2VB
cmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFy
ZzIsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVy
cyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BSSW5mbzo6cmVnVDAp
OwogCiAgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51bUFyZ1JlZ2lzdGVycykg
ewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKLSAgICAg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEp
OwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwot
ICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQo
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcx
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcy
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UgKyAxKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlICsgMik7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UgKyAyKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1l
PENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5bG9hZCwgQXJncy4uLiBhcmdz
KQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1
ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdS
ZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1
bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KHBheWxvYWQu
Z3ByKCkpOwpAQCAtNTQ0LDkgKzU1NSw5IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBB
c3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0FsaWduZWQ8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFs
dWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJn
UmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAg
dW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcudGFn
R1BSKCkpOwpAQCAtNTY5LDExICs1ODAsMTEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGlj
IEFzc2VtYmx5SGVscGVycyB7CiAjZW5kaWYgLy8gQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBT
KQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAg
IEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19iYXNlX29m
PFRydXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0ZDo6aXNfY29udmVydGlibGU8
QXJnLCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhpcyBzaW5jZSBERkdTcGVjdWxh
dGl2ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2YgVHJ1c3RlZEltbVB0cgotICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBvbmx5IHN1cHBvcnRz
IG5vbi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNpbmNlIHdlIG5ldmVyIGNh
bGwgb3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAgICAgICAgIC8vIElmIHdl
IGV2ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50
cyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZvciBib3RoIHR5cGVzLCB3
aGljaCBzb3VuZHMKQEAgLTU5MSw0NiArNjAyLDQ2IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6
ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUs
IEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVO
VF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUp
IDw9IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMyKGFyZyksIGFyZ3MuLi4p
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
LCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1F
TlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBF
KSA9PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
QXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02NChhcmcpLCBhcmdzLi4u
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3Rk
OjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRf
VFlQRT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVyPEFyZz46OnZhbHVlICYm
IHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9wb2lu
dGVyX3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSkKICAgICAgICAgICAg
IHx8IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUpPgotICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICAv
LyBTcGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlIGJlY2F1c2UgaXQncyByZWFs
bHkgYW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVyd2lzZS4uLgotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9u
QXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFy
Z3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6Omlz
X3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6dmFsdWUKICAgICAgICAg
JiYgc3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlPjo6dmFsdWU+Ci0g
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQor
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFy
Z3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwog
ICAgIH0KQEAgLTYzOSw4ICs2NTAsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICN1bmRlZiBSRVNVTFRfVFlQRQogCiAgICAgLy8gQmFzZSBjYXNlOyBz
ZXQgdXAgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojph
cml0eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNhbml0eSBjaGVjayIp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02NTUsMzEgKzY2Niw0NCBAQCBjbGFzcyBDQ2FsbEhl
bHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0dXBTdHViQXJnczxu
dW1GUFJTb3VyY2VzLCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBS
UmVnPihhcmdTb3VyY2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVt
RlBSU291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJjZXMpKTsKICAgICB9CiAK
LXB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0Vu
dHJ5SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAg
ICAgIHVzaW5nIEZpcnN0QXJndW1lbnRUeXBlID0gdHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPjsKKyAgICAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX3NhbWU8Rmlyc3RBcmd1bWVudFR5cGUsIENhbGxGcmFtZSo+Ojp2YWx1ZSkg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdv
cmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1i
aXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5
IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4u
Lik7CisgICAgICAgIH0gZWxzZSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8v
IFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVz
cyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdz
KSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAg
IH0KKyAgICB9CiAKLSNkZWZpbmUgRklSU1RfQVJHVU1FTlRfVFlQRSB0eXBlbmFtZSBGdW5jdGlv
blRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+CitwdWJsaWM6
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RklSU1Rf
QVJHVU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4u
IGFyZ3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJn
cykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxs
eSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3Ig
MzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5
IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOworICAgICAgICBzZXR1
cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBz
dGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8RklSU1RfQVJHVU1FTlRfVFlQRSwgQ2FsbEZy
YW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEdQUlJlZyBmdW5jdGlvbkdQ
UiwgQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBU
aGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3Mg
dGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwgIkJh
c2ljIHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAs
IDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1w
bDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCku
cHVzaE5vbkFyZyhmdW5jdGlvbkdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOwog
ICAgIH0KIAotI3VuZGVmIEZJUlNUX0FSR1VNRU5UX1RZUEUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChBZGRyZXNzIGFkZHJlc3MsIEFyZ3MuLi4g
YXJncykKKyAgICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5
cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGFk
ZHJlc3MuYmFzZSwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOworICAgIH0KIAogICAg
IHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cAppbmRleCBmN2FhMzI5ZmUyNWQxOWM3MzcxODQ3MGFlZmZiM2I0YWFlYTA1ZGI2Li5hYjM0YTE0
NTA1ZWExOTc1ZTExMjgzNjFlMzAwOGY0NTVlZjdjZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJI
ZWFwLmgiCkBAIC0zOCw5ICszOSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYg
d2Vha1JlZmVyZW5jZXMpCiAgICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICwgbV92bSh2
bSkKKyAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQorICAgICwgbV93ZWFrUmVmZXJlbmNlcyhX
VEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkKIHsKICAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRpbmVz
LT5hZGQodGhpcyk7CiB9CkBAIC00OSw2ICs1Miw5IEBAIEdDQXdhcmVKSVRTdHViUm91dGluZTo6
fkdDQXdhcmVKSVRTdHViUm91dGluZSgpIHsgfQogCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGlu
ZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVi
cykKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisKICAgICBp
ZiAobV9pc0pldHRpc29uZWQpIHsKICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Ig
d2hlbiB0aGUgc3lzdGVtIHNodXRzIGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRo
ZSBKSVQgc3R1YiByb3V0aW5lIHNldCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQg
dG8gZGVsZXRpbmcKQEAgLTc1LDkgKzgxLDkgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmRlbGV0ZUZyb21HQygpCiB9CiAKIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtp
bmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVy
LAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
IGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZp
eGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtSZWZlcmVuY2VzLCBjb25zdCBKU0NlbGwqIG93
bmVyLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+
JiYgY2FsbExpbmtJbmZvcykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkK
KyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgV1RG
TW92ZSh3ZWFrUmVmZXJlbmNlcykpCiAgICAgLCBtX2NlbGxzKGNlbGxzLnNpemUoKSkKICAgICAs
IG1fY2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogewpAQCAtMTA2LDkgKzEx
Miw5IEBAIHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2Jq
ZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdhcmVKSVRTdHViUm91dGlu
ZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9u
SGFuZGxlcigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8
SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCisgICAg
Y29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwg
Vk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgRml4ZWRWZWN0
b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNv
bnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJ
bmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBEaXNw
b3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkKLSAgICA6
IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RG
TW92ZShjYWxsTGlua0luZm9zKSkKKyAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Y29kZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpLCBvd25lciwg
Y2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiAgICAgLCBtX2NvZGVCbG9ja1dpdGhFeGNl
cHRpb25IYW5kbGVyKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKQogI2lmIEVOQUJMRShE
RkdfSklUKQogICAgICwgbV9jb2RlT3JpZ2luUG9vbCgmbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9u
SGFuZGxlci0+Y29kZU9yaWdpbnMoKSkKQEAgLTE1Miw4ICsxNTgsMTAgQEAgdm9pZCBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCgp
CiB9CiAKIAotUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKK1JlZjxK
SVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAorICAgIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLAorICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiYmIHdlYWtSZWZlcmVuY2VzLAogICAgIFZNJiB2bSwKICAgICBjb25zdCBKU0NlbGwqIG93
bmVyLAogICAgIGJvb2wgbWFrZXNDYWxscywKQEAgLTE2NSwxOCArMTczLDE4IEBAIFJlZjxKSVRT
dHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgaWYgKCFtYWtlc0NhbGxzKSB7
CiAgICAgICAgIC8vIEFsbG9jYXRpbmcgQ2FsbExpbmtJbmZvcyBtZWFucyB3ZSBzaG91bGQgaGF2
ZSBjYWxscy4KICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKTsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRpbmUoY29kZSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWFibGVKSVRTdHViUm91dGluZSh2bSwgY29kZSwgV1RG
TW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcykpKTsKICAgICB9CiAgICAgCiAgICAg
aWYgKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVy
cy0+aml0VHlwZSgpKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdU
Rk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNl
cHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgV1RG
TW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlv
bkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CiAgICAgfQogCiAgICAgaWYgKGNlbGxzLmlzRW1wdHko
KSAmJiBjYWxsTGlua0luZm9zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEdDQXdhcmVKSVRT
dHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtKTsKKyAgICAgICAgcmV0dXJuIEdDQXdhcmVKSVRT
dHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtS
ZWZlcmVuY2VzKSk7CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5r
SW5mb3MpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRTdHVi
Um91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyks
IG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHVi
Um91dGluZS5oCmluZGV4IDQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQu
LjA1YThhNmZjNmI0NjU5NzA3Yjg2MDIyOWVmNzY4ZGQ2MzcwNTUxNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzgsNiAr
MzgsNyBAQCBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENvZGVPcmlnaW5Qb29sOwogfQogCitjbGFz
cyBBY2Nlc3NDYXNlOwogY2xhc3MgQ2FsbExpbmtJbmZvOwogY2xhc3MgSklUU3R1YlJvdXRpbmVT
ZXQ7CiAKQEAgLTU0LDEyICs1NSwxMiBAQCBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIC8vIGxp
c3Qgd2hpY2ggZG9lcyBub3QgZ2V0IHJlY2xhaW1lZCBhbGwgYXQgb25jZSkuCiBjbGFzcyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogcHVibGljOgotICAg
IEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiwgVk0mKTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJik7
CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFJl
ZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKKyAgICBzdGF0aWMgUmVmPEpJVFN0dWJS
b3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYg
a2V5cywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwg
dm0pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CkBAIC02OCw2ICs2OSw5IEBAIGNs
YXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAgICAg
ICAgIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbCh2aXNpdG9yKTsKICAgICB9CiAgICAgCisg
ICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICZtX2tleXM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4qIHdlYWtSZWZlcmVuY2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fd2Vha1JlZmVyZW5j
ZXM7IH0KKwogICAgIHZvaWQgZGVsZXRlRnJvbUdDKCk7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC04
MSw2ICs4NSw5IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHVi
Um91dGluZSB7CiAKICAgICBib29sIG1fbWF5QmVFeGVjdXRpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc0pldHRpc29uZWQgeyBmYWxzZSB9OworICAgIFZNJiBtX3ZtOworICAgIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOworICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiBtX3dlYWtSZWZlcmVuY2VzOwogfTsKIAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8g
bWFyayBvbmUgYWRkaXRpb25hbCBvYmplY3QgZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgpAQCAtODgs
NyArOTUsNyBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJv
dXRpbmUgewogY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgewogcHVibGljOgogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoCi0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwq
PiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKICAgICB+
TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVk
OgpAQCAtMTA5LDcgKzExNiw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKIAotICAgIEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0
IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bv
c2FibGVDYWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9y
PFN0cnVjdHVyZUlEPiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxs
Kj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJ
bmRleCk7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKCkg
ZmluYWw7CiAKICAgICB2b2lkIGFib3V0VG9EaWUoKSBmaW5hbDsKQEAgLTEyOSw5ICsxMzYsMTAg
QEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwg
OiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIGFwcHJvcHJpYXRlLiBHZW5lcmFsbHkgeW91
IG9ubHkgbmVlZCB0byBwYXNzIHBvaW50ZXJzIHRoYXQgd2lsbCBiZSB1c2VkCiAvLyBhZnRlciB0
aGUgZmlyc3QgY2FsbCB0byBDKysgb3IgSlMuCiAvLyAKLS8vIFJlZjxKSVRTdHViUm91dGluZT4g
Y3JlYXRlSklUU3R1YlJvdXRpbmUoCisvLyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlDSklU
U3R1YlJvdXRpbmUoCiAvLyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+JiBjb2RlLAogLy8gICAgVk0mIHZtLAorLy8gICAgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsCiAvLyAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogLy8g
ICAgYm9vbCBtYWtlc0NhbGxzLAogLy8gICAgLi4uKTsKQEAgLTE0Miw4ICsxNTAsOCBAQCBjbGFz
cyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1Ymxp
YyBNYXJraW5nR0NBd2FyZUpJVAogLy8gdGhpcyBmdW5jdGlvbiB1c2luZyB2YXJhcmdzLCBJIGVu
ZGVkIHVwIHdpdGggbW9yZSBjb2RlIHRoYW4gdGhpcyBzaW1wbGUKIC8vIHdheS4KIAotUmVmPEpJ
VFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBib29sIG1ha2VzQ2FsbHMsCitSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlDSklUU3R1
YlJvdXRpbmUoCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZl
Y3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcywgVk0mLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBib29sIG1ha2VzQ2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENh
bGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9y
RXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRs
aW5nQ2FsbFNpdGVJbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5kZXgg
OGY0NWIzNzdjMTY5NmE1MTZhODQzMDBiODkyMWY2YWRkNmEzZDRkZC4uMDY3YWJmZjFkNmFkMjAw
NzU0NTE4MDA3N2IwYzRhNTVjNzc3MjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKQEAgLTQ2MCw2ICs0NjAsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2Vu
ZGlmCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVy
czo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsg
Ly8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBY
ODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8g
cmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC02NTIsNiArNjUzLDcgQEAgY2xhc3MgR1BSSW5m
byB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI2ID0gQVJNNjRSZWdp
c3RlcnM6Ong2OyAvLyByZWdUNgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50
R1BSNyA9IEFSTTY0UmVnaXN0ZXJzOjp4NzsgLy8gcmVnVDcKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBub25BcmdHUFIwID0gQVJNNjRSZWdpc3RlcnM6Ong4OyAvLyByZWdUOAorICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7IC8v
IHJlZ1Q5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBBUk02
NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIyID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IEFSTTY0UmVnaXN0ZXJz
Ojp4MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1NTU2MzAzN2FlYjU4ZmVjOWIz
ZjAzZjdjZmVlMWZjMGRlM2VjZTIzLi40MWQ4YjhmODIwYjkyNzY2YTcxNmFhYThkNjNkZjFiNWQ4
ZmE4MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC05MDIsMTIgKzkwMiwxMiBA
QCB2b2lkIEpJVDo6bGluaygpCiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBieVZhbENvbXBp
bGF0aW9uSW5mbyA6IG1fYnlWYWxDb21waWxhdGlvbkluZm8pIHsKICAgICAgICAgICAgIFBhdGNo
YWJsZUp1bXAgcGF0Y2hhYmxlTm90SW5kZXhKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8ubm90
SW5kZXhKdW1wOwotICAgICAgICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpT
SW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNo
YWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAg
PSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7CiAKICAgICAgICAg
ICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9u
SW5mby5iYWRUeXBlSnVtcDsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9j
YXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAo
cGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgYmFkVHlwZUp1
bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0
aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXAp
KTsKIApAQCAtOTE2LDE0ICs5MTYsMTkgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICAgICAg
YXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlv
bkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKIAogICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbklu
Zm8uYnlWYWxJbmZvLT5zZXRVcCgKLSAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAsCi0gICAg
ICAgICAgICAgICAgYmFkVHlwZUp1bXAsCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxl
ciwKICAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheU1vZGUsCiAgICAg
ICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlQcm9maWxlLAogICAgICAgICAg
ICAgICAgIGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhUYXJnZXQsCiAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOworICAgICAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgICAgIGJ5
VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBzbG93
UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAgICAg
ICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQg
PSBzbG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlW
YWxJbmZvLT5tX25vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKKyAgICAgICAgICAgICAgICBi
eVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAgPSBiYWRUeXBlSnVt
cDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKaW5kZXggNzVjOWNiOTZiMTM2NTMyZjA4NjFmMmYwYTgwNThlZmM2YjA1NmIyNC4uOWYzMTY1
ZDU1YjhiZGZkZjEwMmJmYWY4YWQxMzhlNjgxYWFkY2Y2NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCkBAIC0yOTQsNiArMjk0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbChB
ZGRyZXNzIGZ1bmN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsKGZ1bmN0aW9uLCBP
cGVyYXRpb25QdHJUYWcpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogICAgICAgICBDYWxsIGFwcGVuZENhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAgICAgIHsKQEAgLTM5
NSwzOSArNDAwLDM5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBp
bnQtY2hlY2tlZCBhbmQgemVybyBleHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuCiAgICAg
ICAgIC8vIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLiBSZXR1cm5zIHRoZSBzbG93IGNh
c2VzLiBGYWxsLXRocm91Z2gKICAgICAgICAgLy8gY2FzZSBjb250YWlucyByZXN1bHQgaW4gcmVn
VDAsIGFuZCBpdCBpcyBub3QgeWV0IHByb2ZpbGVkLgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50
MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSkgeyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBJ
bnQzMlNoYXBlKTsgfQotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0
Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7Ci0gICAgICAg
IEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2Rl
KGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
KTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKSB7
IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5m
bywgSW50MzJTaGFwZSk7IH0KKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKKyAgICAg
ICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUg
PSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyop
OworICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlv
biosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CiAK
ICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW4gcmVnVDEsIGJhc2UgaXMgaW4gcmVnVDAuIHJlZ1Qy
IGNvbnRhaW5zIGluZGVjaW5nIHR5cGUuCiAgICAgICAgIC8vIFRoZSB2YWx1ZSB0byBzdG9yZSBp
cyBub3QgeWV0IGxvYWRlZC4gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kCiAgICAgICAgIC8v
IHplcm8tZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLiBTdHJ1Y3R1cmUgaXMgYWxyZWFk
eSBwcm9maWxlZC4KICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2xvdyBjYXNlcy4KICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBl
bWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2Vu
ZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJTaGFwZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbywgSW50MzJTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1p
dERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbywgRG91YmxlU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlz
dCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGln
dW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlW
YWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIEluZGV4aW5nVHlwZSBp
bmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQ
dXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7Cisg
ICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAg
ICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOwpAQCAtODcwLDEz
ICs4NzUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4pOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soQWRkcmVzcyk7CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNs
b3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICNl
bmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFt
ZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZp
cnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQp
OwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRX
aXRoUHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4s
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRh
ZGF0YT4KKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCk7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJh
aXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpDYWxsPgpAQCAt
ODg2LDYgKzg5NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJh
aXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNhbGxPcGVyYXRp
b24oQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykK
KyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3Bl
cmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAgICB9CisKICNpZiBPUyhX
SU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgog
ICAgICAgICBzdHJ1Y3QgaXM2NEJpdFR5cGUgewpAQCAtOTA2LDYgKzkyMywxNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgICAgIHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdz
KQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxP
cGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgLy8geDY0IFdpbmRv
d3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdl
ciB0aGFuIDY0IGJpdHMuCisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5
cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUp
CisgICAgICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1
cm5UeXBlKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAg
ICAgICB9CiAjZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgb3BlcmF0aW9u
LCBBcmdzLi4uIGFyZ3MpCkBAIC05MTMsNiArOTQxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgc2V0dXBBcmd1bWVudHM8T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7CiAgICAgICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAg
ICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBB
cmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5k
aXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
dGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYgQ1BV
KFg4Nl82NCkKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KQEAgLTkyMyw2ICs5NTgsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uLCByZXN1
bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5h
YmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4K
KyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgQWRk
cmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAg
ICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9u
VHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBBZGRy
ZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAg
ICB9CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUu
Li4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhS
ZXN1bHQoT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEFy
Z3MuLi4gYXJncykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
aW5kZXggMWI0OWQ0ODlkYWEyYjc4NmFiNzkzOTJmOWEzNGViYzY0NGNkYWIxOC4uMzc0YmEzMGM3
Zjc2NzEzNzk0NzBlNGRkOWQ0ZGE4MzY1ZGEzNjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCkBAIC0zOTgsOCArMzk4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKQEAgLTQzMiw4ICs0MzIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0MKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJhdG9yR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50
KS5yYXdCaXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG5l
eHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjAsIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAg
ICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0
b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKKwogICAgIGF1dG8gZG9uZSA9IGp1bXAoKTsKIAogICAgIG5vdE9iamVjdC5s
aW5rKHRoaXMpOwpAQCAtNDgwLDggKzQ4Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBSZWdpc3RlclNl
dCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
OwogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7CiAgICAgICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRv
bmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVH
UFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJl
Z3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhp
dGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHJlZ1QzLCBBY2Nlc3NUeXBlOjpH
ZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVu
ZChnZW4pOwpAQCAtNDk5LDggKzUwNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25l
eHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBKdW1wTGlzdCBpdGVy
YXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNj
cmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwor
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCByZWdUNCwgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2Vu
KTsKQEAgLTUyOCwxNiArNTM1LDIzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKICAg
ICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikpOwot
ICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIp
KTsKIAogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFt
ZXMtPmRvbmUuaW1wbCgpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dl
dEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwogICAgICAgICAKICAgICAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAg
ICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAK
KyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9u
ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KGp1bXAoKSk7CkBAIC01NTYsOCArNTcwLDEzIEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDCiAKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAg
ICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Ci0KKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAg
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFBy
b2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVy
UmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwg
PSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
LCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCku
cmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcAppbmRleCBlY2M0ZTVmM2ZmNmQwN2Y5OWMwNzg0ZGQ0YzEyZGViYTBlMjEwZGNmLi4xNTI1
MTRhZmRjYWM3ODJhYzljODc0ZTU1MGFmZmI5YzcyOGJlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0zOTYsMTIgKzM5NiwxNCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywKKyAg
ICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwKICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksCiAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJh
dG9yR1BSLCBwYXlsb2FkSXRlcmF0b3JHUFIpLAogICAgICAgICBuZXh0UmVncywKKyAgICAgICAg
SW52YWxpZEdQUlJlZywKICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtNTA1LDEyICs1MDcsMTQgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHBheWxvYWRWYWx1ZUdQUik7CiAgICAgICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAg
ICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgICAgIHByZXNlcnZlZFJlZ3MsCiAgICAg
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJl
Z3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAg
ZG9uZVJlZ3MsCisgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTUzMywxMiArNTM3LDE0
IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQogCiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAg
ICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxTaXRl
SW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFn
SXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgcmVzdWx0
UmVncywKKyAgICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAppbmRleCA2ZmE3MjQ0ZWYwYTA4YzlmMDQ3YTMyMjA0ZjczN2QyOTI4NzE5MDZmLi44
Nzc3MGJmODQ4YTNhZmE5ZGRiZjBiMTgyMjM3ZjEzY2EwZTJiYmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaApAQCAtNTIsMTMgKzUyLDE1IEBAIGNsYXNzIFRyYWNrZWRSZWZlcmVu
Y2VzOwogY2xhc3MgVk07CiAKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3QgewotICAgIE5v
bmUsCi0gICAgSG9zdENhbGxUaHVuaywKLSAgICBJbnRlcnByZXRlclRodW5rLAotICAgIEJhc2Vs
aW5lSklULAotICAgIERGR0pJVCwKLSAgICBGVExKSVQKKyAgICBOb25lID0gMGIwMDAsCisgICAg
SG9zdENhbGxUaHVuayA9IDBiMDAxLAorICAgIEludGVycHJldGVyVGh1bmsgPSAwYjAxMCwKKyAg
ICBCYXNlbGluZUpJVCA9IDBiMDExLAorICAgIERGR0pJVCA9IDBiMTAwLAorICAgIEZUTEpJVCA9
IDBiMTAxLAogfTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd2lkdGhPZkpJVFR5cGUgPSAz
Oworc3RhdGljX2Fzc2VydChXVEY6OmdldE1TQlNldENvbnN0ZXhwcihzdGF0aWNfY2FzdDxzdGQ6
OnVuZGVybHlpbmdfdHlwZV90PEpJVFR5cGU+PihKSVRUeXBlOjpGVExKSVQpKSArIDEgPT0gd2lk
dGhPZkpJVFR5cGUpOwogCiBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEpJVENvZGU+IHsKIHB1YmxpYzoKQEAgLTE1Niw2ICsxNTgsMTUgQEAgY2xhc3MgSklUQ29k
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7CiAgICAgICAgIHJldHVy
biBqaXRUeXBlID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBKSVRU
eXBlOjpCYXNlbGluZUpJVDsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCB1c2VTaGFyZWRJQyhK
SVRUeXBlIGppdFR5cGUpCisgICAgeworICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJlZElD
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZShqaXRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKTsKKyAgICB9CisKICAg
ICB2aXJ0dWFsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgCiAgICAgZW51bSBjbGFzcyBTaGFyZUF0dHJpYnV0ZSA6IHVp
bnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcAppbmRleCBmNTJjM2M3NjIxNWFhMzI2ZGRlOWY4OTg1NjI5OGMzZGU2
NDYyMmNlLi4yZmU4YjliOGUzMWM4YmRiYTM3MTQyYTZmNjA4Nzg0YmRiNDNmZGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcApAQCAtNDMsOSArNDMsMTAgQEAgc3RhdGljIFN0cnVjdHVyZVN0dWJJbmZvKiBnYXJiYWdl
U3R1YkluZm8oKQogfQogCiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAorICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAogICAgIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQogICAgIDogbV9jb2RlQmxvY2soY29kZUJs
b2NrKQorICAgICwgbV9qaXRUeXBlKGppdFR5cGUpCiB7CiAgICAgbV9zdHViSW5mbyA9IG1fY29k
ZUJsb2NrID8gbV9jb2RlQmxvY2stPmFkZFN0dWJJbmZvKGFjY2Vzc1R5cGUsIGNvZGVPcmlnaW4p
IDogZ2FyYmFnZVN0dWJJbmZvKCk7CiAgICAgbV9zdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9IGNh
bGxTaXRlOwpAQCAtNjAsMjAgKzYxLDIyIEBAIHZvaWQgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6
OmZpbmFsaXplKAogCiAgICAgbV9zdHViSW5mby0+ZG9uZUxvY2F0aW9uID0gZmFzdFBhdGgubG9j
YXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX2RvbmUpOwogCi0gICAgbV9zdHViSW5mby0+c2xv
d1BhdGhDYWxsTG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KG1fc2xvd1BhdGhDYWxsKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fc2xvd1BhdGhDYWxsTG9jYXRpb24gPSBzbG93UGF0
aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsKICAgICBtX3N0
dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pOwogfQogCiBKSVRCeUlkR2VuZXJhdG9y
OjpKSVRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAor
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNj
ZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV92YWx1
ZSh2YWx1ZSkKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7
CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+cmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5t
X3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBt
X3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52
YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwpAQCAtODMsMTMgKzg2LDE1IEBAIEpJVEJ5SWRH
ZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Zmlu
YWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAg
IEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpm
aW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9m
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxK
SVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJ
bmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1Np
emUpCiB7CisgICAgLy8gV2UgZ2VuZXJhdGUgdGhlIHNhbWUgY29kZSByZWdhcmRsZXNzIG9mIHdo
ZXRoZXIgU2hhcmVkSUMgaXMgZW5hYmxlZCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgdG8gdXNlIElu
bGluZUFjY2VzcworICAgIC8vIGZvciB0aGUgcGVyZm9ybWFuY2UgcmVhc29uLgogICAgIG1fc3Rh
cnQgPSBqaXQubGFiZWwoKTsKICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVy
LmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQuanVtcCgpOwpA
QCAtMTAxLDkgKzEwNiw5IEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29t
bW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1NpCiB9CiAKIEpJVEdldEJ5
SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFs
dWUsIHN0dWJJbmZvR1BSKQogICAgICwgbV9pc0xlbmd0aEFjY2Vzcyhwcm9wZXJ0eU5hbWUudWlk
KCkgPT0gY29kZUJsb2NrLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBsKCkpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BSKCkpOwpA
QCAtMTE1LDkgKzEyMCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpCi0g
ICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUikK
KyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNl
LCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodGhpc1JlZ3MucGF5
bG9hZEdQUigpICE9IHRoaXNSZWdzLnRhZ0dQUigpKTsKIApAQCAtMTMzLDEwICsxMzgsMTAgQEAg
dm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKIH0KIAogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVy
YXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
Q2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBl
IGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgR1BSUmVnIHNjcmF0Y2gsIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtp
bmQpCi0gICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAg
ICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1
YkluZm9HUFIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBtX3B1
dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3MSwxNCArMTc2LDE1IEBAIFZfSklUT3BlcmF0aW9uX0dT
c2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK0pJVERlbEJ5
VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVz
ZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0g
ZmFsc2U7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BS
KCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBt
X3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJ
bmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMTkxLDI2ICsxOTcsMzAgQEAg
SklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0Lmxh
YmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJ
bmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhK
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0K
IAotdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYg
ZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQog
ewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6
ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25P
ZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZh
c3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRh
Zz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQor
ICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0
TG9jYXRpb247CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3Io
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVh
YmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlJZEdl
bmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlw
ZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0
ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CiAg
ICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAg
IG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0dWJJbmZvLT52YWx1
ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQ
UiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2Uu
dGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BS
ID0gYmFzZS50YWdHUFIoKTsKQEAgLTIyMywyMiArMjMzLDI1IEBAIEpJVERlbEJ5SWRHZW5lcmF0
b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4g
Y29kZU9yCiB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93
UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAg
IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJs
ZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZm
ZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+
bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCiBKSVRJ
bkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBK
SVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIC8vIEZJWE1FOiBX
ZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4KICAg
ICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI1MSwxNSArMjY0LDE1IEBAIHZvaWQg
SklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQp
CiB9CiAKIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0g
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4LAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlw
ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyLCBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QpCi0gICAgOiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQorICAgIDogSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1Yklu
Zm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3RvdHlwZTsKKyAgICBtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0
dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0yNzksMjEgKzI5MiwyNCBA
QCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAogCiB2b2lk
IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fc3RhcnQg
PSBqaXQubGFiZWwoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkg
eworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5m
byksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxz
ZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9k
b25lID0gaml0LmxhYmVsKCk7CiB9CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6Zmlu
YWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAg
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNs
b3dQYXRoLAotICAgICAgICBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihtX2p1bXApKTsKLSAgICAKLSAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQ
YXRoLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIEJhc2U6OmZp
bmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2pp
dFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93
UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZh
bEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKK0pJVEdl
dEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxv
Y2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRS
ZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKIHsK
QEAgLTMwMiw2ICszMTgsNyBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5l
cmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogICAgIG1fc3R1Yklu
Zm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnBy
b3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
R1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
ID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5i
YXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9
IHJlc3VsdC50YWdHUFIoKTsKQEAgLTMxMiwyMCArMzI5LDIzIEBAIEpJVEdldEJ5VmFsR2VuZXJh
dG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlCiB2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xv
d1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAg
ICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQ
dHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFi
bGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklUR2V0QnlW
YWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVm
ZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9z
dGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2Nh
dGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9
IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCkKLSAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVn
aXN0ZXJzKQorSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBC
YXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNz
VHlwZSwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCB8fCBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OlNldFBy
aXZhdGVCcmFuZCk7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFs
c2U7CkBAIC0zMzMsNiArMzUzLDcgQEAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmwKICAgICBtX3N0
dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVn
cy5icmFuZEdQUiA9IGJyYW5kLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJ
bmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQ
UiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+di5icmFuZFRhZ0dQUiA9IGJyYW5k
LnRhZ0dQUigpOwpAQCAtMzQzLDE2ICszNjQsMTkgQEAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmwK
IHZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAg
ICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRj
aGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXpl
KAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAg
bV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9u
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBkNmNhNmUxNmEzZjMyYzY0MGY5
NmNiMjU1MTk1NTQ4YjBmMmViNjUxLi5iNjkwODc4NTc2NDM4ZDk3ZDk5NDMwYWM2M2Q5MTdiYzJl
YzkzZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oCkBAIC00MSwxMiArNDEsMTIgQEAgY2xhc3MgQ29kZUJsb2NrOwogY2xh
c3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsK
K2VudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQot
ICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycyk7CisgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoQ29kZUJsb2NrKiwgSklUVHlw
ZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMpOwogICAgIAogcHVibGljOgogICAgIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc3R1YkluZm87IH0KQEAgLTY1LDYgKzY1LDcg
QEAgY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIAogcHJvdGVjdGVkOgogICAg
IENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgSklUVHlwZSBtX2ppdFR5cGU7CiAgICAgU3Ry
dWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bV9kb25lOwpAQCAtNzcsOCArNzgsOCBAQCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRCeUlkR2VuZXJhdG9yKCkgeyB9CiAK
ICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAg
ICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NU
eXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKIHB1Ymxp
YzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdApAQCAtMTAx
LDEzICsxMDIsMTMgQEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbV9zbG93UGF0aEp1bXA7
CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgeworY2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2Vu
ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFj
Y2Vzc1R5cGUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAKQEAgLTExNSwyNiArMTE2LDI2IEBAIGNsYXNzIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgYm9vbCBt
X2lzTGVuZ3RoQWNjZXNzOwogfTsKIAotY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
IDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHRoaXNSZWdzKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUUHV0QnlJZEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0
KCkpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7Cisg
ICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyBiYXNlLAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQg
Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDE0ICsxNDYs
MTQgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9y
IHsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKLWNsYXNzIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1
c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklURGVs
QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAotICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBD
b2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAo
KSBjb25zdAogICAgIHsKQEAgLTE3MCwxNCArMTcxLDE0IEBAIGNsYXNzIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVERlbEJ5
SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklU
RGVsQnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAg
IEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAg
ICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BS
LCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdAogICAgIHsKQEAgLTE5NSw0MiArMTk2LDUwIEBAIGNsYXNzIEpJVERlbEJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklUSW5C
eUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUSW5CeUlk
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAg
IEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKAotICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRU
eXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CiAKLWNsYXNzIEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklUSW5z
dGFuY2VPZkdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CiBwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogICAg
IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoKSB7IH0KICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKLSAgICAgICAg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBz
Y3JhdGNoMiwKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQs
CisgICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwKICAgICAgICAgYm9vbCBwcm90
b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2UpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1Bh
dGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1
bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAg
fQorCiAgICAgdm9pZCBmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExp
bmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CiAKIHByaXZhdGU6Ci0gICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9qdW1wOworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBt
X3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1w
OwogfTsKIAotY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigpIHsgfQogCiAg
ICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBK
U1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTI1MSwxNCArMjYwLDE0
IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVt
cDsKIH07CiAKLWNsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6IHB1YmxpYyBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5n
IEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKTsKKyAgICAgICAgQ29kZUJsb2NrKiwg
SklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCmluZGV4IGU3OWNkMzZlZjU3ZDdiZGNlY2UxNzY4ZDA1ODhhZmVlZDg4ODUw
MTUuLjI4YTY0MzM3ZTJmMDhmNWYyMGFkYTczN2JiNzZiY2I0NzM2MjI4ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0zMywxNyArMzMsMTcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6
ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0FMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJheU1v
ZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2RlIGFy
cmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7
CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBy
ZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAg
ICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFs
SW5mbyk7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9h
ZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdERvdWJs
ZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2Ug
SklUQ29udGlndW91czoKLSAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2Fk
KGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVEFy
cmF5U3RvcmFnZToKLSAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9h
ZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI4LDYgKzEyOCwxMyBAQCBBTFdBWVNfSU5MSU5F
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhj
b25zdCBGdW5jdAogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCit7CisgICAg
dXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgZXhj
ZXB0aW9uQ2hlY2soKTsKK30KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiBBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGZ1bmN0aW9uKQogewpAQCAtMTU3LDYgKzE2NCwxNiBAQCBBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjph
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzIGZ1bmN0
aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAgZW1pdFN0b3JlKGRzdCwg
cmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYKK30KKwogdGVtcGxhdGU8
dHlwZW5hbWUgTWV0YWRhdGE+CiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmls
ZShNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
ZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCiB7CkBAIC0xNzEsNiArMTg4LDE5IEBAIEFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIE1ldGFkYXRhPgorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRh
dGEsIEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CisgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgSlNWYWx1ZVJlZ3MocmV0dXJuVmFsdWVH
UFIyLCByZXR1cm5WYWx1ZUdQUikpOworICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BS
MiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNL
bm93bkNlbGwocmVnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmlu
ZGV4IGJkNTVhM2QwNTE2ZDQ2YjY3YWU1OTdiNmMzYTRmNTg3YjVmZGQ3MzAuLjQ1YTA3NTFjOTZj
NmEyYWNlOGI2NGZmMDRmMzQ5MDNjZGQxZjc2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcApAQCAtMTY0LDEzICsxNjQsMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAgSklUSW5zdGFu
Y2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAg
ICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAg
cmVnVDUsCiAgICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5zdGFuY2VPZnMuYXBw
ZW5kKGdlbik7CiAgICAgCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwpAQCAtMTg2
LDcgKzE5MSwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3ImIGdlbiA9IG1faW5zdGFuY2VPZnNbbV9pbnN0YW5jZU9mSW5kZXgrK107CiAgICAg
CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJl
Z1QyLCByZWdUMSk7CisKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUp
PihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIHJlZ1QxKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVnVDEpOwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTE3MTksNyArMTczMSw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8q
IGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVt
cExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9u
LCBhcnJheU1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2Fk
Rm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxs
cHRyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRy
dWUpKSksIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTE3MzQsOCArMTc0
NiwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0
Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2lu
ZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAg
IAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2Fs
bChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAg
ICAgYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkp
OworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4
ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2Rl
KCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNh
bGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJl
c3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgfQogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xNzY5LDExICsxNzg2LDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5
cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMg
PSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUp
OworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAKICAgICBtb3ZlKFRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKIAot
ICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAg
ICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgp
OwpAQCAtMTc5OSw3ICsxODE3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfZW51bWVy
YWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50CiAgICAgCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsK
KworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdDsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGJ5VmFsSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0
aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQpPihBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAs
IHJlZ1QxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwg
YnlWYWxJbmZvKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0
aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0
aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOGRi
MzU5ZWJkOGNkMDU2Njk3M2I4NjNjNDg2NzQxYTdmYWUyMjQ1ZS4uNGQ3NDEyNmJlMWUzZGU0MzBk
M2E2ZDljYjdmZGRiNmRjODZmN2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTYyLDEzICsxNjIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgSklUSW5zdGFu
Y2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAg
ICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAg
SW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CiAgICAgCiAgICAgZW1pdFN0
b3JlQm9vbChkc3QsIHJlZ1QwKTsKQEAgLTExODMsNyArMTE4NSw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJu
QWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBl
cyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0g
ZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5
cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTE5
OCw3ICsxMjAwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5
KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2RlQmxv
Y2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIkJhc2VsaW5l
IGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgp
KTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRU
eXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkp
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVy
bkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFn
PihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOwogfQogCkBAIC0xMjM0LDcgKzEyMzYsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBv
dGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xv
d0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBi
YWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShj
dXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjFhZjM2NTMw
OWQyNzkzMzcxZGU2ZWI0MDBiNDQ2OGFhODM3MGIyNS4uMDI5MmI5YjhjNGVjZTI3YTgxNjc1MDBh
MzVkNDEyNTY1NDlkNjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0xMDAyLDcgKzEwMDIsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEK
ICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAg
IC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tT
bG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1
cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJp
Yyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBi
eVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVy
bkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KTsKICAgICB9CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxP
YmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkp
OwogfQpAQCAtMTA5NCw3ICsxMDk3LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAg
aWYgKHJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBE
b24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1Bh
dGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVy
aWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAg
YnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVy
aWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBk
aXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlW
YWxJbmZvLCBlY21hTW9kZSkpOwpAQCAtMTI3OCw3ICsxMjg0LDEwIEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqCiAgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1
bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAg
ICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENh
bGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBv
cGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5f
QUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CiAgICAgfQogCiAgICAg
c2NvcGUucmVsZWFzZSgpOwpAQCAtMjU2Nyw3ICsyNTc2LDExIEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNvZGVkSlNWYWx1
ZSwgKEpTCiAgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMAogICAg
ICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgewogICAg
ICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBjdGlQ
YXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJF
U1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKKyAgICAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAg
IGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgYnlWYWxJbmZv
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY0NDY3ZTlhMjVl
MTQ3N2UxZWMwNjM1ZDQwOTc1NGQ4ZTc1MzkyZWYuLmQxNzJlZGYxMTdmN2E4MzFhZWM3M2U5ZTRk
ZDBmNGE2MzM0NWZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCkBAIC02OSwxMiArNjksMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3Rh
bnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJ
bnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRT
bG93Q2FzZSgpOwogICAgICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgICAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVz
dWx0UmVncyk7CkBAIC05Myw4ICs5Niw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAg
ICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgICAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICAgICAgKyttX2dl
dEJ5VmFsSW5kZXg7CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5
VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMTgsNyArMTIx
LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAg
IGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGlt
aXplOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQ
Uik7CkBAIC0xMzgsNyArMTQ1LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgaml0LnN0
b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTU3LDkgKzE2NSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxs
R2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAK
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkg
dG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0
aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3Zh
bF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEwICsxOTEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5
R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAg
IGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0
UmVncyk7CkBAIC0yMDEsOCArMjEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIAogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2Vu
ID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJbmRleDsK
KyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQpAQCAtMjI2LDcgKzIzNywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZv
R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOworICAgIGVsc2UKKyAgICAg
ICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI0NSw3ICsyNjAsOCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklU
IGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0yNjMsOSAr
Mjc5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBh
IHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAg
Ly8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQor
ICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC0yODUsMTAgKzMw
MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlR1BSLCBiYXNlKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5k
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJh
bmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgcmVnVDIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UK
KyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVu
ZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUgZW5k
IG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgpAQCAt
MzAyLDggKzMyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiB7CiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2Vu
ID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAg
ICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNj
ZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zMjgsOSArMzQ3LDE0IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFp
dHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRU
eXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
blNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogI2VuZGlmCisKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwogfQogCkBAIC0zNDYsMTAgKzM3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAogICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCkBAIC0zNTcsOCArMzg0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnQKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vz
c2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJp
dmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKQEAgLTM4Myw3ICs0MDksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25D
aGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRz
PGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBl
cz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplOworICAg
IGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJh
bmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNDE1LDggKzQ0NSwxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKICAgICBQYXRj
aGFibGVKdW1wIG5vdEluZGV4OwogICAgIGlmICghcHJvcGVydHlOYW1lSXNJbnRlZ2VyQ29uc3Rh
bnQpIHsKLSAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJlZ1Qx
KTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBhdXRvIGlz
SW50MzIgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1
dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJl
Z1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgfQogICAg
ICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgICAgICB6ZXJvRXh0ZW5k
MzJUb1dvcmQocmVnVDEsIHJlZ1QxKTsKICAgICB9CkBAIC00MzIsMjMgKzQ2OCwyNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmlsZSk7
CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9
IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7
CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQ1JBU0goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dDYXNl
KGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShz
bG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtNDU3LDcgKzQ5
NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQorSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nU2hhcGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKQEAgLTQ2NSw3ICs1MDIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKICAgICAKICAg
ICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYg
KGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIo
RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgICAgICAgICAg
ZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0
aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAg
IH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworCiAgICAgCiAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAg
SnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3Mo
cmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtNTE1LDcgKzU2
MSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFs
SW5mbyogYnlWYWxJbmZvKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1f
dmFsdWU7CkBAIC01MjMsNyArNTY5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAg
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBl
ID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUp
KTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFk
VHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0Nv
cnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5
U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkp
OworCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0
KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWws
IHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgp
KSkpOwogCkBAIC01NjgsOCArNjIzLDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQ
dXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwogCiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUo
Ynl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9w
ZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEp
LCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJl
IHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTog
VXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8g
cmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTU4MCw3ICs2MzUsMTMgQEAgSklUUHV0QnlJZEdlbmVyYXRv
ciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRL
aW5kLAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIGdlbi5zbG93UGF0
aEp1bXAoKS5saW5rKHRoaXMpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRz
KCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
Z2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFy
Z0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1
bXAoKSk7CiAKQEAgLTYzOCw4ICs2OTksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYXV0byog
b3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDog
b3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9u
ID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKGlz
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5
VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTY1Nyw3ICs3MjEsOCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGpp
dCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC02NzUsOSArNzQw
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIGVjbWFNb2RlR1BSKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVy
IG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9u
IGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0Lgot
ICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgQnlW
YWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAg
ZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CkBAIC02OTYsOCArNzYyLDEz
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZSk7CiAKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxl
SnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICBQYXRjaGFibGVKdW1w
IGZhc3RQYXRoSm1wOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1f
bm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIGVsc2Ugewor
ICAgICAgICBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICAgICAgYWRkU2xvd0Nh
c2UoZmFzdFBhdGhKbXApOworICAgIH0KICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
ICAgICAKQEAgLTc0Myw3ICs4MTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAg
Q2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTc2MSw3
ICs4MzYsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7CkBAIC03NzksOSArODU1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1p
emUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZh
bEluZm9HUFIsIHB1dEtpbmRHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0
bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0
byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1w
KEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC04NDYsMTEgKzkyMywxNCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOwogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCByZWdUMik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsK
ICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKQEAgLTg5OCwxNSArOTc4LDE4IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgp
KSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9
PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVh
bihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBA
IC05MTgsNyArMTAwMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKQEAgLTkzNSw5ICsxMDE5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5
R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAot
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0
byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRo
ZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRk
cmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRf
cHJlcGFyZUNhbGwiKTsKQEAgLTk1NiwxMCArMTA0MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOwogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRk
U2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xl
YW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC0xMDA4LDE1ICsxMDk2LDE4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9l
Y21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRpY19hc3Nl
cnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxs
KTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQpAQCAtMTAyOCw3ICsxMTE5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwog
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTA0NSw5ICsxMTM3LDEwIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMg
YSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAg
IC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UK
KyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4ICsxMTYxLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdz
LCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVz
dWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTEwLDcgKzEyMDMsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlw
ZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5
SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJl
c3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTExMzMsOCArMTIzMCw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDAp
OwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNz
VHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJl
Z3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTE3Niw3ICsxMjczLDExIEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlk
RGlyZWN0T3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXpl
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIwNyw4ICsxMzA4LDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1Qw
KTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBy
ZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMzNCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAg
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0
aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjc1LDcgKzEzNzYsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0
YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTI5NCw3ICsxMzk5LDggQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0p
OwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVu
dEdQUjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTMxMSw5ICsxNDE3LDEw
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dl
dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRp
cmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5y
ZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTM1NCw3ICsxNDYxLDExIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
Z2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
c09wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7
CkBAIC0xMzczLDcgKzE0ODQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzkyLDkgKzE1MDQsMTAgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19w
cmVwYXJlQ2EKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZFdpdGhUaGlzT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCB0aGlzR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJl
Y3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5n
IHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1
bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRf
YnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsIik7CkBAIC0xNDE4LDExICsxNTMxLDEwIEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcp
OwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2Nv
ZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9k
ZShieXRlY29kZSksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAgICAgICAgZGlyZWN0ID8g
UHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKLSAgICAKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTQ2NSw3ICsxNTc3LDExIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
Z2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CiAgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIApAQCAtMTQ4MSw3ICsxNTk3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAg
ICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTUwMCw5ICsxNjE3LDEwIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
blB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZh
bHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2Fs
bCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0
dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0
LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBq
aXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTE1MjEsOCArMTYzOSw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAg
ICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTE1NjQsNyArMTY4MiwxMSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNh
bGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVn
LCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNzU0LDggKzI4NzYsOCBAQCBKSVRQdXRCeUlkR2VuZXJh
dG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1
dEtpbmQsCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QzLCByZWdUMik7CiAKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVn
VDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BSUmVnLCByZWdUMSwg
ZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yNzY1LDcgKzI4ODcs
MTMgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChP
cCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIC8vIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
b25seSBwcmVzZXJ2ZSB0aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2UgaGF2ZSB0
byByZWxvYWQgdGhlIHRhZy4KICAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7CiAKLSAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkp
OworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2Vu
LnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25B
cmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdz
KHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5y
YXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHVi
SW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApA
QCAtMjgxNywyOSArMjk0NSwyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAgc3dp
dGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRE
b3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAg
ICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBlRm9y
SklUQXJyYXlNb2RlKGFycmF5TW9kZSk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAgICAg
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50
NjRBcnJheSBpbiBJQwogICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5IC8g
QmlnVWludDY0QXJyYXkgbmV2ZXIgY29tZXMgaGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKICAgICAgICAgICAgIEFTU0VS
VChpc0Zsb2F0KHR5cGUpKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51
bGxwdHIsIHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4NjYs
OCArMjk5NCwxNCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgICAgICJC
YXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
dG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFs
dWUoKSk7CiAgICAgfQotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
PmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZh
bEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBUaGlz
IGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVuaXQg
KEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0ZWQg
c3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCkBAIC0yOTA2LDggKzMwNDAsMTMgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFJldHVybkEKICAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0
aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAi
LCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxv
Y2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5m
by0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5B
ZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4o
cmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1
dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRh
cmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9ub3RJbmRl
eEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7
CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTI5NDQsMTUgKzMwODMsMjAg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92YWwl
cyB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2lu
dCAlcCIsIChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCkgPyAiX2RpcmVjdCIgOiAiIiwgcHJv
cGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5k
YXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0
dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1
bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVz
c1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVy
bkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRp
b24gPSBwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
R2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCwg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJv
dXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hD
YWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0K
IH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNs
YXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3
byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5m
byosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogdGVt
cGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRC
eVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVh
YmxlSWRlbnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJl
Z2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk2OCw3ICszMTEyLDE2IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hh
cGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0
VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBl
KSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2Jh
ZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXND
b3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihE
b3VibGVTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBz
Y3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJv
cGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSkpOwogICAgIGxvYWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0Vp
Z2h0KSwgZnBSZWdUMCk7CkBAIC0yOTc3LDcgKzMxMzAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
KQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29u
dGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJ
bmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGln
dW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI5OTUsNyArMzE0
OCwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
OwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywg
VHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAg
ICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywg
VHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1
dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1
c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBK
U09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5k
ZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCByZXN1bHQpOwpAQCAtMzAwNCw3ICsz
MTY2LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICByZXR1cm4gc2xvd0Nhc2VzOwog
fQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRB
cnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdp
c3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTMwMjMsNyArMzE4NSwxNiBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMigtQXJyYXlTdG9yYWdlU2hhcGUpLCBpbmRleGluZywgc2NyYXRjaCk7Ci0gICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1
dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5
VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoQmVs
b3dPckVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBl
IC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRy
ZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNo
LCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hh
cGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFi
b3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJy
YXlTdG9yYWdlU2hhcGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQXJyYXlTdG9yYWdl
Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTMwMzUsNyArMzIwNiw3IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0
byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQ
cm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzA2MCw3ICsz
MjMxLDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUo
dHlwZSkpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0Nv
cnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5
cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0
ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5l
UHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWws
IGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkp
OworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOworCiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gz
MihCZWxvdywgcHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91
dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CkBAIC0zMTExLDcgKzMyOTIsNyBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVt
cExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsK
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAg
ICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0z
MTM2LDcgKzMzMTcsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFy
cmF5VHlwZSh0eXBlKSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBh
dXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVk
SW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1w
KEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihO
b3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBl
KHR5cGUpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9
IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQ
cm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMyMmM3
NzA0Mjg5YWJiMDgyZjlkZGYyMGQ4YzJmZjY2NWRmZDU2ZTIuLjBlM2JlNmFmODQyY2U5ZDAyNjIx
MzVkZWQ1NmM5YjBhZWJkZTBiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQg
SklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXls
b2FkR1BSKCkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVn
cy50YWdHUFIoKSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwKLSAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgYmFzZVJl
Z3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3BlcnR5UmVncy50
YWdHUFIoKSk7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywg
cmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0y
NTcsOCArMjU3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5
VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BS
UmVnKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAgICAg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC0zMDUsOCArMzA1LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1
bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MsIElu
dmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4p
OwpAQCAtMzkzLDggKzM5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJh
bmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFz
ZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9w
cml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMyw4ICs0MzMsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJh
c2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJh
bmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFz
ZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MsIElu
dmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMu
YXBwZW5kKGdlbik7CkBAIC00ODYsMTYgKzQ4NiwxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUQXJy
YXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmlsZSk7CiAgICAgc3dpdGNoIChtb2Rl
KSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZh
bChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRp
Z3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRB
cnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZv
KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKQEAgLTUx
MSw3ICs1MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLUpJ
VDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCitK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGlu
Z1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKQEAgLTUyMCw2ICs1MjAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVy
aWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogCiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbEluZm8p
OwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKQEAgLTU3Miw3ICs1NzMs
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+
Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2Rl
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0
b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7CkBAIC01ODEsNiArNTgyLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIAogICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKICAgICAKKyAgICBVTlVTRURfUEFSQU0oYnlWYWxJbmZvKTsKICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKQEAgLTY2MCw4ICs2NjIsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCBB
Y2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtNzAxLDggKzcwMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJl
Y3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03NDgs
OCArNzUwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNW
YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVn
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtNzkxLDggKzc5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAg
IEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSwg
SW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFw
cGVuZChnZW4pOwpAQCAtODM1LDkgKzgzNyw5IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAorICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BS
UmVnLAogICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3Qg
PyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTg4Miw4ICs4ODQsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBKSVRJbkJ5
SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1faW5C
eUlkcy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRp
bmUuaAppbmRleCA4ODE0NjQwZTZhY2NlYWMxYjliMDY4YTQwYzg5NDI4MzQ4NmNkZmFiLi41YTU3
MjhiYmU4NzNmZjQ2OTJiZTQ3ODY4YmI1YzcwMjhiYmU0Yjk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCkBAIC0zNSw2ICszNSwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogY2xhc3MgVk07CiAKKyNpZiBVU0UoSlNW
QUxVRTY0KQordXNpbmcgU3RydWN0dXJlSUQgPSB1aW50MzJfdDsKKyNlbHNlCit1c2luZyBTdHJ1
Y3R1cmVJRCA9IFN0cnVjdHVyZSo7CisjZW5kaWYKKworY2xhc3MgQWNjZXNzQ2FzZTsKKwogLy8g
VGhpcyBpcyBhIGJhc2UtY2xhc3MgZm9yIEpJVCBzdHViIHJvdXRpbmVzLCBhbmQgYWxzbyB0aGUg
Y2xhc3MgeW91IHdhbnQKIC8vIHRvIGluc3RhbnRpYXRlIGRpcmVjdGx5IGlmIHlvdSBoYXZlIGEg
cm91dGluZSB0aGF0IGRvZXMgbm90IG5lZWQgYW55CiAvLyBoZWxwIGZyb20gdGhlIEdDLiBJZiBp
biBkb3VidCwgdXNlIG9uZSBvZiB0aGUgb3RoZXIgc3R1YiByb3V0aW5lcy4gQnV0CkBAIC05OCw2
ICsxMDYsOSBAQCBjbGFzcyBKSVRTdHViUm91dGluZSB7CiAgICAgLy8gZGVzdHJveWVkLgogICAg
IHZpcnR1YWwgYm9vbCB2aXNpdFdlYWsoVk0mKTsKIAorICAgIHZpcnR1YWwgY29uc3QgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiogd2Vha1JlZmVy
ZW5jZXMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDFm
NzYwNjg2MjczZGRhODFjYmI2ZDAxY2QyMWRkMDk4OWNjNmUyYjguLjQ0Y2U2ZjNiYjQ1NDYzMDQ5
NjZjNWFkNDdlYmI0YzVmMDM4OTgzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1
ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1
bGxDb2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2OCw3IEBAIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpT
Q2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsCiAgICAgQ2FsbExpbmtJbmZvJiBp
bmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mIGNhc2VzLAogICAgIFVuaXF1
ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCi0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoY29kZVJlZiwgdm0pCisgICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0s
IHsgfSwgeyB9KQogICAgICwgbV92YXJpYW50cyhjYXNlcy5zaXplKCkpCiAgICAgLCBtX2Zhc3RD
b3VudHMoV1RGTW92ZShmYXN0Q291bnRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCmluZGV4IDM1OTNjY2U4ODYwODgwMTgzNDZhODA4ZTVmODY0Nzg3MWE0NDFiMjkuLjQx
ZWZhNmZlOGY2YjQ0YmY1N2Y2ODg3ZGVhNTY5OTIxMTQzYWNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzEsOCArNzEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXN0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJn
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRh
Zz4gY2FsbCkKK3N0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0Nh
bGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICByZXR1cm4g
c3R1YkluZm8ubV9zbG93T3BlcmF0aW9uLnJldGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKTsKKyAg
ICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwgPSBzdHViSW5mby5tX3Ns
b3dQYXRoQ2FsbExvY2F0aW9uOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIGlmIChjb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpGVExKSVQpIHsKICAgICAgICAgRnVuY3Rpb25QdHI8
SklUVGh1bmtQdHJUYWc+IHRhcmdldCA9IE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldDxK
SVRUaHVua1B0clRhZz4oY2FsbCk7CkBAIC0xMDUsNiArMTA4LDE1IEBAIHZvaWQgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpT
SW50ZXJuYWxQCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwsIG5ld0NhbGxl
ZUZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKSk7CiB9CiAKK3N0YXRpYyB2b2lk
IHJlcGF0Y2hTbG93UGF0aENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbywgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5j
dGlvbikKK3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIHN0
dWJJbmZvLm1fc2xvd09wZXJhdGlvbiA9IG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJh
dGlvblB0clRhZz4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5tX3Nsb3dQYXRoQ2FsbExvY2F0aW9uLCBu
ZXdDYWxsZWVGdW5jdGlvbik7Cit9CisKIGVudW0gSW5saW5lQ2FjaGVBY3Rpb24gewogICAgIEdp
dmVVcE9uQ2FjaGUsCiAgICAgUmV0cnlDYWNoZUxhdGVyLApAQCAtMjA5LDcgKzIyMSw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKTsKICAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBraW5kID09IEdldEJ5
S2luZDo6UHJpdmF0ZU5hbWUgfHwga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDsK
IAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgICAgIGlmIChpc0pTQXJyYXko
YmFzZUNlbGwpKSB7CkBAIC0yMTksNyArMjMxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgog
CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFj
Y2Vzczo6Z2VuZXJhdGVBcnJheUxlbmd0aChzdHViSW5mbywganNDYXN0PEpTQXJyYXkqPihiYXNl
Q2VsbCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dl
dEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1
bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRBcnJh
eUxlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2Fj
aGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjI3LDEwICsyMzksMTEgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nh
c2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0aCwgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmluZyhiYXNlQ2VsbCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpV
bnNldCAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKSkg
eworICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6
OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVT
dHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJh
dGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgoc3R1Yklu
Zm8pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5
RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0
aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRTdHJpbmdM
ZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hl
TGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI4MiwxMiArMjk1LDExIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAgICAmJiAhc2xvdC53YXRjaHBvaW50U2V0
KCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KCkKICAgICAgICAgICAgICAgICAmJiAhbG9hZFRhcmdldEZyb21Qcm94eSkgewotCiAg
ICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpn
ZW5lcmF0ZVNlbGZQcm9wZXJ0eUFjY2VzcyhzdHViSW5mbywgc3RydWN0dXJlLCBzbG90LmNhY2hl
ZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewog
ICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5U2VsZlBhdGNoLCBzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBz
bG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICBzdHViSW5m
by5pbml0R2V0QnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
dHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC00MjUsNyArNDM3LDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJl
cGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXI6
OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNl
VmFsdWUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1
YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29k
ZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vz
cyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzksNyArNDUx
LDcgQEAgdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmEKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlR2V0QnkoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5m
bywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
R2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKIH0KIAogCkBA
IC01MjksNyArNTQxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlH
ZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKICAgICAgICAgICAgIExP
R19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9P
ck51bGwodm0pLCBJZGVudGlmaWVyKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDAsNyArNTUyLDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2QKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRl
eCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIGlmICh0cnlDYWNoZUFycmF5
R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2UsIGluZGV4LCBzdHViSW5mbykg
PT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5VmFsR2Vu
ZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsKIH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVH
ZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2lu
ZCBwdXRLaW5kKSAtPiBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkKQEAg
LTYzNiw3ICs2NDgsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlE
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICBpZiAoaXNQ
cm94eSAmJiAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0
S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpKQogICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAg
ICAgIGlmIChzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgp
KSB7CiAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpFeGlz
dGluZ1Byb3BlcnR5KSB7CkBAIC02NTgsNyArNjcwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5l
QWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eVJlcGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVjdHVy
ZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0
ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OlB1dEJ5SWRTZWxmUGF0Y2gsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90
LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2lu
ZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNl
KGxvY2tlciwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxh
dGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC04MDEsNyArODEzLDcgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgx
NSw3ICs4MjcsNyBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZVB1dEJ5
SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1
dEtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQog
CiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90
JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
IERlbEJ5S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCkBAIC04NDYsNyArODU4LDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkpCiAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2Fz
ZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CiAgICAgICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtODc0LDcg
Kzg4Niw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQuZ2Vu
ZXJhdGVkU29tZUNvZGUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7CiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1w
LCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihy
ZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC04OTEsOSArOTAzLDkgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAK
ICAgICBpZiAodHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwg
YmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQsIGVj
bWFNb2RlKSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVs
QnlSZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2Jq
ZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkp
OwogICAgICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5l
cmljKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CiAgICAgfQogfQogCkBA
IC05MzcsNyArOTQ5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlE
KAogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAg
ICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHMo
dm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsK
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYobG9ja2VyLCBjb2Rl
QmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAg
ICB9CkBAIC05ODQsNyArOTk2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
SW5CeUlEKAogCiAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5BZGRBY2Nlc3NDYXNlLCBzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKIAot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGUoCiAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6
OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5NaXNzLCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kID8gc2xv
dC5jYWNoZWRPZmZzZXQoKSA6IGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1
YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01B
TW9kZTo6c3RyaWN0KCksIHByb3BlcnR5TmFtZSwgV1RGTW92ZShuZXdDYXNlKSk7CkBAIC05OTMs
NyArMTAwNSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAg
ICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMDcsNyArMTAxOSw3IEBAIHZvaWQgcmVwYXRj
aEluQnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSlNPYmplY3QqCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwogCiAgICAgaWYgKHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2
ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlk
KTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJh
bmQoCkBAIC0xMDMyLDcgKzEwNDQsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRydWU7
CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNl
LCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7
CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hl
Y2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKIAogICAg
ICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNl
KSk7CiAKQEAgLTEwNDAsNyArMTA1Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVj
a1ByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTA1NCw3ICsxMDY2LDcgQEAgdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sKICAgICBT
dXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5
Q2FjaGVDaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVj
dCwgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
R2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZh
dGVCcmFuZCgKQEAgLTEwOTEsNyArMTEwMyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRy
dWU7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2Fz
ZSwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNl
OjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBv
bGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8u
YWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6
c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMDk5LDcgKzExMTEs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAg
ICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlNldFByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVt
cCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwot
ICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAg
ICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lu
bGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTEx
Myw3ICsxMTI1LDcgQEAgdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLAogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNoZVNldFByaXZh
dGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJl
LCAgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5l
cmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigK
QEAgLTExMzMsNyArMTE0NSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUlu
c3RhbmNlT2YoCiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIHZhbHVlID0gdmFsdWVWYWx1ZS5h
c0NlbGwoKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+c3RydWN0dXJl
KHZtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAg
ICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVjdCogcHJvdG90
eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1ZSk7CiAgICAg
ICAgIGlmIChwcm90b3R5cGUpIHsKICAgICAgICAgICAgIGlmICghanNEeW5hbWljQ2FzdDxKU09i
amVjdCo+KHZtLCB2YWx1ZSkpIHsKQEAgLTExNjgsOSArMTE4MCwxMyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1
bXAoKSwKLSAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hh
cmVkSUMoKSkKKyAgICAgICAgICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSByZXN1bHQuY29k
ZSgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1w
KCksCisgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAgICAgCkBAIC0xMTg1LDcgKzEyMDEsNyBAQCB2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKAogewog
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAo
dHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCB2YWx1ZVZhbHVlLCBw
cm90b3R5cGVWYWx1ZSwgc3R1YkluZm8sIHdhc0ZvdW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOworICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluc3RhbmNlT2ZH
ZW5lcmljKTsKIH0KIAogc3RhdGljIHZvaWQgbGlua1Nsb3dQYXRoVG8oVk0mLCBDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiBjb2RlUmVmKQpAQCAtMTIwMiw3ICsxMjE4LDcgQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dG
b3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxU
aHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICBsaW5rU2xvd1BhdGhUbyh2bSwgY2FsbExp
bmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExp
bmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxU
aHVuaywgdm0sIHsgfSwgeyB9KSk7CiB9CiAKIHN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3du
ZXIoSlNDZWxsKiBjYWxsZWUpCkBAIC0xMzIwLDcgKzEzMzYsNyBAQCBzdGF0aWMgdm9pZCBsaW5r
VmlydHVhbEZvcihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWxsTGlua0luZm8mIGNh
bGxMaW5rSQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAg
cmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5r
SW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1
bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91
dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0sIHsgfSwgeyB9KSk7CiAgICAgY2FsbExpbmtJ
bmZvLnNldENsZWFyZWRCeVZpcnR1YWwoKTsKIH0KIApAQCAtMTY0MSwxNCArMTY1NywxNCBAQCB2
b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENhbAogCiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0QnlLaW5kIGtpbmQpCiB7Ci0g
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwot
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAg
IElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5m
byk7CiB9CiAKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgdXNpbmcgRnVuY3Rpb25UeXBlID0gZGVjbHR5
cGUoJm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgRnVuY3Rpb25U
eXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4o
cmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRG
dW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFy
Z2V0KGNvZGVCbG9jaywgc3R1YkluZm8pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIEZ1bmN0
aW9uVHlwZSBvcHRpbWl6ZWRGdW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9
PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKQEAgLTE2NjUsNDUgKzE2ODEsNDggQEAgdm9p
ZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0Tm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogCi0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1
bmN0aW9uKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBvcHRpbWl6ZWRGdW5jdGlvbik7CisgICAgSW5saW5lQWNjZXNz
OjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9p
ZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIERlbEJ5S2luZCBraW5kKQogewogICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9y
bWFsKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVsc2UKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90
VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCi1zdGF0aWMgdm9pZCBy
ZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQorc3RhdGljIHZv
aWQgcmVzZXRQYXRjaGFibGVKdW1wKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJ
bmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAg
ICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICBzdHViSW5mby5tX2NvZGVQ
dHIgPSBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb247CisgICAgZWxzZQorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHVi
SW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCiB2b2lkIHJlc2V0SW5CeUlEKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cisg
ICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhj
b2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICByZXNldFBhdGNoYWJs
ZUp1bXAoc3R1YkluZm8pOworICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChjb2RlQmxvY2ssIHN0dWJJ
bmZvKTsKIH0KIAogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZv
aWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5m
bywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXpl
KTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxp
bmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCmluZGV4IDMxMzc5ZGM0ZTVhOWRjMmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1MWEuLjNhMTlm
ZDM2NTQ5ZDFhODQ4MDlmOTRkYWRhMmRmYmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayos
IFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVy
ZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxv
Y2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGQ5NDk3ZWJkNGYwYmE2ZjYyNTc5ZGNkNTQyM2E3
Yjk4NDdlOTQ0ZTIuLjdlMGU1OTMyNzQ1YjhhYWVkYjk5MGQ5OGRhNjYyNzc4NDM1Y2UyMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM2LDYg
KzUzNiw4IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYo
Qm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICB2KEJvb2wsIHVzZVRvcExldmVsQXdhaXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRoZSBhd2Fp
dCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYoQm9vbCwg
dmVyYm9zZUV4ZWN1dGFibGVQb29sQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
XAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUMsIGlzQVJNNjQoKSwgTm9ybWFsLCBudWxscHRyKSBc
CisgICAgdihCb29sLCB1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCmluZGV4IDhkMDdhMjc1Nzgz
MzQwYmVhNGUxMGRkYTQ5MTYzZDEzYjQ5ODNmMTIuLmI4ZGQ0Y2JkNWQyODEwMTU3ZjlhOTliZDlj
YjBmMDU1MWEzNmQ5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlEVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJRFRhYmxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBTdHJ1Y3R1cmU7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotdHlwZWRlZiB1aW50MzJfdCBTdHJ1
Y3R1cmVJRDsKK3VzaW5nIFN0cnVjdHVyZUlEID0gdWludDMyX3Q7CiAKIGlubGluZSBTdHJ1Y3R1
cmVJRCBudWtlZFN0cnVjdHVyZUlEQml0KCkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIFN0
cnVjdHVyZUlEIGRlY29udGFtaW5hdGUoU3RydWN0dXJlSUQgaWQpCiAgICAgcmV0dXJuIGlkICYg
fm51a2VkU3RydWN0dXJlSURCaXQoKTsKIH0KICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQot
dHlwZWRlZiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlEOwordXNpbmcgU3RydWN0dXJlSUQgPSBTdHJ1
Y3R1cmUqOwogCiBpbmxpbmUgU3RydWN0dXJlSUQgbnVrZWRTdHJ1Y3R1cmVJREJpdCgpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjBmOThmNTYzYTc2ZWRlZGE1MmEw
NzI4ODNlNGJhZmViZDcyZGVlNS4uNWYxNDVlZjM3ZjFkNDc1MzI0NTJmODQ2OTU3NDQ5ODMwZWVj
MTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBY2Nl
c3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0
LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCkBAIC01NjYsNiArNTY3LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3As
IGJvb2wqIHN1Y2Nlc3MpCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENU
SUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0
Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
ICAgIG1fc2hhcmVkSklUU3R1YnMgPSBtYWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJTZXQ+KCk7CiAg
ICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKQEAgLTY0OSw2ICs2NTEsMTAgQEAgVk06On5W
TSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoSklUKQorICAgIG1fc2hhcmVkSklUU3R1YnMgPSBudWxscHRyOwor
I2VuZGlmCiB9CiAKIHZvaWQgVk06OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2
b2lkKiBhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDJkM2NkNDY2
ODg4YmNlM2FmYjVhODg5MzYxNzI3NThmMThjOTNmYTYuLjRkZTk1ZjYzOGIxZTIzODU5YTFiMzRl
OTE3ZGM5M2FhMmY5ZjM1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc0
LDYgKzE3NCw3IEBAIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQ
cm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0
dWJTZXQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBj
bGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwpAQCAtODQxLDExICs4NDIsMTMgQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlz
dE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRUaHVu
a3M+IGppdFN0dWJzOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Z2V0Q1RJU3R1YihUaHVua0dlbmVyYXRvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJ
VFN0dWJTZXQ+IG1fc2hhcmVkSklUU3R1YnM7CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogI2lm
IEVOQUJMRShGVExfSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1
bmtzOwogI2VuZGlmCisKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0
aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430206</attachid>
            <date>2021-05-31 11:40:16 -0700</date>
            <delta_ts>2021-05-31 12:01:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210531114015.patch</filename>
            <type>text/plain</type>
            <size>429696</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
Mzc3OTI5MDRlNmFkYmExZTIwZGFkZDVjNDBiZTIyZjU3YzA4YzEwLi43YzIxODIzZjE5YzcwNTk0
ZTNhNDg0NTZkMmFlNjk4ZjdjZThhYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzEgQEAKKzIwMjEtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6dmlzaXRXZWFrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmg6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNjZXNzR2VuZXJhdGlvblN0YXRlKToK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0
dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmFwcGVuZENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBl
bmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNl
dFJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250
ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9G
VExTbG93UGF0aENhbGxLZXkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAg
ICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRs
L0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0
b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0Nv
bGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hSZWdBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hFeHRyYVJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaE5vbkFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6YWRkR1BSQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9u
OjphZGRHUFJFeHRyYUFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVj
dGlvbjo6YWRkU3RhY2tBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxl
Y3Rpb246OmFkZFBva2UpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBv
a2VPZmZzZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjptYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNFbnRyeUltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbCk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAg
IChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToK
KyAgICAgICAgKEpTQzo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUlDSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAo
SlNDOjpjcmVhdGVKSVRTdHViUm91dGluZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5oOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0
L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6dXNlU2hhcmVkSUMpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJ
VEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdENvbW1vbik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJ
VEdldEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJ
VEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6
OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9y
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpT
Qzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRH
ZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
SklURGVsQnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZh
bEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5z
dGFuY2VPZkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2Rl
KToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJl
c3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3By
b3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3By
aXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5
X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFt
ZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdERvdWJsZUxvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRDb250aWd1b3VzTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEFycmF5U3RvcmFnZUxvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93
aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJv
dXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmtleXMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6d2Vha1JlZmVyZW5jZXMgY29uc3QpOgorICAgICAg
ICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSk6Cisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFy
Z2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNsb3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlE
KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3Rh
bmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAo
SlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAg
KEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6Cisg
ICAgICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9m
KToKKyAgICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OnJlc2V0U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIxLTA1LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJv
cCBVbmNoZWNrZWRDb25kaXRpb24gLyBVbmNoZWNrZWRMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IGExNDM5NDg1ZmRjNjE1YTQ2NTJmMDE1
NDIzMGExNWYyNDdkMDAzOTMuLjc5ZWVmMmMyMDY1ZGQxNzM1YjhmNDIwM2I3NzNkOGM0OWY1NmE3
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBA
IC0yMzQsOCArMjM0LDggQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFn
IHRhZz4KICAgICBDb2RlTG9jYXRpb25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAg
ICAgewotICAgICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAg
ICAgICAgQVNTRVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFT
U0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQo
IWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlv
bkNhbGw8dGFnPihnZXRMaW5rZXJBZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVs
KSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNh
ZGExZmMwMzRjYzc0MWQuLmU1YjBiMmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjRFLmgKQEAgLTIyMCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2Fs
bFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQ
Uik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNz
LCBQdHJUYWcgdGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVz
cywgUHRyVGFnIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRy
VGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklU
Q2FnZSgpIHx8IGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAg
ICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAg
ICAgICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19J
TkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxv
YWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkp
OwotICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBj
YWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGNhbGxPcGVyYXRpb24oY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVy
YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
aW5kZXggMTJhOTdhMmQyNWQ1ZWJkMWU5OWE1ZTVhYzI5YzIyODkzYmE4MzhmOS4uZjdkMDMwMTJi
YzQ0ZWQ4M2NhNzVkZjljY2NlMDUyMjllMmMyOTkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNl
OjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNo
ZWFibGVJZGVudGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQo
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoK
QEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3ND
YXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAg
ICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIs
MzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlVHJhbnNpdGlvbigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNl
dCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUoCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0
ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVj
a1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0s
IHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBD
aGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7
IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZVNldFByaXZhdGVCcmFuZCgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlk
ZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAog
QWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nh
c2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAg
LTE4OCw5ICsxODgsOSBAQCBKU09iamVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbmRpdGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0
KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgp
IGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQs
NiArOTY0LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5
UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAg
LTEwNjEsNiArMTA2Myw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5w
cm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAt
MTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnBy
b3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BS
UmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0x
MjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJv
cGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKQEAgLTEzMTcsNiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdz
KCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5t
X3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRj
aEdQUik7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3Iu
YWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRl
SW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQgQWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JD
b2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCit7CisgICAgVk0mIHZtID0gc3RhdGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFt
cGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJ
bnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZEludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZENvbnRpZ3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6Cisg
ICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAg
IGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0
ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlz
VmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1
Y3R1cmU7CisgICAgICAgICAgICBpZiAoIWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAg
ICAgICBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZt
KTsKKyAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJl
cGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAg
ICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJp
bGl0eSkpIHsKKyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywg
Y29uZGl0aW9uKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRm9yIG5vdywgd2Ugb25seSBhbGxvdyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxl
LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9
IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRp
b24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKSkgeworICAgICAgICAgICAgLy8gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVu
IGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAg
ICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5lcmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVk
IHRoYXQKKyAgICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0
dXJuZWQgdHJ1ZS4KKworICAgICAgICAgICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8g
bG9uZ2VyIG1ldDogIiwgY29uZGl0aW9uLCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQg
Y29kZSB0aGF0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3Rl
ZCBhbnl3aGVyZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2Jq
ZWN0KCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVu
ZChzdHJ1Y3R1cmUtPmlkKCkpOworICAgIH0KK30KKwogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CkBAIC0xNDE3LDcgKzE1MDIsNyBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CiAKICAgICAg
ICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJp
bGl0eSkpIHsKLSAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvbmRpdGlvbik7
CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxvY2ssIGNvbmRpdGlv
bik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xNDM1LDcgKzE1MjAs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2VhayBy
ZWZlcmVuY2UgdGhhdCBpc24ndCBvdGhlcndpc2UgbGlzdGVkIGFueXdoZXJlLgogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsK
LSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuYXBwZW5kKFdyaXRlQmFycmllcjxKU0NlbGw+
KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNl
cy5hcHBlbmQoc3RydWN0dXJlLT5pZCgpKTsKIAogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoY29uZGl0aW9uLm9iamVjdCgpKSwgc2NyYXRjaEdQUik7CiAgICAg
ICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKQEAgLTE1ODIsNyArMTY2NywxMiBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogCiAgICAgICAgIC8vIFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25z
IG9mIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGlu
ZyBjYWxsIHNpdGUuCi0gICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBz
cGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAg
IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRp
ZgorICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9
IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZSk7CiAKICAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFj
a0ZvckNhbGwgPSBbJl0oQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0
YXRlLCBib29sIGNhbGxIYXNSZXR1cm5WYWx1ZSkgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
ZG9udFJlc3RvcmU7CkBAIC0xNzEyLDYgKzE4MDIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BS
SW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgYWNjZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xv
d1BhdGgodm0sIGppdCk7CisKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAg
ICAgICAgICAgICAgIGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRv
bmUuYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtMTcyMyw4ICsxODE0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJP
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0
ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24pLAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGludCBzdGFja1BvaW50ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFj
a1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1
c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1i
ZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CisgICAgICAgICAgICBq
aXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKICAgICAgICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIo
KTsKICAgICAgICAgICAgIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGls
bFN0YXRlLCBjYWxsSGFzUmV0dXJuVmFsdWUpOwogCkBAIC0xODQ1LDcgKzE5MzYsMTQgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgIHNraXBCYXJyaWVyLmFwcGVuZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2Ny
YXRjaEdQUiwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNo
R1BSKTsKLSAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAg
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlm
CisgICAgICAgICAgICBhdXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2
ZSk7CisKICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25X
cml0ZUJhcnJpZXJTbG93UGF0aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcp
OwpAQCAtMTg3NSw2ICsxOTczLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVl
UmVncyk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIyID0gSW52YWxpZEdQUlJlZzsKQEAgLTE5MzMsNiArMjAzMywxMCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAg
ICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAg
ICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBD
UFUoQVJNNjQpCisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJl
Z2lzdGVyczo6bHIpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNU
b1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMTM1LDggQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIp
OworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAg
ICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktp
bmQ6OlByb3BlcnR5RGVsZXRpb24pOwpAQCAtMjE5MSw2ICsyMjk3LDEzIEBAIFR5cGVkQXJyYXlU
eXBlIEFjY2Vzc0Nhc2U6OnRvVHlwZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
ICAgIH0KIH0KIAordm9pZCBTaGFyZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZD
b3VudCgpCit7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykKKyAgICAgICAgbV92bS5t
X3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisgICAgSklUU3R1YlJvdXRpbmU6Om9ic2Vy
dmVaZXJvUmVmQ291bnQoKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIEFjY2Vzc0Nh
c2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewpAQCAt
MjIwMyw2ICsyMzE2LDEwMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAK
K2Jvb2wgQWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYgbGhzLCBj
b25zdCBBY2Nlc3NDYXNlJiByaHMpCit7CisgICAgLy8gV2UgZG8gbm90IGNhcmUgbV9zdGF0ZS4K
KyAgICAvLyBBbmQgd2Ugc2F5ICJmYWxzZSIgaWYgZWl0aGVyIG9mIHRoZW0gaGF2ZSBtX3BvbHlQ
cm90b0FjY2Vzc0NoYWluLgorICAgIGlmIChsaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiB8fCBy
aHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChsaHMuYWRkaXRpb25hbFNldCgpIHx8IHJocy5hZGRpdGlvbmFsU2V0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fb2Zmc2V0ICE9IHJocy5tX29mZnNldCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQ
cm94eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0
KCkgIT0gcmhzLm1fc3RydWN0dXJlLmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGxocy5tX2lkZW50aWZpZXIgIT0gcmhzLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChsaHMubV9jb25kaXRpb25TZXQgIT0gcmhzLm1fY29uZGl0aW9uU2V0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGxocy5tX3R5cGUpIHsKKyAg
ICBjYXNlIExvYWQ6CisgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAg
IGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKKyAgICBj
YXNlIFJlcGxhY2U6CisgICAgY2FzZSBNaXNzOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNh
c2UgSW5IaXQ6CisgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBBcnJheUxlbmd0aDoKKyAgICBj
YXNlIFN0cmluZ0xlbmd0aDoKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBj
YXNlIFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgor
ICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkU2Nv
cGVkQXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREaXJlY3RBcmd1bWVudHNMb2FkOgor
ICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OENsYW1wZWRM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDMy
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZs
b2F0NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgY2FzZSBHZXR0ZXI6CisgICAgY2FzZSBTZXR0ZXI6IHsKKyAgICAgICAgLy8g
R2V0dGVyIGFuZCBTZXR0ZXIgcmVsaWVzIG9uIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgc2hhcmlu
ZyBpbXBvc3NpYmxlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2FzZSBD
dXN0b21WYWx1ZUdldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgorICAgIGNh
c2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjogewor
ICAgICAgICAvLyBUaGV5IGFyZSBlbWJlZGRpbmcgSlNHbG9iYWxPYmplY3QgdGhhdCBhcmUgbm90
IHRpZWQgdG8gc2hhcmluZyBKSVRTdHViUm91dGluZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2Qg
PSBsaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhz
ZCA9IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4g
bGhzZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAg
ICB9CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhz
ZCA9IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiBy
aHNkID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVy
biBsaHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1f
bW9kdWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSBy
aHNkLm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAg
IGNhc2UgSW5zdGFuY2VPZk1pc3M6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAg
ICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAg
ICBhdXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBy
ZXR1cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIy
MzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uZmNkZmUwOWIzZTM2NWUwMWM5NmY4
MTg2OGM0MzI3Y2QzMzljYzg1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5j
bHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIs
NyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsK
IC8vIFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhl
IFBvbHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhp
cyBhbGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhv
cGVmdWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3ND
YXNlIHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNj
ZXNzQ2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElG
SUVSKEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3Qg
ewpAQCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1
bWVudHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3Ry
dWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQ
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwK
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0
ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJl
Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2
YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBS
ZWY8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9t
U3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJv
bVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZTsgfQpAQCAtMjUzLDExICsyNTYsNDMgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikg
eyB9CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1
c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbV9zdHJ1
Y3R1cmUgaXMgYWxyZWFkeSBkZXN0cm95ZWQuIFdlIGFyZSBkZXN0cm95aW5nIEpJVFN0dWJSb3V0
aW5lLCBhbmQgdGhpcyBkZXN0cnVjdGlvbiBpcyBkcml2ZW4KKyAgICAgICAgLy8gYnkgQ29kZUJs
b2NrJ3MgZGVzdHJ1Y3RvciAodHlwaWNhbGx5KS4gQW5kIGF0IHRoYXQgdGltZSwgaXQgaXMgcG9z
c2libGUgdGhhdCB0aGlzIHN0cnVjdHVyZSBpcyBhbHJlYWR5IGRlc3Ryb3llZCBiZWZvcmUKKyAg
ICAgICAgLy8gQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkLiBCdXQgaGVyZSwgd2UgZG8gbm90IGNh
cmUgYWJvdXQgdGhlIGxpdmVuZXNzIG9mIHRoaXMgc3RydWN0dXJlIHNpbmNlIHRoZSBvd25lciBz
aG91bGQga2VlcCBpdCwKKyAgICAgICAgLy8gYW5kIGlmIGl0IGlzIGRlYWQsIGl0IGlzIG9ubHkg
cG9zc2libGUgaW4gdGhlIGRlc3RydWN0b3Igb2YgdGhlIG93bmVyLiBXZSBqdXN0IGdldCBhIHBv
aW50ZXIgdmFsdWUgdmlhIHVudmFsaWRhdGVkR2V0KCkuCisgICAgICAgIHJldHVybiBjb21wdXRl
SGFzaChtX2NvbmRpdGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUp
LCBtX3ZpYVByb3h5LCBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLCBtX29mZnNldCk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYs
IGNvbnN0IEFjY2Vzc0Nhc2UmKTsKKwogcHJvdGVjdGVkOgogICAgIEFjY2Vzc0Nhc2UoVk0mLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwotICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYm
KSA9IGRlZmF1bHQ7Ci0gICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBk
ZWZhdWx0OworICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYmIG90aGVyKQorICAgICAgICA6IG1f
dHlwZShXVEZNb3ZlKG90aGVyLm1fdHlwZSkpCisgICAgICAgICwgbV9zdGF0ZShXVEZNb3ZlKG90
aGVyLm1fc3RhdGUpKQorICAgICAgICAsIG1fdmlhUHJveHkoV1RGTW92ZShvdGhlci5tX3ZpYVBy
b3h5KSkKKyAgICAgICAgLCBtX29mZnNldChXVEZNb3ZlKG90aGVyLm1fb2Zmc2V0KSkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShXVEZNb3ZlKG90aGVyLm1fc3RydWN0dXJlKSkKKyAgICAgICAgLCBt
X2NvbmRpdGlvblNldChXVEZNb3ZlKG90aGVyLm1fY29uZGl0aW9uU2V0KSkKKyAgICAgICAgLCBt
X3BvbHlQcm90b0FjY2Vzc0NoYWluKFdURk1vdmUob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFp
bikpCisgICAgICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUob3RoZXIubV9pZGVudGlmaWVyKSkK
KyAgICB7IH0KKworICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpCisgICAg
ICAgIDogbV90eXBlKG90aGVyLm1fdHlwZSkKKyAgICAgICAgLCBtX3N0YXRlKG90aGVyLm1fc3Rh
dGUpCisgICAgICAgICwgbV92aWFQcm94eShvdGhlci5tX3ZpYVByb3h5KQorICAgICAgICAsIG1f
b2Zmc2V0KG90aGVyLm1fb2Zmc2V0KQorICAgICAgICAsIG1fc3RydWN0dXJlKG90aGVyLm1fc3Ry
dWN0dXJlKQorICAgICAgICAsIG1fY29uZGl0aW9uU2V0KG90aGVyLm1fY29uZGl0aW9uU2V0KQor
ICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4ob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3ND
aGFpbikKKyAgICAgICAgLCBtX2lkZW50aWZpZXIob3RoZXIubV9pZGVudGlmaWVyKQorICAgIHsg
fQogCiAgICAgQWNjZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0
ZTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0y
NzUsNyArMzEwLDcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAKICAgICAvLyBGSVhNRTogVGhpcyBv
bmx5IGV4aXN0cyBiZWNhdXNlIG9mIGhvdyBBY2Nlc3NDYXNlIHB1dHMgcG9zdC1nZW5lcmF0aW9u
IHRoaW5ncyBpbnRvIGl0c2VsZi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2NDU2Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gY2xvbmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNv
bnN0OwogCiAgICAgLy8gUGVyZm9ybSBhbnkgYWN0aW9uIHRoYXQgbXVzdCBiZSBwZXJmb3JtZWQg
YmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVwb2NoIGluIHdoaWNoIHRoZSBjYXNlCiAgICAgLy8gd2Fz
IGNyZWF0ZWQuIFJldHVybnMgYSBzZXQgb2Ygd2F0Y2hwb2ludCBzZXRzIHRoYXQgd2lsbCBuZWVk
IHRvIGJlIHdhdGNoZWQuCkBAIC0zMTUsNiArMzUwLDE4MCBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsK
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKK2NsYXNzIFNoYXJl
YWJsZUpJVFN0dWJSb3V0aW5lIGZpbmFsIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKK3B1Ymxp
YzoKKyAgICBTaGFyZWFibGVKSVRTdHViUm91dGluZShWTSYgdm0sIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIEZpeGVkVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVm
ZXJlbmNlcykKKyAgICAgICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0o
dm0pCisgICAgICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgICAgICwgbV93ZWFrUmVm
ZXJlbmNlcyhXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICZtX2tleXM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4qIHdl
YWtSZWZlcmVuY2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fd2Vha1JlZmVyZW5jZXM7IH0K
KworICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIGZpbmFsOworCitwcml2YXRlOgorICAg
IFZNJiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOwor
ICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiBtX3dlYWtSZWZlcmVuY2VzOworfTsKKworY2xh
c3MgU2hhcmVkSklUU3R1YlNldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoU2hhcmVk
SklUU3R1YlNldCk7CitwdWJsaWM6CisgICAgU2hhcmVkSklUU3R1YlNldCgpID0gZGVmYXVsdDsK
KworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4mIGtleXMpCisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBm
b3IgKGF1dG8mIGtleSA6IGtleXMpCisgICAgICAgICAgICBXVEY6OmFkZChoYXNoZXIsIGtleS0+
aGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAgc3Ry
dWN0IEhhc2ggeworICAgICAgICBzdHJ1Y3QgS2V5IHsKKyAgICAgICAgICAgIEtleSgpID0gZGVm
YXVsdDsKKworICAgICAgICAgICAgS2V5KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIs
IEdQUlJlZyBleHRyYUdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBSZWdpc3RlclNldCB1c2VkUmVn
aXN0ZXJzLCBKSVRTdHViUm91dGluZSogd3JhcHBlZCkKKyAgICAgICAgICAgICAgICA6IG1fd3Jh
cHBlZCh3cmFwcGVkKQorICAgICAgICAgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIpCisgICAg
ICAgICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQorICAgICAgICAgICAgICAgICwgbV9l
eHRyYUdQUihleHRyYUdQUikKKyAgICAgICAgICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1Yklu
Zm9HUFIpCisgICAgICAgICAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKGJpdHdpc2VfY2FzdDxKSVRT
dHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpKQorICAgICAgICAgICAgeyB9
CisKKyAgICAgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3dyYXBwZWQgPT0gYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSk7IH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYS5tX3dyYXBwZWQgPT0gYi5tX3dyYXBwZWQKKyAgICAgICAgICAgICAgICAg
ICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkICE9IGIu
bV93cmFwcGVkOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBKSVRTdHViUm91dGluZSog
bV93cmFwcGVkIHsgbnVsbHB0ciB9OworICAgICAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAg
ICAgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fZXh0cmFH
UFI7CisgICAgICAgICAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgfTsKKworICAgICAgICB1c2luZyBLZXlU
cmFpdHMgPSBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8S2V5PjsKKworICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBLZXkmIHApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcC5t
X3dyYXBwZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4g
U2hhcmVkSklUU3R1YlNldDo6aGFzaCgqcC5tX3dyYXBwZWQtPmtleXMoKSk7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOworICAgIH07CisKKyAgICBzdHJ1Y3QgU2VhcmNoZXIgeworICAgICAgICBzdHJ1Y3Qg
VHJhbnNsYXRvciB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTZWFy
Y2hlciYgc2VhcmNoZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNo
YXJlZEpJVFN0dWJTZXQ6Omhhc2goc2VhcmNoZXIubV9rZXlzKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGEsIGNvbnN0IFNl
YXJjaGVyJiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhLm1fYmFzZUdQ
UiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0g
Yi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1f
ZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9z
dHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBi
Lm1fdXNlZFJlZ2lzdGVycykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBhdmVj
ID0gKmEubV93cmFwcGVkLT5rZXlzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGJ2ZWMgPSBiLm1fa2V5czsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF2ZWMuc2l6ZSgpICE9
IGJ2ZWMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBidmVjLnNp
emUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBY2Nlc3NDYXNl
OjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2luZGV4XSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF3ZWFrID0gKmEubV93cmFwcGVkLT53ZWFr
UmVmZXJlbmNlcygpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBid2VhayA9IGIu
bV93ZWFrUmVmZXJlbmNlczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF3ZWFrLnNpemUoKSAh
PSBid2Vhay5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBhd2Vhay5zaXpl
KCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhd2Vha1tp
XSAhPSBid2Vha1tpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAg
ICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7CisgICAgICAg
IEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3Rl
cnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mIG1fa2V5
czsKKyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiBtX3dlYWtSZWZlcmVu
Y2VzOworICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5
LCBKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtl
eS5tX3dyYXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChI
YXNoOjpLZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0K
KworICAgIHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAg
YXV0byBpdGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAg
ICAgaWYgKGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3Zl
KGl0ZXIpOworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVy
JiBzZWFyY2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hh
cmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAg
aWYgKGVudHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1f
d3JhcHBlZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAg
IEhhc2hTZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1
MzY3OWM4NC4uYjIyNmZiMTZmNWRiNzQ0ZjdmZTU1NmJlYzc1OGQ3Y2VhMDRlNGFhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjQ0LDEwICsyNDQs
OCBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXRVcChD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcCwgQ29kZUxvY2F0
aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlNb2RlIGFy
cmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCisgICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25M
YWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMtPm5v
dEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZUp1bXAgPSBi
YWRUeXBlSnVtcDsKICAgICAgICAgdGhpcy0+ZXhjZXB0aW9uSGFuZGxlciA9IGV4Y2VwdGlvbkhh
bmRsZXI7CiAgICAgICAgIHRoaXMtPmRvbmVUYXJnZXQgPSBkb25lVGFyZ2V0OwogICAgICAgICB0
aGlzLT5iYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQgPSBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7
CkBAIC0yNjIsOCArMjYwLDIxIEBAIHN0cnVjdCBCeVZhbEluZm8gewogCiAgICAgREVDTEFSRV9W
SVNJVF9BR0dSRUdBVEU7CiAKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
IG5vdEluZGV4SnVtcDsKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJh
ZFR5cGVKdW1wOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQorCisgICAg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247CisKKyAgICB1bmlv
biB7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25v
dEluZGV4SnVtcFRhcmdldDsKKyAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBtX25vdEluZGV4SnVtcDsKKyAgICB9OworICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7Cisg
ICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsK
KyAgICB9OworCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4g
ZXhjZXB0aW9uSGFuZGxlcjsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBkb25lVGFyZ2V0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJh
ZFR5cGVOZXh0SG90UGF0aFRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAppbmRleCBhMzY5ZTExMDA5MTBhNzZiM2UyZGNiODhjNzkyNTA2ZmMwMDc0ZTU0
Li42MmY3M2RkODllYWU1NjViOWVhYmZhYmU2ODNlZTk3N2Y5ZWQ4OWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00MjAsNiArNDIwLDExIEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgcmV0dXJuIGpp
dFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9CisKKyAgICBib29sIHVzZVNo
YXJlZElDKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhqaXRUeXBlKCkpOworICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIENvZGVCbG9j
ayogcmVwbGFjZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCAwYzNjNDEyMWQ1ODY2Mjdl
YTk1MDQxYmY3MTcwZGM3YzlkNTBhYmJhLi40ZWEwYjljZGNjNzE2MmZlOTNiYjY3NDljMjg2MDc1
NjM3MWEzYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEdldHRlclNl
dHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlCiAgICAgbV9jdXN0b21TbG90QmFzZS5zZXRNYXlCZU51bGwodm0sIG93
bmVyLCBjdXN0b21TbG90QmFzZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdl
dHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAogICAgIHN0ZDo6b3B0aW9uYWw8RE9NQXR0
cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9t
U2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5t
X2RvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNz
b3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3Vz
dG9tR2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVm
PEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAg
ICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmpl
Y3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBl
ID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0
ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAg
cmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3Vz
dG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkBAIC05MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRl
clNldHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAg
bV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1Jl
ZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0
YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVJlZ3MoKSk7CiAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BS
KTsKIAogICAgIEdQUlJlZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYg
KzIyNSwxMSBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6
IGZwU2NyYXRjaCkKICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwog
ICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3Rl
cnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3Rh
dGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2Ny
YXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vz
c0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmgKaW5kZXggYTg0ODg0NThmNGFiZDJhYWQyZWJhZjYyYjI4YTMzYzQxODYwNDA4Ny4u
YzM2NzNhNGYxNGJmMDc4NTY2MGM1NjRiNzgzMmE1ZGI0NDZiNzI5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5o
CkBAIC01MywxNyArNTMsMTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRl
cihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciosIEdQ
UlJlZyBiYXNlRm9yR2V0R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAg
ICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQs
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAg
IEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5v
dGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+JiYsIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwKICAgICAgICAgRnVu
Y3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciA9IG51bGxwdHIsIEpT
T2JqZWN0KiBjdXN0b21TbG90QmFzZSA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQ
cmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkdldHRlclNldHRlckFjY2Vzc0Nhc2UoKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNz
LmNwcAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2JhZTk2ZmIzMjFhLi4yMTk0
MmM0MzViZWVjMTRjMTU4NjM5NWUzZDY0MTEzNmUyMjg4OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAtMjE2LDYgKzIxNiw4IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVnaXN0ZXIoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VUYWdH
UFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKICNlbmRpZgor
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIEdQUlJlZyBzY3Jh
dGNoID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAgIGlmIChhbGxvY2F0b3Iu
ZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CkBAIC0z
NzksOCArMzgxLDU0IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICByZXR1cm4gbGlua2Vk
Q29kZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFj
Y2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4g
dGFyZ2V0KQogeworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAg
c3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAg
ICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQg
YmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5j
aENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHVi
SW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVk
c0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxp
ZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKKworICAgIEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3Rh
bnQganVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit7CisgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAvLyBJZiBpdCBpcyBub3QgR2V0
QnlJZC1saWtlLXRoaW5nLCB3ZSBkbyBub3QgZW1pdCBub3Agc2xlZCAoZS5nLiBHZXRCeVZhbCku
CisgICAgICAgIC8vIFRoZSBjb2RlIGlzIGFscmVhZHkgYW4gaW5kaXJlY3QganVtcCwgYW5kIG9u
bHkgdGhpbmcgd2Ugc2hvdWxkIGRvIGlzIHJlcGxhY2luZyBtX2NvZGVQdHIuCisgICAgICAgIGlm
IChzdHViSW5mby5oYXNDb25zdGFudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIC8vIElmIG1f
Y29kZVB0ciBpcyBwb2ludGluZyB0byBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24sIHRo
aXMgbWVhbnMgdGhhdCBJbmxpbmVBY2Nlc3MgY29kZSBpcyBub3QgYSBzdHViIG9uZS4KKyAgICAg
ICAgICAgIC8vIFdlIHJld3JpdGUgdGhpcyB3aXRoIHRoZSBzdHViLWJhc2VkIGRpc3BhdGNoaW5n
IGNvZGUgb25jZSwgYW5kIGNvbnRpbnVlIHVzaW5nIGl0IHVudGlsIHdlIHJlc2V0IHRoZSBjb2Rl
LgorICAgICAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
ID09IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSB7
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmc3R1YkluZm8pLCBzdHViSW5mby5t
X3N0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
Q29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgICAgIGF1dG8g
anVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAgICAgICBib29sIG5lZWRzQnJhbmNoQ29t
cGFjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihq
aXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworCisgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisKKyAgICAgICAgICAgICAgICBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIHN0
dWIgY2FsbCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN0dWJJbmZvLm1f
Y29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwpAQCAtMzk0LDYgKzQ0Miwy
NiBAQCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYgogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZl
ciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOwogfQog
Cit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisK
KyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5v
cCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlk
ZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7Cisg
ICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2Vt
Ymxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNo
ZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5s
aW5rKGp1bXAsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisKKyAgICBGSU5BTEla
RV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0
YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCit7CisgICAgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCBm
NDliMzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIyYjg0NzFkMTJkLi5lYjc2ZmYzOTZkMjg4ZWNk
YmUzYWYxMDE3ZjMyNDNhYWE3NDQwYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQsMTAgKzEwNCwxNCBAQCBjbGFzcyBJbmxpbmVB
Y2Nlc3MgewogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlQXJyYXlMZW5ndGgoU3RydWN0dXJl
U3R1YkluZm8mLCBKU0FycmF5Kik7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVTdHJpbmdM
ZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZUFycmF5
TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwotICAgIHN0YXRpYyB2b2lkIHJl
d2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4pOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2VsZkluQWNjZXNz
KFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJh
dGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIAorICAgIHN0YXRpYyB2b2lkIHJl
d2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7
CisgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5l
Q29kZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyB2b2lkIHJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisK
ICAgICAvLyBUaGlzIGlzIGhlbHBmdWwgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2l6ZSBvZiBhbiBJ
QyBvbgogICAgIC8vIHZhcmlvdXMgcGxhdGZvcm1zLiBXaGVuIGFkZGluZyBhIG5ldyB0eXBlIG9m
IElDLCBpbXBsZW1lbnQKICAgICAvLyBpdHMgcGxhY2Vob2xkZXIgY29kZSBoZXJlLCBhbmQgbG9n
IHRoZSBzaXplLiBUaGF0IHdheSB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFl
NzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdj
MTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNz
Q2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVh
dGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nl
c3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CiB9CiAKIHZvaWQg
SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJp
bnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNv
bnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5
cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNz
Q2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOwogICAg
IHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmlu
ZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0
NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWNjZXNzQ2Fz
ZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+
IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsCiAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0m
LCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBj
b25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFkYzIzMzY5MzNkNjc2YzNiZTllOTBjNjAx
ODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZlNjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rpb24uc2V0KHZtLCBvd25lciwgaW50cmlu
c2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0
LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
SlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRl
bnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rp
b24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9m
ZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
Ojp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8
QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3Vs
dC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEy
YmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgK
QEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50cmluc2ljR2V0
dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0
ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rp
b24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4g
Y2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAppbmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEw
OGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFmNDgxNTU2NjE1MTcwODVhODhlMTlhMDcz
YWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCkBAIC00NSwxOCArNDUsMTggQEAgTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgb3du
ZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJv
bm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5h
bWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNj
b3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlm
aWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNl
dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmly
b25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNj
ZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPiByZXN1bHQobmV3IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+
cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaApp
bmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNkMDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2
MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAg
LTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1
YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9u
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBT
Y29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0K
IAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
LCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZz
ZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmlu
YWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBm
YWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKaW5kZXggM2QyMzNmYWQxMzM5MmRl
MDJiZjNiM2M5N2ZkMDY0N2YwZDFhYWZmMy4uYmU3M2ZkYjVlNWE3YTlmZjFiNzUyNzIwMjUyOTNj
YjYyYTU4NDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2
ICs5MCwzMiBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7
CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBIYXNo
ZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlzKQorICAgICAg
ICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNo
ZXIuaGFzaCgpOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmIHJocykKKyAgICB7CisgICAgICAgIGlmIChsaHMuc2l6ZSgpICE9IHJocy5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gbGl0ZXIgPSBsaHMuYmVn
aW4oKTsKKyAgICAgICAgYXV0byByaXRlciA9IHJocy5iZWdpbigpOworICAgICAgICBmb3IgKDsg
bGl0ZXIgIT0gbGhzLmVuZCgpOyArK2xpdGVyLCArK3JpdGVyKSB7CisgICAgICAgICAgICBpZiAo
ISgqbGl0ZXIgPT0gKnJpdGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhzLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobGhz
ID09IHJocyk7CisgICAgfQogICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvck9i
amVjdChKU09iamVjdCopIGNvbnN0OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvckNv
bmRpdGlvbktpbmQoUHJvcGVydHlDb25kaXRpb246OktpbmQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXgg
MDNhMmY2NzFmNzQ0NmU0YWNhZGNkNzRiOWM4N2U4OWE3ZDA5YTAxNS4uYmQwYTIxZmNlNzBhNmQ3
OGE4MjM1YTgzN2JiYmUzMjBlYzgyYmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC01OSwxMCArNTksOSBAQCB2
b2lkIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICAgICAgb3V0LnByaW50KCI6IiwgbV9jb2RlKTsKIH0KIAotdm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24pCit2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9p
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBj
b25kaXRpb24pCiB7Ci0gICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVS
ZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCgKLSAgICAgICAgd2F0Y2hwb2ludHMsIGppdC0+
Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBjb25kaXRpb24pOworICAgIFdhdGNocG9pbnRzT25TdHJ1
Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQod2F0Y2hw
b2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sIGNvbmRpdGlvbik7CiB9CiAKIHZvaWQgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCkBAIC03Myw3ICs3MiwxMCBAQCB2b2lk
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQogdm9pZCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnN1Y2NlZWQoKQogewogICAgIHJlc3RvcmVTY3JhdGNoKCk7Ci0gICAgc3Vj
Y2Vzcy5hcHBlbmQoaml0LT5qdW1wKCkpOworICAgIGlmIChqaXQtPmNvZGVCbG9jaygpLT51c2VT
aGFyZWRJQygpKQorICAgICAgICBqaXQtPnJldCgpOworICAgIGVsc2UKKyAgICAgICAgc3VjY2Vz
cy5hcHBlbmQoaml0LT5qdW1wKCkpOwogfQogCiBjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzRm9yQ2FsbCgpCkBAIC0xMjYsMTAgKzEyOCwxMSBA
QCBhdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFj
a0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJTZQogICAgIH07CiB9CiAKLWF1dG8gQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNl
cHRpb25zKCkgLT4gU3BpbGxTdGF0ZQorYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVn
aXN0ZXJTZXQmIGV4dHJhKSAtPiBTcGlsbFN0YXRlCiB7CiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJl
Z2lzdGVycyA9IGFsbG9jYXRvci0+dXNlZFJlZ2lzdGVycygpOwogICAgIGxpdmVSZWdpc3RlcnMu
ZXhjbHVkZShjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGxpdmVSZWdpc3RlcnMubWVyZ2Uo
ZXh0cmEpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGV4dHJhU3RhY2tQYWRkaW5nID0gMDsK
ICAgICB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRp
b24gPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGwoKmppdCwgbGl2ZVJlZ2lzdGVycywgZXh0cmFTdGFja1BhZGRpbmcpOwpAQCAtMjUyLDcg
KzI1NSw3IEBAIFBvbHltb3JwaGljQWNjZXNzOjp+UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIAog
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAg
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQogewogICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKQEAgLTI2OCw5
ICsyNzEsOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRD
YXNlcygKICAgICAvLyAgIGFkZCBtb3JlIHRoaW5ncyBhZnRlciBmYWlsdXJlLgogICAgIAogICAg
IC8vIEZpcnN0IGVuc3VyZSB0aGF0IHRoZSBvcmlnaW5hbENhc2VzVG9BZGQgZG9lc24ndCBjb250
YWluIGR1cGxpY2F0ZXMuCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPj4g
Y2FzZXNUb0FkZDsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmlnaW5hbENhc2VzVG9BZGQuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG15Q2FzZSA9IFdURk1v
dmUob3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKKyAgICAgICAgYXV0byBteUNhc2UgPSBXVEZNb3Zl
KG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYgaXQg
aXMgbm90IHJlcGxhY2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0LgogICAg
ICAgICBib29sIGZvdW5kID0gZmFsc2U7CkBAIC0zNDYsOSArMzQ5LDkgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiB9CiAKIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UoCi0gICAgY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IG5ld0FjY2VzcykKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBSZWY8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4sIDI+IG5ld0FjY2Vzc2VzOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4sIDI+IG5ld0FjY2Vzc2VzOwogICAgIG5ld0FjY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5l
d0FjY2VzcykpOwogICAgIHJldHVybiBhZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLCBXVEZNb3ZlKG5ld0FjY2Vzc2VzKSk7CiB9CkBAIC0zNTksOSArMzYyLDE1IEBAIGJv
b2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CiAgICAgICAgIGlm
ICghYXQoaSkudmlzaXRXZWFrKHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5jZSA6IG1f
d2Vha1JlZmVyZW5jZXMpIHsKLSAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdlYWtSZWZl
cmVuY2UuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3N0dWJS
b3V0aW5lKSB7CisgICAgICAgIGF1dG8qIHdlYWtSZWZlcmVuY2VzID0gbV9zdHViUm91dGluZS0+
d2Vha1JlZmVyZW5jZXMoKTsKKyAgICAgICAgaWYgKHdlYWtSZWZlcmVuY2VzKSB7CisgICAgICAg
ICAgICBmb3IgKFN0cnVjdHVyZUlEIHdlYWtSZWZlcmVuY2UgOiAqd2Vha1JlZmVyZW5jZXMpIHsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZSh3
ZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDQwLDcgKzQ0OSw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWduZWQgc3JjSW5kZXggPSAwOwog
ICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAoc3JjSW5kZXggPCBtX2xpc3Qu
c2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9
IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+
IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10pOwogICAgICAgICAKICAgICAg
ICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0aGVuIHdlIGhhdmUgdG8ga2Vl
cCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAgICAgICAgLy8gZmFpbCB0byBy
ZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIHVz
ZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzUwMCw4IEBAIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRoaXNUYWdHUFIpOwogI2VuZGlm
CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAKICAgICBzdGF0ZS5z
Y3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC01MDAsMTIg
KzUxMSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2Vu
ZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7Ci0g
ICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVy
U3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hp
bmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRy
YVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2RlID0gZmFsc2U7CiAKQEAgLTUy
MSwxMiArNTI2LDMwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBpZiAoUG9seW1v
cnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiT3B0aW1pemVk
IGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwotICAgIAorCisgICAgYm9vbCBkb2Vz
Q2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gZmFsc2U7
CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVjdG9yPEpTQ2VsbCo+IGNlbGxz
VG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4ga2V5cyhjYXNlcy5z
aXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDog
Y2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxs
c1RvTWFyayk7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRl
ciB8fCBlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRlcikKKyAgICAgICAgICAgIGRv
ZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAga2V5c1tpbmRleF0gPSBlbnRy
eTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUubV9kb2VzQ2FsbHMgPSBkb2Vz
Q2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGRvZXNKU0dldHRl
clNldHRlckNhbGxzOworICAgIC8vIEdldHRlciAvIFNldHRlciByZWxpZXMgb24gc3RhY2stcG9p
bnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBsaW5rZWQgQ29kZUJsb2NrLCB3
aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAgaWYgKGRvZXNKU0dldHRlclNl
dHRlckNhbGxzKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNvbnRhaW5zIHRoZSBjYXNlcyB0
aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3b24ndCBjaGFuZ2UgdGhhdCBz
ZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrID0g
dHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IGZhbHNlOwogICAgIGJvb2wg
bmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3RyaW5nUHJv
cGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrID0g
ZmFsc2U7CkBAIC01NDIsMTAgKzU2NSw0OCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHlt
b3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAg
ICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0ZS53YXRjaHBvaW50cywgY29k
ZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBhbGxHdWFyZGVkQnlTdHJ1Y3R1
cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayhzdHViSW5mbyk7Ci0g
ICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyIHx8IG5ld0Nh
c2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAgICAgICAgICBoYXNKU0dldHRl
clNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2FzZS0+dXNlc1BvbHlQcm90bygp
KQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5lZWRz
U3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgfHwgbmVlZHNJ
bnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisKKyAgICBh
dXRvIGZpbmlzaENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxKSVRTdHViUm91dGluZT4mJiBz
dHViKSB7CisgICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZNb3ZlKHN0dWIpOworICAgICAgICBt
X3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CisgICAgICAgIGlmIChQ
b2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygi
UmV0dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCksICJcbiIpOworCisgICAgICAgIG1f
bGlzdCA9IFdURk1vdmUoY2FzZXMpOworICAgICAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKKwor
ICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7CisgICAgICAg
IGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgp
IHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdD
b2RlOworCisgICAgICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQs
IG1fc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgIH07CisKKyAgICBDQ2FsbEhlbHBl
cnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsKKworICAgIGlmIChjb2Rl
QmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlLm1fZG9lc0pTR2V0dGVy
U2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQg
c3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0g
aWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNr
LXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJlZ2lzdGVyIGFuZCBpdCBp
cyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1dGFibGUgY2FsbCBkb2Vz
IG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rpbmcgc3RhY2stcG9pbnRl
ciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzLiBCdXQgdGhp
cyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFjay1wb2ludGVyLCBhbmQg
bWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8gVG8gZW5zdXJlIFBBQy10
YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVyIHRvIHRoZSBhcHByb3By
aWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogICAgIH0KIAorICAgIHN0
YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJl
c2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAKICAgICBpZiAoY2FzZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5saWtlbHksIGJ1dCB3ZSBt
YWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc1MSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMgPSBu
dWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JFeGNl
cHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4
Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAgIGlmIChzdGF0ZS5uZWVk
c1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgICAgIC8v
IE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hlbiBkb2luZyBnZW5lcmlj
VW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAgICAgICAvLyBOb3RlIGFs
c28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20gZ2V0dGVyL3NldHRlci4g
Q3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2ICs3OTEsMzIgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICAg
fQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBmYWlsdXJl
LmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGlu
ZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8g
dGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNhbGxlZCAobm90IGp1bXBl
ZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxsIHRvIHRoZSB0aHVuayB3
aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAgICAvLyBBbmQgd2Ugc2hv
dWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBCYXNlbGluZUpJVC4KKyAg
ICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigp
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKworICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4gc3R1YjsKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXMo
V1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNo
YXJlZElDKCkgJiYgY2FuQmVTaGFyZWQpIHsKKyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6U2Vh
cmNoZXIgc2VhcmNoZXIgeworICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAgICAg
ICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BS
LAorICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBrZXlzLAorICAgICAgICAgICAgd2Vha1Jl
ZmVyZW5jZXMsCisgICAgICAgIH07CisgICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJz
LT5maW5kKHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKHN0dWIpCisgICAgICAgICAgICByZXR1cm4g
ZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CisgICAgfQorCiAgICAgTGlua0J1
ZmZlciBsaW5rQnVmZmVyKGppdCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxp
bmVDYWNoZSwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci5kaWRG
YWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFs
Ojp2ZXJib3NlKQpAQCAtNzM5LDkgKzgyNiwxMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc3VjY2Vzc0xhYmVsID0g
c3R1YkluZm8uZG9uZUxvY2F0aW9uOwogCi0gICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nl
c3MsIHN1Y2Nlc3NMYWJlbCk7Ci0KLSAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJ
QygpKQorICAgICAgICBBU1NFUlQoc3RhdGUuc3VjY2Vzcy5lbXB0eSgpKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NMYWJlbCk7Cisg
ICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworICAgIH0KICAgICAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJ
bmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZv
ciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwpAQCAtNzQ5LDI5ICs4MzksMTUgQEAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2MKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+IGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKICAgICAgICAgY29kZUJsb2NrLCBs
aW5rQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIiVzIiwgdG9DU3RyaW5n
KCJBY2Nlc3Mgc3R1YiBmb3IgIiwgKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3JpZ2lu
LCAiIHdpdGggcmV0dXJuIHBvaW50ICIsIHN1Y2Nlc3NMYWJlbCwgIjogIiwgbGlzdER1bXAoY2Fz
ZXMpKS5kYXRhKCkpOwotCi0gICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKLSAgICBWZWN0b3I8
SlNDZWxsKj4gY2VsbHNUb01hcms7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKQotICAg
ICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9NYXJrKTsKLSAg
ICAKLSAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIGNv
ZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxMaW5r
SW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4
Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwotICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRl
LndhdGNocG9pbnRzKTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkK
LSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwg
Y29kZS5jb2RlKCksICJcbiIpOwogICAgIAotICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOwot
ICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwotICAgIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OktpbmQgcmVzdWx0S2luZDsKLSAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjpt
YXhBY2Nlc3NWYXJpYW50TGlzdFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCi0gICAgICAg
IHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7
Ci0gICAgZWxzZQotICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6
R2VuZXJhdGVkTmV3Q29kZTsKLSAgICAKLSAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dChyZXN1bHRLaW5kLCBjb2RlLmNvZGUoKSk7CisgICAgc3R1YiA9IGNyZWF0ZUlDSklUU3R1YlJv
dXRpbmUoY29kZSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIHZtLCBj
b2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlu
a0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKKworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElD
KCkpIHsKKyAgICAgICAgaWYgKGNhbkJlU2hhcmVkKQorICAgICAgICAgICAgdm0ubV9zaGFyZWRK
SVRTdHVicy0+YWRkKFNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleShzdHViSW5mby5iYXNlR1BS
LCBzdHViSW5mby52YWx1ZUdQUiwgc3R1YkluZm8ucmVncy50aGlzR1BSLCBzdHViSW5mby5tX3N0
dWJJbmZvR1BSLCBzdHViSW5mby51c2VkUmVnaXN0ZXJzLCBzdHViLmdldCgpKSk7CisgICAgfQor
CisgICAgcmV0dXJuIGZpbmlzaENvZGVHZW5lcmF0aW9uKFdURk1vdmUoc3R1YikpOwogfQogCiB2
b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjkyMDMyNmRjYzkx
NTQ3NGIzZjFlZWI3ZjcyNWU2YWIzNGFlY2I0MS4uNDU5YmIwYmZhYzU3ZWRlMmIxYzQzNWEwYmZl
N2QxNjk3NDdmZDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKQEAgLTE0MSwxMCArMTQxLDEwIEBAIGNsYXNzIFBvbHltb3Jw
aGljQWNjZXNzIHsKICAgICAvLyBXaGVuIHRoaXMgZmFpbHMgKHJldHVybnMgR2F2ZVVwKSwgdGhp
cyB3aWxsIGxlYXZlIHRoZSBvbGQgc3R1YiBpbnRhY3QgYnV0IHlvdSBzaG91bGQgbm90IHRyeQog
ICAgIC8vIHRvIGNhbGwgdGhpcyBtZXRob2QgYWdhaW4gZm9yIHRoYXQgUG9seW1vcnBoaWNBY2Nl
c3MgaW5zdGFuY2UuCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlcygKLSAgICAg
ICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+KTsK
KyAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+KTsKIAog
ICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZSgKLSAgICAgICAgY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPik7CisgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBSZWY8
QWNjZXNzQ2FzZT4pOwogICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVnZW5lcmF0
ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgRUNNQU1vZGUsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgCkBAIC0xNzks
NyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBD
b2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAg
Ci0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0
VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBl
OwogICAgIAogICAgIHZvaWQgY29tbWl0KAogICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1
YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLApAQCAtMTg4LDcgKzE4OCw2
IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBMaXN0VHlwZSBtX2xpc3Q7CiAgICAg
UmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IG1fd2F0Y2hwb2ludHM7Ci0gICAgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBz
dHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKQEAgLTE5Niw2ICsxOTUsOCBAQCBzdHJ1Y3Qg
QWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAKICAgICAgICAgLCBt
X2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNlKQorICAgICAgICAs
IG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNh
bGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3Jl
UmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNp
dGVJbmRleChmYWxzZSkKQEAgLTIyMywxMCArMjI0LDEyIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUgewogICAgIEZQUlJlZyBzY3JhdGNoRlBSIHsgSW52YWxpZEZQUlJlZyB9OwogICAg
IEVDTUFNb2RlIG1fZWNtYU1vZGUgeyBFQ01BTW9kZTo6c2xvcHB5KCkgfTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKLSAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOworICAgIFZlY3Rv
cjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9j
YWxsTGlua0luZm9zOworICAgIGJvb2wgbV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA6IDE7Cisg
ICAgYm9vbCBtX2RvZXNDYWxscyA6IDE7CiAKLSAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CisgICAgdm9pZCBpbnN0YWxsV2F0Y2hwb2lu
dChDb2RlQmxvY2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOwogCiAgICAgdm9p
ZCByZXN0b3JlU2NyYXRjaCgpOwogICAgIHZvaWQgc3VjY2VlZCgpOwpAQCAtMjQ4LDcgKzI1MSw3
IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAK
ICAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0
IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7Ci0gICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVS
ZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCk7CisgICAgU3BpbGxTdGF0
ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGNv
bnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7CiAKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oY29uc3QgU3BpbGxTdGF0
ZSYpOwogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGNvbnN0
IFNwaWxsU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYgZG9udFJlc3RvcmUgPSB7IH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nh
c2UuY3BwCmluZGV4IGNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1MGVlYTZhM2IzNGU3NWZhOWQuLjRi
Zjc4MGVkMzE3NjZlZGU2YmNjNTYwNDQ2YTUwNzlhY2JjYzEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKQEAg
LTM4LDE5ICszOCwxOSBAQCBQcm94eWFibGVBY2Nlc3NDYXNlOjpQcm94eWFibGVBY2Nlc3NDYXNl
KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2NlcwogICAgIG1fdmlhUHJveHkg
PSB2aWFQcm94eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8
QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBBU1NFUlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0g
TWlzcyB8fCB0eXBlID09IEdldEdldHRlciB8fCB0eXBlID09IFJlcGxhY2UpOwotICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKIFByb3h5YWJsZUFjY2Vzc0Nhc2U6On5Qcm94eWFibGVBY2Nlc3NDYXNlKCkKIHsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkg
Y29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0
CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByb3h5YWJsZUFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcg
UHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRl
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCmluZGV4IGRjMzllMjZjYTJmNGIyYjdh
YmExMmI1YTU1ZjMyNjY0NDEwZWZhNWMuLmU4NDM4NWNhNzVjOWY3NTJlOGU4ZTE2Y2RkZTBhYmNh
YzdiY2M0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b3h5YWJsZUFjY2Vzc0Nhc2UuaApAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIFByb3h5YWJsZUFj
Y2Vzc0Nhc2UgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAKICAgICBXYXRjaHBvaW50U2V0KiBhZGRp
dGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0LmdldCgp
OyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYs
IEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCgpLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRl
KFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAgIGJvb2wgdmlhUHJveHkgPSBmYWxz
ZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0
cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgflByb3h5YWJsZUFjY2Vzc0Nhc2UoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYzhlNmJjNjNhMzZhMzliODQ1OGI5MDBjYjJhNTJlZjRm
MTUxMTIwZi4uOGRmNTgxZTQ2NGYwZTAyZTM0Nzc1NWZjNzkwZDI3Y2I4OTQyNWE0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC01Miw2ICs1Miw3IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5m
byhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpCiAgICAgLCBwcm9w
ZXJ0eUlzSW50MzIoZmFsc2UpCiAgICAgLCBwcm9wZXJ0eUlzU3ltYm9sKGZhbHNlKQogeworICAg
IHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiB9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjp+
U3RydWN0dXJlU3R1YkluZm8oKQpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjk1ZTdkYmI4
NjM4YWI5MmY3NzEzMzg3MWY2ZmE0NmQ5MzVmY2ZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04Nyw3ICs4Nyw3IEBA
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNl
T2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwg
Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFj
Y2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nh
c2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+
KTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVC
bG9jayopOwogCkBAIC0zNDQsMTkgKzM0NCwzMCBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7
CiBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHN0
YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBJQyBmb3IgKmJ5
SWQgY2FjaGVzLiBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hhYmxlIGp1bXAgZm9yICdpbnN0YW5j
ZW9mJyBjYWNoZXMuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9u
ZUxvY2F0aW9uOwotICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1Bh
dGhDYWxsTG9jYXRpb247CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIAorICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxv
Y2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbExvY2F0aW9uOworICAg
ICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICB9
OworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2Nv
ZGVQdHI7CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZVB0cigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9jb2RlUHRyKTsgfQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIHNsb3dQYXRoU3RhcnRMb2NhdGlvbik7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJhdGlvbigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQor
CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKIAotICAgIEdQUlJlZyBiYXNlR1BSOwot
ICAgIEdQUlJlZyB2YWx1ZUdQUjsKKyAgICBHUFJSZWcgYmFzZUdQUiB7IEludmFsaWRHUFJSZWcg
fTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAgdW5pb24gewog
ICAgICAgICBHUFJSZWcgdGhpc0dQUjsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUjsKICAg
ICAgICAgR1BSUmVnIHByb3BlcnR5R1BSOwogICAgICAgICBHUFJSZWcgYnJhbmRHUFI7CiAgICAg
fSByZWdzOworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSOwogICAgIC8vIEZJWE1F
OiBbMzItYml0c10gQ2hlY2sgaWYgU3RydWN0dXJlU3R1YkluZm86OmJhc2VUYWdHUFIgaXMgdXNl
ZCBzb21ld2hlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
aW5kZXggOGFkZWFkNTBmNDU1NmNmZjI1ZTdjN2M5OTc4MzA0ZDQxNzcwOTc0Ny4uNDc2NTRhNzZk
YjVhMTEzZjBmY2I2YmY2OGEzZDIyYWNiYzZhMDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMTU0LDYgKzE1NCwxMSBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxs
TGlua1JlY29yZChmdW5jdGlvbkNhbGwsIGZ1bmN0aW9uKSk7CiAgICAgICAgIHJldHVybiBmdW5j
dGlvbkNhbGw7CiAgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgY2FsbChhZGRyZXNzLCBPcGVyYXRpb25QdHJU
YWcpOworICAgIH0KICAgICAKICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCAyNWEx
MjE5ZmRkNDNiZGZlM2MwN2I4YTI3NGRmOGUwZTU3ODhkMmI1Li5iYTM5ZmZhYzdkYmYzODllYmZi
OGJjNTA2ZDQwOWUxNzUwMGFkMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xODksNiArMTg5LDggQEAgY2xhc3MgQ2FsbFJl
c3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93
UGF0aEdlbmVyYXQKICAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7CiB9
OwogCisKKwogdGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBU
eXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKQEAg
LTI2NCw2ICsyNjYsNjcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGhNb3ZlKAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNv
dXJjZUFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgor
Y2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRUeXBlPiB7CitwdWJs
aWM6CisgICAgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3IoCisgICAg
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xv
d1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVx
dWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAg
ICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4oZnJvbSwg
aml0LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCisgICAgICAgICwgbV9zdHViSW5m
b0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgLCBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcyhz
bG93UGF0aE9wZXJhdGlvbkFkZHJlc3MpCisgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikK
KyAgICAgICAgLCBtX2FyZ3VtZW50cyhzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMp
Li4uKQorICAgICAgICAsIG1fc3R1YkluZm8oc3R1YkluZm8pCisgICAgeworICAgIH0KKworcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+CisgICAgdm9pZCB1
bnBhY2tBbmRHZW5lcmF0ZShTcGVjdWxhdGl2ZUpJVCogaml0LCBzdGQ6OmluZGV4X3NlcXVlbmNl
PEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKTsKKyAgICAgICAgdGhpcy0+c2V0VXAoaml0KTsKKyAg
ICAgICAgbV9zdHViSW5mby0+bV9zbG93T3BlcmF0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAg
aml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPFJlc3Vs
dFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUpCisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRp
b248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgc3RkOjpnZXQ8QXJn
dW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRy
ZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5k
ZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIHRoaXMtPnRlYXJEb3duKGppdCk7CisgICAg
fQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIGZpbmFs
CisgICAgeworICAgICAgICB1bnBhY2tBbmRHZW5lcmF0ZShqaXQsIHN0ZDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+Pjo6dmFsdWU+
KCkpOworICAgIH0KKworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzczsKKyAgICBGdW5jdGlvblR5cGUg
bV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7Cisg
ICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87Cit9OworCisKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlw
ZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAorICAgIFJlc3VsdFR5cGUgcmVzdWx0
LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5
cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KGZyb20sIGppdCwgc3R1YkluZm8sIHN0dWJJ
bmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJl
cXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklU
KiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5
cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVu
dHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKGZyb20sIGppdCwgc3R1YkluZm8sIHN0
dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsIHJlc3VsdCwgYXJndW1l
bnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5B
QkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDBhZjVkZDk4MzljODAyMTZlZjhiY2YwZGU2M2RlM2JjODk1YjNhOGEu
LmRlMGZiMWQyN2M2ZWI5ZGFjZDYxYWI0NTUzNTVkYTlkNTgyMGJjMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDQ1LDI0ICsx
MDQ1LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1
YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJh
c2UudXNlKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENv
bXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVk
R2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHVi
SW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgp
LCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAg
ICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9H
UFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIApAQCAtMTA3MCw3ICsxMDgy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9kZSwgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7Cisg
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVz
dWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2Vs
bCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OwogICAgICAgICBicmVhazsKQEAgLTEwODYsMjcgKzEwOTgsMzkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5
cGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2UuZ3ByKCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7
CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBl
KTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBK
SVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIFVudHlw
ZWRVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpT
VmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
IH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAg
IGJhc2UudXNlKCk7CkBAIC0xMTE1LDcgKzExMzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90
Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTExMzAs
MTQgKzExNTQsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChO
b2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAg
c3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0KICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsK
QEAgLTExNDcsMjAgKzExNzYsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRo
aXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAgICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNl
ZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAotICAgICAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsK
KyAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
CisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJl
Z3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQor
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwg
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAg
ICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVC
eUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93
UGF0aC5nZXQoKSk7CkBAIC0xMTg5LDIyICsxMjMzLDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHVi
SW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7Ci0KICAgICAgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9k
ZS0+Y2hpbGQyKCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwga2V5KTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAg
ICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBz
Y3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXls
b2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKwog
ICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3Mp
KTsKIApAQCAtMTIxMywyMCArMTI2MiwzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVy
cyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9w
dGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3Ms
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0
LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTI1NSw5ICsxMzE5LDE1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgT3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIGJhc2UsIFBheWxvYWRXb3JkKTsKIAorICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
c3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKIApAQCAtMTI2NywxNCArMTMzNywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeUlkKE5vZGUqIG5vZGUpCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJl
Y29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChj
b2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAotICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MpOworICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAorICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKLSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAotICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9w
dGltaXplLAotICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6
Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1w
KCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAg
ICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisg
ICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0
dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQo
Z2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShz
bG93UGF0aCkpOwpAQCAtMzU4OSw5ICszNjcwLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
CiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IEdl
dFByaXZhdGVOYW1lKTsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG1fZ3Jh
cGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgc3BlY3VsYXRl
U3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwogCisgICAgT3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisK
KyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0K
KyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgIHNwZWN1
bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKwogICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NS
RXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0zNjAyLDE0ICsz
NjkzLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFs
KE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFz
ZSwgcHJvcGVydHksIHJlc3VsdC5yZWdzKCkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1bHRS
ZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wg
PSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFrZVNsb3dQYXRoQ2FsbCA9IFsmXShhdXRvIGJhc2Up
IHsKKyAgICBhdXRvIG1ha2VTbG93UGF0aElDQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICAg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
ICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdC5y
ZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAgYmFz
ZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKICAgICAgICAgICAgIHJl
c3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCkBAIC0zNjE3LDgg
KzM3MTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZh
bChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgIH07CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gYmFzZUlzS25vd25DZWxsCi0g
ICAgICAgID8gbWFrZVNsb3dQYXRoQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBh
eWxvYWRHUFIoKSkpCi0gICAgICAgIDogbWFrZVNsb3dQYXRoQ2FsbChiYXNlKTsKKyAgICAgICAg
PyBtYWtlU2xvd1BhdGhJQ0NhbGwoQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXlsb2Fk
R1BSKCkpKQorICAgICAgICA6IG1ha2VTbG93UGF0aElDQ2FsbChiYXNlKTsKIAogICAgIG1faml0
LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM2MzAsMjggKzM3MjcsNDAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2RlKQogewogICAg
IHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENl
bGxVc2U6IHsKKyAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDAp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNl
KTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5
cGU6OkdldFByaXZhdGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2Fz
ZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAw
KSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFz
ZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
ICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRl
TmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMzc1MCwyOSArMzg1OSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFs
PEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworCisgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICAvLyBXZSBlbWl0IHBy
b3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9uJ3QgbmVlZAogICAg
IC8vIHRvIGNoZWNrIGl0IGhlcmUuCiAgICAgYXV0byBwdXRLaW5kID0gbm9kZS0+cHJpdmF0ZUZp
ZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZp
bmUgOiBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQ7Ci0gICAgY2FjaGVkUHV0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOwor
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5v
ZGUpCiB7CisgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAg
ICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVSZWdz
IGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgR1BSUmVnIGJyYW5kR1BSID0g
YnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwg
YnJhbmRHUFIpOwpAQCAtMzc4NiwxNiArMzkwNiwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKIAogICAgIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdp
c3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRH
UFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0
ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BS
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wg
PSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJh
bmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAg
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShicmFuZEdQUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1By
aXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFu
ZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CkBAIC0zODA2LDkgKzM5MzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
U2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsK
KyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBicmFu
ZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAKQEAgLTM4MjAsMTYgKzM5NTQsMjQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogCiAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAg
ICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFu
ZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAK
ICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUsIE5vUmVzdWx0LCAKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAg
ICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwor
ICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0z
OTQ3LDIyICs0MDg5LDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNI
YXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZG
b3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcg
c2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAK
ICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygp
LCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJl
Z3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKKyAgICAgICAgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKG1faml0KTsKLSAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIHNsb3dDYXNl
cy5hcHBlbmQoc2xvd0Nhc2UpOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBwcm90b3R5
cGVSZWdzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJv
dG90eXBlUmVncyk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2YoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOwpAQCAtMzk3Myw2ICs0MTIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
c3RhbmNlT2YoTm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIApAQCAtMzk4MCwxMyArNDEyOSwxOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRo
aXMpOwogICAgICAgICAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJl
ZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsK
KyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5m
b0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBHUFJSZWcgdmFsdWVH
UFIgPSB2YWx1ZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHByb3RvdHlw
ZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgc2Ny
YXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGNvbXBpbGVJbnN0
YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhw
cm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAg
ICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiks
IEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNjcmF0
Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgCiAgICAgICAgIGJsZXNzZWRCb29sZWFuUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM5OTYsMTIgKzQxNTAs
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkK
ICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUs
IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAKKyAgICBPcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCBwcm90b3R5cGUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgCisgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFs
dWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVS
ZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC00MDE3LDcgKzQxNzcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAg
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9k
ZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIEludmFs
aWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUs
IHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRj
aEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAogICAgIGRvbmUubGluaygmbV9q
aXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMzA0
Nyw0NiArMTMyMDcsNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvSW5kZXhTdHJp
bmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVz
aChOb2RlKiBub2RlKQogeworICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAK
LSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVS
ZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5v
dERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNw
aWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
dmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1hY3JvQXNzZW1i
bGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBPcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Mg
PSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0
S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2Ny
YXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3Qs
IG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiB7CisgICAgT3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQ
UiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1
dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2Rl
LT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ3MTgsMTggKzE0
ODk2LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBu
b2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5k
IHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUg
PT0gRG9udFNwaWxsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3Rl
cnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1
c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMu
c2V0KHZhbHVlUmVncywgZmFsc2UpOworICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxz
ZSk7CiAgICAgfQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdp
biwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVy
cywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIp
LCB2YWx1ZVJlZ3MsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9H
UFIsCiAgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKQEAgLTE0NzM5LDkgKzE0OTE5LDE2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIGF1dG8g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNs
b3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIHZhbHVlUmVncywKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAg
bV9qaXQuYWRkUHV0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNzRjMTVlNjk3ZTJjYzMyZjZlOWIyZTdjMjVhNmUx
OGMxM2Q0MGQ2Yi4uODY4YmZmNzBmOTRmOGUyMTExYTQ2OGRkZWE0OTUzMjE3NDVmYjMwZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5
LDE2ICs3MTksMTYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxl
Q2hlY2tEZXRhY2hlZChOb2RlKik7CiAKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdp
biwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlm
aWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2Rl
LCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5l
ZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lz
dGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9H
UFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01B
TW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVt
cCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRH
ZXRCeVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0
eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNj
ZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0g
SklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRX
aXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJl
ZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29u
c3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wTGlzdCgpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRC
eUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxv
YWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxS
ZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhp
cyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2Fk
R1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJS
ZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENv
bXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJl
c3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5
bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwg
R1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0
JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAg
ICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZChOb2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xh
c3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0
cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1Zh
bHVlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQg
Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpT
VmFsdWVSZWdzIHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hH
UFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRD
b21waWxlcjo6SnVtcCgpKTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9k
ZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJl
ZyByZXN1bHRHUFQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6
SnVtcCgpKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNI
YXNJbnN0YW5jZShOb2RlKik7CkBAIC05NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxs
T3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJl
c3VsdCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNG
b3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAg
IGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFy
Z0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8CisgICAgICAgICFGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0
LAorICAgIHZvaWQ+CisgICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRk
cmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNG
b3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAg
IGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFk
ZHJlc3Mub2Zmc2V0KSk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9w
ZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewogICAgICAgICAvLyBEbyBub3Qg
cmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4KQEAgLTk4OCw2ICsxMDA4LDEz
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENh
bGwoZnVuY3Rpb24pOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwo
KTsKKyAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0K
KwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVG
b3JFeHRlcm5hbENhbGwoKTsKQEAgLTEwMTAsNiArMTAzNywyOCBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2Fs
bFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlmIChyZXN1bHQg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0
KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJl
c3VsdDIpCisgICAgeworICAgICAgICBhcHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBtX2pp
dC5zZXR1cFJlc3VsdHMocmVzdWx0MSwgcmVzdWx0Mik7CisgICAgfQorCisgICAgdm9pZCBhcHBl
bmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBhcHBlbmRD
YWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJlc3VsdFJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAg
YXBwZW5kQ2FsbFNldFJlc3VsdChhZGRyZXNzLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgcmVz
dWx0UmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
ZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmMTJmODZmMGQ2ODlj
NTQ2MDNlZjBkZjNjMDc3YTIxNGJlMWY5MzAzLi41MjY0NmE5NjFmZmI4NWJjNDlkY2ExMmY0Zjk1
MDAxNzc1M2Y3NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE2OCwxNSArMTY4LDE2IEBAIGJvb2wgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdHUFIsIEdQUlJlZyYg
cGF5bG9hZEdQUiwKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAg
Y2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCBy
ZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZpZXIsIHNsb3dQYXRo
VGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdH
UFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRH
UFIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBl
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKLSAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxv
YWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAg
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBi
YXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUg
c3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZv
R1BSKTsKICAgICAvLyBUaGlzIGlzIGEgaGFja3kgZml4IGZvciB3aGVuIHRoZSByZWdpc3RlciBh
bGxvY2F0b3IgZGVjaWRlcyB0byBhbGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdpdGggdGhlIHJlc3Vs
dCB0YWcuIFRoaXMgb25seSBoYXBwZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgR2V0QnlJZEZs
dXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVseSBleHBlbnNpdmUg
cmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5IGRvbid0IG5l
ZWQgdG8KICAgICAvLyB0cmlwIG92ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24uCkBAIC0yMDAsOCAr
MjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAKICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4
Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXpl
KCkpOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0g
ICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNW
YWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7CisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFn
R1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcsIHR5cGUpOwogICAgIAogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIyOCwxNSArMjI5LDE2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWRXaXRoVGhpcygKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BS
LCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1
bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdH
UFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJl
ZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxv
YWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBK
U1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhi
YXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIs
IHRoaXNQYXlsb2FkR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpE
RkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAor
ICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1Zh
bHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRo
aXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgCiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjM0MSw4ICsyMzQzLDggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7
CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6Okdl
dEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0
eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZh
bCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdz
LCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUu
Zm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykp
CiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVl
OwpAQCAtMzQwNSw3ICszNDA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIo
KTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5n
cHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJl
ZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywg
dGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC0zNDI1LDcgKzM0MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgbm90Q2Vs
bExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWUuanNWYWx1ZVJlZ3Mo
KSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQ
UiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5
bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWY4
YmEzODY4ZTg1ODdjMTRjMzc0MDJiOGJjMzg0MzA5YzgxMjBhMC4uMmU1ZDRhMDAyNjg4YmJkMDM5
ZTBmODk4OTY5ZWMwYWRhODM3YjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNDcsMTIgKzE0NywxMiBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9k
ZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1
bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2Rl
LCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3By
KCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUp
OworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIHN0
dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3Rl
cnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJS
ZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5n
T1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xNjAsMjYg
KzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICAvLyBXZSd2ZSBhbHJl
YWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGls
bCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAg
ICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNW
YWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9w
cmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICBzcGlsbE1vZGUs
IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIu
cmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAg
ICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAg
ICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZp
ZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21w
aWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0
JiBzbG93UGF0aFRhcmdldCkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQu
cmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVk
KGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xODcsMjAgKzE5NywzMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUgogICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNl
KTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldCh0aGlzR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lz
dGVycy5zZXQocmVzdWx0R1BSLCBmYWxzZSk7CisgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7
CiAgICAgCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRl
bnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAg
IERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwg
dGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAor
ICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERv
bnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIs
IHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQu
YWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTI2ODEsMTYgKzI3MDEsMjMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0KKyAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgcHJvcGVydHkpOworCisgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBz
dHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHku
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCisg
ICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KSk7CisKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYzsKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNv
cmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29k
ZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMjcwMCw4ICsyNzI3LDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VHUFIpKTsKIAogICAg
ICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWws
IHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAg
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpT
VmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0
cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcg
PSB0cnVlOwpAQCAtMjcxMiwxMSArMjczOSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1p
emUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAor
ICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CkBAIC0zOTg0LDkgKzQwMTksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlICYmIG5vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHRo
aXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpAQCAtMzk5NCwxNCArNDAzNiwyMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRo
aXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBz
dHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVt
cExpc3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
T3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTQwMTMs
NyArNDA2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1
ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwg
c3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCA4MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZmYmNmZDYyM2NhNWM1YzdkLi4zMjk4
NmE3NzAzZTgxNDA3ZDM0YzkzMTVlOWE3NmNhNTE2YWQ2NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYgKzM5NzgsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9u
SGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwog
ICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAg
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNy
ZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRM
SklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwg
SlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXND
ZWxsKQpAQCAtNDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0
aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2Fs
bCk7CkBAIC00MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9u
dW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTQxMzAsMTAgKzQx
NDUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJh
bXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFs
aWRHUFJSZWc7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwK
LSAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BS
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2Vs
bDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMgKzQxNzUsMjUgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0
KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihh
Y2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
c3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vz
c1R5cGUpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJS
ZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNj
ZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwg
c2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBtaWdodCB3YW50IHRv
IGxhdGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1MzgsMTAgKzQ1NjcsMTIg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBKUyBzZXR0ZXIgY2Fs
bCBJQ3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0aGlzLgogICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQo
cGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BT
Y3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUs
CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIHN0dWJJ
bmZvR1BSLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwg
SW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZh
bGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAg
LTUyMzksNiArNTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcikp
OwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwog
CiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBA
IC01MjU5LDEwICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFt
cy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBn
ZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJ
bmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVy
dHlJc1N0cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50MzI7CkBAIC01Mjgw
LDEzICs1MzI1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwu
bGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAot
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
ZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmpp
dCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwo
c2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5Myw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNr
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8g
MiA6IDE7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2Vw
dGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
IAogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSk7CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7Cisg
ICAgICAgICAgICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlkR1BSUmVnOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwpAQCAt
NTg3NCw3ICs1OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRW
YWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBwYXJhbXNb
Ml0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3By
KCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1z
WzJdLmdwcigpKTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3Jl
YXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiks
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+
OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3Mo
cmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5n
ZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAgICAgICAgICAgICAg
ICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJl
Z2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0
aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyMjQyLDggKzEy
MzE0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
U29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRj
aHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2lu
dEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIzMzIsMTIgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1w
TGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZU
TEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAg
ICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwxMiArMTIzNDgsMjQg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlv
bkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxs
KTsKQEAgLTEyNDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJh
aW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAg
ICAgCkBAIC0xMjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKICAgICAgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1w
OwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEyNTIzLDEwICsxMjYx
MCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5z
dGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVl
R1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHN0dWJJbmZvR1BSLCBzY3Jh
dGNoR1BSLAogICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmpl
Y3QpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwor
ICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBq
aXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRk
TGF0ZVBhdGgoCkBAIC0xMjUzNywxMiArMTI2MjYsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVH
UFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mb0dQUiwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVu
Y3Rpb24sIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAt
MTM5ODYsNiArMTQwODcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgR2V0
QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2UgbWlnaHQgZ2V0IHNvbWUgcGVyZm9ybWFu
Y2UgYm9vc3QgaWYgd2UgY2xhaW0gdGhhdCBpdAogICAgICAgICAvLyBjbG9iYmVycyB2b2xhdGls
ZSByZWdpc3RlcnMgbGF0ZS4gSXQncyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgdGhv
dWdoLCBzaW5jZSB0aGUKQEAgLTE0MDE0LDEwICsxNDExNiwxMiBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAg
ICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFt
cywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFt
c1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0u
Z3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDMwLDEyICsxNDEzNCwyNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNb
MF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0Jp
dHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBz
bG93UGF0aENhbGwpOwpAQCAtMTQwNjAsOCArMTQxNzYsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwog
CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5k
bGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9p
bnQpOwpAQCAtMTQwODMsMTAgKzE0MTk5LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0
ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52
YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3By
KCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigp
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZh
c3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0g
aml0LmxhYmVsKCk7CkBAIC0xNDA5OSwxMiArMTQyMTcsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFt
c1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCks
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRleCAyYWRk
NDk0YzUzMmFhZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRmLi5iNGU0NzU4ZTU4ZmIxZTc5MjZj
NmEwNzE4MzczMTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHdvcmRTaXplID0gODsKIAogU2xv
d1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKLSAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVn
IHJldHVyblJlZ2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVs
cGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJl
ZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6IG1faml0KGppdCkKICAgICAsIG1f
bnVtQXJncyhudW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdpc3RlcihyZXR1cm5SZWdpc3RlcikK
QEAgLTYzLDYgKzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4
dCgKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm1lcmdlKG1fYXJndW1lbnRSZWdp
c3RlcnMpOwogICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAg
ICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgaWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcp
CisgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KGluZGlyZWN0Q2FsbFRh
cmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLmZpbHRlcih1
c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxsaW5nQ29u
dmVudGlvblJlZ2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEyIEBAIFNsb3dQYXRoQ2FsbENvbnRl
eHQ6On5TbG93UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2Fs
bENvbnRleHQ6OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxs
VGFyZ2V0KSBjb25zdAogewotICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVT
ZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0KTsKKyAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50
UmVnaXN0ZXJzLCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKSBj
b25zdAoreworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIG51bGxw
dHIsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBhZGRyZXNzLm9mZnNldCk7CiB9CiAK
IFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKQEAgLTEzMyw2ICsxNDAsMjIgQEAg
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Nsb3dQYXRo
Q2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIENDYWxsSGVscGVyczo6
QWRkcmVzcyBjYWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXkgPSBrZXlXaXRo
VGFyZ2V0KGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCByZXN1bHQgPSBTbG93UGF0aENh
bGwobV9qaXQuY2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7CisKKyAgICBtX2ppdC5hZGRMaW5r
VGFzaygKKyAgICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHVuayA9
CisgICAgICAgICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwg
cmVzdWx0LmtleSgpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxs
KCksIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih0aHVuay5jb2RlKCkpKTsKKyAg
ICAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQogewogICAgIGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4MWYyNzdmNmI4MjE3YWM5ZjNmYTgw
YzEyYS4uZDZmMjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBmNDgyYTgzMWQ0YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCkBAIC01NCwxNSArNTQsMTcg
QEAgY2xhc3MgU2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2lsbCBiZSBhbiBSQUlJIHRoaW5neSB0
aGF0IHdpbGwgc2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sgc2l6ZXMgYW5kIG9mZnNldHMgYW5k
IHN1Y2guCiBjbGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBTbG93UGF0
aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVu
c2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlcik7CisgICAgU2xvd1BhdGhDYWxs
Q29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25l
ZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJn
ZXRSZWdpc3Rlcik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRleHQoKTsKIAogICAgIC8vIE5PVEU6
IFRoZSBjYWxsIHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVhZHkgZ29pbmcgdG8gYmUgbGlua2Vk
IGJ5IHRoZSBKSVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAgICAvLyBzbyB0aGVyZSBpcyBubyBu
ZWVkIGZvciB5b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAgICBTbG93UGF0aENhbGwgbWFrZUNh
bGwoVk0mLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpOworICAgIFNs
b3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CiAKIHByaXZh
dGU6CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0
aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0OwogICAgIAogICAgIFJlZ2lzdGVy
U2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsaW5nQ29udmVu
dGlvblJlZ2lzdGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRp
b24oCiB7CiAgICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAgewotICAgICAgICBTbG93UGF0aENh
bGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRU
eXBlcykgKyAxLCByZXN1bHRHUFIpOworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRl
eHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1
bHRHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8dm9pZChB
cmd1bWVudFR5cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAgICAgICAgY2FsbCA9IGNvbnRleHQu
bWFrZUNhbGwodm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0xMTcsNiArMTE5LDQ4IEBAIFNsb3dQ
YXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2Fs
bE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFy
Z2V0LAorICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQ
UiwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgU2xvd1BhdGhDYWxsIGNhbGw7
CisgICAgeworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVy
cywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFyZ3VtZW50cy4uLik7CisgICAgICAg
IGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7CisgICAgfQorICAgIGlmIChleGNlcHRp
b25UYXJnZXQpCisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+YXBwZW5kKGppdC5lbWl0RXhjZXB0
aW9uQ2hlY2sodm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2
bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCog
ZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyBy
ZXN1bHRHUFIsCisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgaWYgKGNh
bGxTaXRlSW5kZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAgIHJldHVybiBjYWxsT3BlcmF0aW9u
KHZtLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sIHJlc3Vs
dEdQUiwgYXJndW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9y
Q29kZU9yaWdpbihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0
YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNl
cHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIGNhbGxPcGVyYXRp
b24oCisgICAgICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3RlcnMsIGppdCwgY2FsbFNpdGVJbmRl
eEZvckNvZGVPcmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0
aW9uLAorICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCmluZGV4IDJkMzA2YzYyMDMz
YTgzOTA4ZTZmY2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdlODI2MWZkNDczNmIxZDMzNzJiZWY1
NTEzZWZlNWFhMzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewotICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdp
c3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9p
bnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0
ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKKyAgICBvdXQucHJpbnQoIjx1c2Vk
UmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwg
IiwgaW5kaXJlY3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0g
IiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3Vt
ZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJjN2NlODNkNzA1MjBlNzYxMzg0MmJk
ZDMzZC4uMGNlNjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0MWFlMTAwMGQxMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCkBAIC01MSwxMSAr
NTEsMTIgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxL
ZXkoCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQsIEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gY2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJz
LAotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0LCBp
bnQzMl90IGluZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhzZXQpCiAg
ICAgICAgICwgbV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFn
PigpKQogICAgICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMoYXJndW1lbnRSZWdpc3RlcnMpCiAg
ICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1faW5kaXJlY3RPZmZzZXQoaW5k
aXJlY3RPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYzLDEwICs2NCwxMSBAQCBjbGFz
cyBTbG93UGF0aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY2Fs
bFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIGNvbnN0IFJlZ2lz
dGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRSZWdp
c3RlcnM7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KKyAgICBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpcmVj
dE9mZnNldDsgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSB3aXRoQ2FsbFRhcmdldChGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRS
ZWdpc3RlcnMoKSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVz
ZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCks
IGluZGlyZWN0T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewog
ICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVlVGFnKQogICAgICAgICA6IG1fdXNl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgw
KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KERlbGV0ZWRWYWx1ZVRh
ZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkK
LSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05MywxOCArOTMs
MjAgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Vz
ZWRSZWdpc3RlcnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJzCiAgICAgICAgICAgICAmJiBtX2Nh
bGxUYXJnZXQgPT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAgICAgICAgICAmJiBtX29mZnNldCA9
PSBvdGhlci5tX29mZnNldDsKKyAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zm
c2V0CisgICAgICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0ID09IG90aGVyLm1faW5kaXJlY3RP
ZmZzZXQ7CiAgICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2Nh
bGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldDsKKyAgICAgICAgcmV0dXJu
IG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJn
ZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCArIG1faW5kaXJlY3RPZmZzZXQ7CiAg
ICAgfQogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRhcmdldDsKICAgICBSZWdpc3RlclNl
dCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZfdCBtX29mZnNldDsKKyAgICBwdHJk
aWZmX3QgbV9vZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBtX2luZGlyZWN0T2Zmc2V0IHsgMCB9
OwogfTsKIAogc3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWExMmFhZGRkMjc2YTkzMzEzM2MwYjM2
Yzg2NjEzYWQuLmQ5MjAyYTNkNDE5ZTVjYjJhNTllMzFmYmU4NWE0YWQ1M2JlNDk0MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRp
b25UaHVua0dlbmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKICAg
ICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVm
ZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdH
UFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVx
dWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwog
CiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAsMTMgKzIwMCwyMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9y
KFZNJiB2bSwgY29uc3QgUwogICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUp
OwogICAgIH0KICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQ
UkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIw
LCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpu
b25BcmdHUFIxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3Vt
ZW50UmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyID0ga2V5LmFyZ3Vt
ZW50UmVnaXN0ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBkb250
Q2xvYmJlci5zZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgcmVnaXN0ZXJDbG9iYmVyQ2hl
Y2soaml0LCBXVEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAgICBBc3NlbWJseUhlbHBlcnM6OkNh
bGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgQXNzZW1ibHlIZWxwZXJz
OjpDYWxsIGNhbGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGNhbGwgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5pbmRpcmVjdE9mZnNl
dCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZz
ZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0LnJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVy
bkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICBq
aXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7Ci0gICAgcGF0Y2hCdWZmZXIubGlu
ayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJGVEwgc2xvdyBw
YXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDM1NGY5
NTQ3YjRhYmYzMjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2QuLjZlYTY1NDU0YjhiMjVmODdkOWI2
YzdhNDlhNzdjY2Y2NTAzMTJjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAK
KyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxD
YWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICBh
dXRvIGNhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpJVENvbXBp
bGF0aW9uUHRyVGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1ZmZlci5hZGRNYWluVGhyZWFkRmlu
YWxpemF0aW9uVGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zv
cih2bSwgKmluZm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0
dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgICAgICAgICAgaW5mby0+
c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2
bSwgeyB9LCB7IH0pKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNh
bGwoY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
dmlydHVhbFRodW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMy
MGVhYTcyZDg5ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4OTdl
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3LDcg
KzIwNyw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewog
CiAgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5
cGVzIHBhc3NlZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBl
eHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9u
IHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxl
Y3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIx
OSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAg
fQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMs
IHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAg
IEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIp
CisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVu
c2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+
CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBn
LCBoPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5n
cHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGlu
YXRpb25zOwpAQCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGlj
IEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVy
LmNyb3NzRGVzdGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmco
R1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNl
c1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3Rp
bmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1
bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJl
Z0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsg
MSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
cmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291
cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVt
RlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJl
ZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsg
MSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVn
IGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhp
cyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9
IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3Nz
U291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMg
KyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BS
UmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJn
KEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4
dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1
bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2Vz
XSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJT
b3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNo
Tm9uQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJl
c3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJj
ZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQ
UlNvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+
IGFkZEdQUkV4dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJu
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJz
LCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQ
UlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
ICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBh
ZGRQb2tlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAg
ICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5z
aWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0
KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xh
bmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJl
Zzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3Rs
eSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUklu
Zm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5v
bkFyZ0dQUnMpOworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7
CiAgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAg
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEsMTUg
QEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BS
QXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxj
dWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWdu
ZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBj
dXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQog
Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BS
QXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVu
dCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBv
a2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tl
T2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRG
UFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSk7CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAg
LTM3Niw4ICszODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRp
b24gdGltZSBleHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJz
aXZlIHRlbXBsYXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBt
YXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRf
TVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlw
ZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSAr
NDAzLDMxIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3Vi
bGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJs
ZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxB
cmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4u
Lik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNW
YWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3Mg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0
ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0
LDggKzQzNSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1J
UFMpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAi
V2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2
OSwyNSArNDgwLDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVy
T2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyAr
IDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZyku
YWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2Vu
ZGlmCiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0g
ICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJn
cy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVO
VF9BUkdVTUVOVF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdz
LmFyZ0NvdW50KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMg
OiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwg
YXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVu
dHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBl
bmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3Vt
ZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwg
QXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0g
R1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAK
ICAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0g
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4u
Lik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSArIDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2Ug
KyAyKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSArIDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4u
Lik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VS
UkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisg
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBh
eWxvYWQsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2ln
bmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIo
KSk7CkBAIC01NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2Vt
Ymx5SGVscGVycyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2Ft
ZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJl
Z3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIo
KSk7CkBAIC01NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxX
QVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1
c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcs
IFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZl
SklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9u
LWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBv
cGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZl
ciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdl
IHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNo
IHNvdW5kcwpAQCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGlj
IEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFi
bGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJn
Pjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0g
NCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFy
Zz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09
IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVu
YWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
Pjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3Rk
Ojppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJf
dDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwg
c3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykK
ICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNw
ZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBh
bm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
ICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2Ft
ZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBz
dGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAg
fQpAQCAtNjM5LDggKzY1MCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1
cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5
ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQ
UlNvdXJjZXMsIEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+
KGFyZ1NvdXJjZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJT
b3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVi
bGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
dXNpbmcgRmlyc3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRp
b25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3Mg
Zm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4u
LgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hl
Y2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsK
KyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhp
cyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRo
aW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9u
VHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAi
QmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQor
ICAgIH0KIAotI2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJh
aXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdV
TUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJn
cykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQog
ICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdv
cmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1i
aXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hl
Y2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwg
MCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwg
MCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUq
Pjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMg
b25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGlu
Z3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMg
c2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwg
MCwgMCwgMD4oKSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9w
ZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNo
Tm9uQXJnKGZ1bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAg
fQogCi0jdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4o
QXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVz
cy5iYXNlLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9p
ZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmlu
ZGV4IGY3YWEzMjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLmFiMzRhMTQ1MDVl
YTE5NzVlMTEyODM2MWUzMDA4ZjQ1NWVmN2NmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKQEAgLTM4LDkgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1HQ0F3YXJlSklUU3R1
YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCitHQ0F3YXJlSklU
U3R1YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFr
UmVmZXJlbmNlcykKICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQor
ICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgLCBtX3dlYWtSZWZlcmVuY2VzKFdURk1v
dmUod2Vha1JlZmVyZW5jZXMpKQogewogICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFk
ZCh0aGlzKTsKIH0KQEAgLTQ5LDYgKzUyLDkgQEAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NB
d2FyZUpJVFN0dWJSb3V0aW5lKCkgeyB9CiAKIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKIHsKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKwogICAgIGlmICht
X2lzSmV0dGlzb25lZCkgewogICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVlZGVkIGZvciB3aGVu
IHRoZSBzeXN0ZW0gc2h1dHMgZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAgICAgLy8gdGhlIEpJ
VCBzdHViIHJvdXRpbmUgc2V0IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0IGFyb3VuZCB0byBk
ZWxldGluZwpAQCAtNzUsOSArODEsOSBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6ZGVs
ZXRlRnJvbUdDKCkKIH0KIAogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsCisg
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29k
ZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgRml4ZWRW
ZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIs
CiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBj
YWxsTGlua0luZm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAg
IDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3Zl
KHdlYWtSZWZlcmVuY2VzKSkKICAgICAsIG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9j
YWxsTGlua0luZm9zKFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiB7CkBAIC0xMDYsOSArMTEyLDkg
QEAgdm9pZCBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3Rz
SW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZpc2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5k
bGVyKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mIGNvZGUsIFZNJiB2bSwgIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0Nl
bGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYg
dm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxT
dHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3Qg
VmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9z
LAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2Fi
bGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFy
a2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3Zl
KGNhbGxMaW5rSW5mb3MpKQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2Rl
LCB2bSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIG93bmVyLCBjZWxs
cywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlv
bkhhbmRsZXIoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgLCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5k
bGVyLT5jb2RlT3JpZ2lucygpKQpAQCAtMTUyLDggKzE1OCwxMCBAQCB2b2lkIEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIH0K
IAogCi1SZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorUmVmPEpJVFN0
dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsCisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
JiYgd2Vha1JlZmVyZW5jZXMsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2VsbCogb3duZXIs
CiAgICAgYm9vbCBtYWtlc0NhbGxzLApAQCAtMTY1LDE4ICsxNzMsMTggQEAgUmVmPEpJVFN0dWJS
b3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBpZiAoIW1ha2VzQ2FsbHMpIHsKICAg
ICAgICAgLy8gQWxsb2NhdGluZyBDYWxsTGlua0luZm9zIG1lYW5zIHdlIHNob3VsZCBoYXZlIGNh
bGxzLgogICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpOwotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKHZtLCBjb2RlLCBXVEZNb3Zl
KGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkpOwogICAgIH0KICAgICAKICAgICBpZiAo
Y29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5q
aXRUeXBlKCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlv
bkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3Zl
KGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNh
bGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFu
ZGxlckNhbGxTaXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYm
IGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpjcmVhdGUoY29kZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpjcmVhdGUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVy
ZW5jZXMpKTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZv
cykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3du
ZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmgKaW5kZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFjYTlmZC4uMDVh
OGE2ZmM2YjQ2NTk3MDdiODYwMjI5ZWY3NjhkZDYzNzA1NTE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAKK2NsYXNzIEFj
Y2Vzc0Nhc2U7CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsK
IApAQCAtNTQsMTIgKzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3
aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVK
SVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91
dGluZVB0clRhZz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmKTsKICAg
ICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmPEpJ
VFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRp
bmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlz
LCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKSk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDkgQEAgY2xhc3Mg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAg
bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAKKyAgICBj
b25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gJm1fa2V5czsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiog
d2Vha1JlZmVyZW5jZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV93ZWFrUmVmZXJlbmNlczsg
fQorCiAgICAgdm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTgxLDYg
Kzg1LDkgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0
aW5lIHsKIAogICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2lzSmV0dGlzb25lZCB7IGZhbHNlIH07CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiBtX2tleXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJr
IG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3ICs5
NSw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGlu
ZSB7CiBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVK
SVRTdHViUm91dGluZSB7CiBwdWJsaWM6CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGlu
ZSgKLSAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+Jiwg
QmFnPENhbGxMaW5rSW5mbz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJr
aW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBA
IC0xMDksNyArMTE2LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEdDQXdhcmVKSVRTdHViUm91dGluZSBCYXNlOwogCi0gICAgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVj
dG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXgpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25I
YW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
LCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3Ry
dWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYs
IEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
KTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5h
bDsKIAogICAgIHZvaWQgYWJvdXRUb0RpZSgpIGZpbmFsOwpAQCAtMTI5LDkgKzEzNiwxMCBAQCBj
bGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1
YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogLy8gYXBwcm9wcmlhdGUuIEdlbmVyYWxseSB5b3Ugb25s
eSBuZWVkIHRvIHBhc3MgcG9pbnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQKIC8vIGFmdGVyIHRoZSBm
aXJzdCBjYWxsIHRvIEMrKyBvciBKUy4KIC8vIAotLy8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVh
dGVKSVRTdHViUm91dGluZSgKKy8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHVi
Um91dGluZSgKIC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mIGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBi
b29sIG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQyLDggKzE1MCw4IEBAIGNsYXNzIEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1h
cmtpbmdHQ0F3YXJlSklUCiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQg
dXAgd2l0aCBtb3JlIGNvZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1SZWY8SklUU3R1
YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGJvb2wgbWFrZXNDYWxscywKK1JlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91
dGluZSgKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9y
PFN0cnVjdHVyZUlEPiYmIHdlYWtSZWZlcmVuY2VzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGJvb2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExp
bmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNl
cHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdD
YWxsU2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1
YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1
MTgwMDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApA
QCAtNDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpy
MTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyBy
ZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJl
Z2lzdGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdU
NSAocmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVy
czo6eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3
ID0gQVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVn
VDkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVn
aXN0ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5W
YWx1ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6Ongy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGVlMWE0ZTM3ZmZjMjc3ZGNkOTZkNGIw
MjJiNzcyN2M1YmJmNzQyM2QuLjliODIzZWM4NDIzYTJlZjNmY2U5YjNiMzBhMDBiNjMxM2MzNjkx
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkzMSwxMiArOTMxLDEyIEBAIHZv
aWQgSklUOjpsaW5rKCkKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29tcGlsYXRp
b25JbmZvIDogbV9ieVZhbENvbXBpbGF0aW9uSW5mbykgewogICAgICAgICAgICAgUGF0Y2hhYmxl
SnVtcCBwYXRjaGFibGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5ub3RJbmRl
eEp1bXA7Ci0gICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4gbm90SW5kZXhKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxl
Tm90SW5kZXhKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKIAogICAgICAgICAgICAg
UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJhZFR5cGVKdW1wOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRj
aGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9
IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25P
ZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwog
CkBAIC05NDUsMTQgKzk0NSwxOSBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRv
IHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5zbG93UGF0aFRhcmdldCkpOwogCiAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5i
eVZhbEluZm8tPnNldFVwKAotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCwKLSAgICAgICAg
ICAgICAgICBiYWRUeXBlSnVtcCwKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLAog
ICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKICAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCiAgICAgICAgICAgICAg
ICAgZG9uZVRhcmdldCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwKICAgICAg
ICAgICAgICAgICBzbG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICAgICAgYnlWYWxD
b21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNsb3dQYXRo
VGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgICAg
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IHNs
b3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbElu
Zm8tPm1fbm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOworICAgICAgICAgICAgICAgIGJ5VmFs
Q29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApp
bmRleCA3NWM5Y2I5NmIxMzY1MzJmMDg2MWYyZjBhODA1OGVmYzZiMDU2YjI0Li45ZjMxNjVkNTVi
OGJkZmRmMTAyYmZhZjhhZDEzOGU2ODFhYWRjZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
QEAgLTI5NCw2ICsyOTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb25DYWxsOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsKEFkZHJl
c3MgZnVuY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24sIE9wZXJh
dGlvblB0clRhZyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk1LDM5
ICs0MDAsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGludC1j
aGVja2VkIGFuZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAgICAg
Ly8gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2FzZXMu
IEZhbGwtdGhyb3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdUMCwg
YW5kIGl0IGlzIG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
KSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMy
U2hhcGUpOyB9Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250
aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIElu
ZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAgSnVt
cExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwor
ICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsgcmV0
dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJ
bnQzMlNoYXBlKTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOworICAgICAgICBK
dW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENv
bnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7Cisg
ICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwg
SklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKIAogICAg
ICAgICAvLyBQcm9wZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29u
dGFpbnMgaW5kZWNpbmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5v
dCB5ZXQgbG9hZGVkLiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVy
by1leHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHBy
b2ZpbGVkLgogICAgICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJ
bnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmlj
Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91
YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgYnlWYWxJbmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVt
aXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
LCBieVZhbEluZm8pOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3Vz
U2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGluZGV4
aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5
VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0
QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAg
ICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFs
KE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1
bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgogICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CkBAIC04NzAsMTMgKzg3
NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPik7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhBZGRyZXNzKTsKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1Bh
dGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlm
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQ
cm9maWxlKE1ldGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRh
PgorICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
KTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBAIC04ODYs
NiArODk1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihB
ZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAg
ICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRp
b25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAg
ICAgIHN0cnVjdCBpczY0Qml0VHlwZSB7CkBAIC05MDYsNiArOTIzLDE3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJh
dGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBj
YW5ub3QgdXNlIHN0YW5kYXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRo
YW4gNjQgYml0cy4KKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5h
bWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5
cGUoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAg
IH0KICNlbHNlIC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFy
Z3MuLi4gYXJncykKQEAgLTkxMyw2ICs5NDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJn
ZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtOTIzLDYgKzk1OCwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVf
aWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAg
ICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNz
IHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7
CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBl
Pih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0K
KwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBB
cmdzPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3Vs
dChPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4u
LiBhcmdzKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRl
eCAxYjQ5ZDQ4OWRhYTJiNzg2YWI3OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMwYzdmNzY3
MTM3OTQ3MGU0ZGQ5ZDRkYTgzNjVkYTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKQEAgLTM5OCw4ICszOTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9v
cGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1Qx
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtNDMyLDggKzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Qwog
ICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
PihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0Lmxpbmso
dGhpcyk7CkBAIC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHBy
ZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5p
bXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiks
IEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
Qnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywK
KyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJS
ZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5
SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdl
bik7CkBAIC00OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlv
bkRvbmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRj
aDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
LSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpA
QCAtNTI4LDE2ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAg
ICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAg
ICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwog
CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+
ZG9uZS5pbXBsKCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFBy
b2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBu
b3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAg
ICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
ZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJl
ZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGRvbmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNo
ZWNrcG9pbnQoanVtcCgpKTsKQEAgLTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0MKIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1
bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3Bw
CmluZGV4IGVjYzRlNWYzZmY2ZDA3Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFm
ZGNhYzc4MmFjOWM4NzRlNTUwYWZmYjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAg
ICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLAogICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpKSksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihpZGVudC0+aW1wbCgpKSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JH
UFIsIHBheWxvYWRJdGVyYXRvckdQUiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZh
bGlkR1BSUmVnLAogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAg
ICAgICAgcHJlc2VydmVkUmVncy5hZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAg
IEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0
YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25l
UmVncywKKyAgICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBt
X2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAg
ICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRl
eChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3Bl
cnR5TmFtZXMtPnZhbHVlLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVy
UmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdz
LAorICAgICAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCmluZGV4IDRjZTc3ZjViMGNlODk5NTBhZmMxZTUyZjQzNTY1MTQ1NjUxYzdiOTguLjE1YzFk
N2UwOTg4ZDgzZTE0MGQ0MzE5ZjQ2MjM0MTA4ODJiNWJmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7
CiBjbGFzcyBWTTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwK
LSAgICBIb3N0Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVK
SVQsCi0gICAgREZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0
Q2FsbFRodW5rID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJh
c2VsaW5lSklUID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIx
MDEsCiB9Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7Citz
dGF0aWNfYXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9m
SklUVHlwZSk7CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SklUQ29kZT4gewogcHVibGljOgpAQCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRDb2RlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGpp
dFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6
OkJhc2VsaW5lSklUOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElDKEpJVFR5
cGUgaml0VHlwZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGppdFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwogICAgIHZp
cnR1YWwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhf
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNkZTY0NjIy
Y2UuLjJmZThiOWI4ZTMxYzhiZGJhMzcxNDJhNmY2MDg3ODRiZGI0M2ZkYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CkBAIC00Myw5ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHVi
SW5mbygpCiB9CiAKIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CisgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9jb2RlQmxv
Y2sgPyBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdpbikgOiBn
YXJiYWdlU3R1YkluZm8oKTsKICAgICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNp
dGU7CkBAIC02MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6Zmlu
YWxpemUoCiAKICAgICBtX3N0dWJJbmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5zbG93UGF0
aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9z
bG93UGF0aENhbGwpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkK
KyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOwogICAgIG1fc3R1Yklu
Zm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KG1fc2xvd1BhdGhCZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJ
VEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAot
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9j
aywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NU
eXBlLCB1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZh
bHVlKQogewogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJ
bmZvLT5yZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
VGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJZEdlbmVy
YXRvcjo6SklUQnlJZEdlbmVyYXRvcigKIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNT
RVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFs
aXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8t
PnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2l6ZSkK
IHsKKyAgICAvLyBXZSBnZW5lcmF0ZSB0aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhl
ciBTaGFyZWRJQyBpcyBlbmFibGVkIGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2UgSW5saW5l
QWNjZXNzCisgICAgLy8gZm9yIHRoZSBwZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9zdGFydCA9
IGppdC5sYWJlbCgpOwogICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVm
ZmVyKCkuY29kZVNpemUoKTsKICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7CkBAIC0x
MDEsOSArMTA2LDkgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24o
TWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0QnlJZEdl
bmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwg
c3R1YkluZm9HUFIpCiAgICAgLCBtX2lzTGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51aWQoKSA9
PSBjb2RlQmxvY2stPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7CkBAIC0x
MTUsOSArMTIwLDkgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykKLSAgICA6
IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAg
IDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZh
bHVlLCBzdHViSW5mb0dQUikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2Fk
R1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BSKCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBAQCB2b2lk
IEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQogfQogCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9y
KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLAotICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0
VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaCwgCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkK
LSAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAg
IDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5m
b0dQUikKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2lu
ZChwdXRLaW5kKQogewpAQCAtMTcxLDE0ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpK
QyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJl
ZyBzY3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJl
Z2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxz
ZTsKICAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7
CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1
YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IEFTU0VSVChiYXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzMCBAQCBKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZQogdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwo
KTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJ
VFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAg
PSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12
b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0g
ICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5h
bGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKIH0KIAotSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
Y3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGpp
dFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmln
aW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMp
CiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICBB
U1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9z
dHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJl
Z3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0g
c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdH
UFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBi
YXNlLnRhZ0dQUigpOwpAQCAtMjIzLDIyICsyMzMsMjUgQEAgSklURGVsQnlJZEdlbmVyYXRvcjo6
SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3IKIHZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRo
SnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0
LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVt
cCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5l
cmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBz
bG93UGF0aCkKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYg
ZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRo
SnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQ
YXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4o
bV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBh
dGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2Nv
ZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIEpJVEluQnlJ
ZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVEJ5
SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6
SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9j
aywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVn
aXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFy
ZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVO
VVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwpAQCAtMjUxLDE1ICsyNjQsMTUgQEAgdm9pZCBKSVRJ
bkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0K
IAogSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBH
UFJSZWcgc3R1YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIs
IGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJh
dG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OwogICAg
IG1fc3R1YkluZm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBlOworICAgIG1fc3R1Yklu
Zm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1Yklu
Zm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTI3OSwyMSArMjkyLDI0IEBAIEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAKIHZvaWQgSklU
SW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogewotICAgIG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9zdGFydCA9IGpp
dC5sYWJlbCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7Cisg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVy
czo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisg
ICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUg
PSBqaXQubGFiZWwoKTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsCi0gICAgICAgIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1f
anVtcCkpOwotICAgIAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgu
bG9jYXRpb25PZjxOb1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgQmFzZTo6ZmluYWxp
emUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRo
U3RhcnRMb2NhdGlvbjsKIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywg
aml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lz
dGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQocmVzdWx0KQogewpAQCAt
MzAyLDYgKzMxOCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVy
dHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIg
PSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBz
dHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VU
YWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVz
dWx0LnRhZ0dQUigpOwpAQCAtMzEyLDIwICszMjksMjMgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6
OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGpp
dC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1
bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdl
bmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXIm
IHNsb3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0
LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
KyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9z
dHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQotICAgIDogQmFzZShjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3Rl
cnMpCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBl
LCB1c2VkUmVnaXN0ZXJzKQogewogICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6
OkNoZWNrUHJpdmF0ZUJyYW5kIHx8IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0
ZUJyYW5kKTsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsK
QEAgLTMzMyw2ICszNTMsNyBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogICAgIG1fc3R1Yklu
Zm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLmJy
YW5kR1BSID0gYnJhbmQucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0g
YmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFn
R1BSKCk7CkBAIC0zNDMsMTYgKzM2NCwxOSBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogdm9p
ZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93
UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAg
IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJs
ZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRo
LCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
CiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0g
ICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0
dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2Iy
NTUxOTU1NDhiMGYyZWI2NTEuLmI2OTA4Nzg1NzY0MzhkOTdkOTk0MzBhYzYzZDkxN2JjMmVjOTNm
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBT
dHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51
bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdDsKIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewogcHJvdGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBD
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycyk7CiAgICAgCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBj
bGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29k
ZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogbV9zdHViSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2Rv
bmU7CkBAIC03Nyw4ICs3OCw4IEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAg
IEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENv
ZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVibGljOgog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CkBAIC0xMDEsMTMg
KzEwMiwxMyBAQCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07
CiAKLWNsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7
CitjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogcHVibGljOgogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNz
VHlwZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImKTsKIApAQCAtMTE1LDI2ICsxMTYsMjYgQEAgY2xhc3MgSklUR2V0
QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBib29sIG1faXNM
ZW5ndGhBY2Nlc3M7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBw
dWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhp
c1JlZ3MpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHRoaXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRQdXRCeUlkR2VuZXJh
dG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkK
ICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAg
ICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzIGJhc2UsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsMTQgKzE0NiwxNCBA
QCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Igewog
ICAgIFB1dEtpbmQgbV9wdXRLaW5kOwogfTsKIAotY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5n
IEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVREZWxCeVZh
bEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVC
bG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNv
bnN0CiAgICAgewpAQCAtMTcwLDE0ICsxNzEsMTQgQEAgY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0
b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklURGVsQnlJZEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVREZWxC
eUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklU
RGVsQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBD
b2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQ
UlJlZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgp
IGNvbnN0CiAgICAgewpAQCAtMTk1LDQyICsxOTYsNTAgQEAgY2xhc3MgSklURGVsQnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRJbkJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRJbkJ5SWRHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklU
SW5CeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUs
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHB1
YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiAgICAgSklU
SW5zdGFuY2VPZkdlbmVyYXRvcigpIHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAgICBHUFJS
ZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyLAorICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKKyAg
ICAgICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHByb3RvdHlw
ZUlzS25vd25PYmplY3QgPSBmYWxzZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJik7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5p
c1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisK
ICAgICB2b2lkIGZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1
ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKIAogcHJpdmF0ZToKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX2p1bXA7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3Rh
cnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9
OwogCi1jbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yOwogcHVibGljOgogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjUxLDE0ICsyNjAsMTQgQEAg
Y2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwog
fTsKIAotY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFz
ZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRU
eXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKaW5kZXggZTc5Y2QzNmVmNTdkN2JkY2VjZTE3NjhkMDU4OGFmZWVkODg4NTAxNS4u
MjhhNjQzMzdlMmYwOGY1ZjIwYWRhNzM3YmI3NmJjYjQ3MzYyMjhmMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0
TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlN
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAg
ICBzd2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHJldHVy
biBlbWl0SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJl
dHVybiBlbWl0SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZv
KTsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1
cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9h
ZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRD
b250aWd1b3VzOgotICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3Vy
cmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQXJyYXlT
dG9yYWdlOgotICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3Ry
dWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1
cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0xMjgsNiArMTI4LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0
IEZ1bmN0CiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRh
dGVUb3BDYWxsRnJhbWUoKTsKKyAgICBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICBleGNlcHRp
b25DaGVjaygpOworfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gZnVuY3Rpb24pCiB7CkBAIC0xNTcsNiArMTY0LDE2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVuY3Rpb24s
IFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1
cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBNZXRhZGF0YT4KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjph
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1l
dGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5j
dGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxODgsMTkgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgTWV0YWRhdGE+CitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwg
QWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1ZUdQUjIs
IHJldHVyblZhbHVlR1BSKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCBy
ZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlu
a1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
ciwgVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Q2VsbChyZWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
YmQ1NWEzZDA1MTZkNDZiNjdhZTU5N2I2YzNhNGY1ODdiNWZkZDczMC4uNDVhMDc1MWM5NmM2YTJh
Y2U4YjY0ZmYwNGYzNDkwM2NkZDFmNzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC0xNjQsMTMgKzE2NCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0
YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAg
ICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdU
NSwKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQo
Z2VuKTsKICAgICAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0xODYsNyAr
MTkxLDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VPZkdlbmVy
YXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIs
IHJlZ1QxKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+KEFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAgIH0g
ZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0
aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzMxLDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlz
dCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFy
cmF5TW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JB
cnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIp
OwogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkp
KSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsxNzQ2LDEz
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8q
IGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1
ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhl
ZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0
aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBi
eVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7Cisg
ICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5R2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxS
ZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0
clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE3NjksMTEgKzE3ODYsMTIgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMg
bGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVt
aXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7Cisg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3Ry
dWN0aW9uLCBtb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIAogICAgIG1vdmUoVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogCi0gICAg
YWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBA
IC0xNzk5LDcgKzE4MTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YnlWYWxJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248
ZGVjbHR5cGUob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRz
dCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVn
VDEsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZh
bEluZm8pOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25J
bmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25J
bmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA4ZGIzNTll
YmQ4Y2QwNTY2OTczYjg2M2M0ODY3NDFhN2ZhZTIyNDVlLi40ZDc0MTI2YmUxZTNkZTQzMGQzYTZk
OWNiN2ZkZGI2ZGM4NmY3ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCkBAIC0xNjIsMTMgKzE2MiwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAg
ICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICBJbnZh
bGlkR1BSUmVnLAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0U3RvcmVC
b29sKGRzdCwgcmVnVDApOwpAQCAtMTE4Myw3ICsxMTg1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRy
ZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxp
a2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0
TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7
CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudElu
c3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xMTk4LDcg
KzEyMDAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywg
cGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFz
X2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmlu
ZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwog
ICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRk
cmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlHZW5lcmljKSk7CiB9CiAKQEAgLTEyMzQsNyArMTIzNiw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVy
IHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5
cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMigxKSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNjAzZjkzYTlhZmYy
MWQ5ZGQ0YjFiYjQ5Nzk5YzljMmEzYWNmYzU3Li4xNmJkYTA5MWIwNTNjMTAzOWRkMzVlY2E3NTEx
YTRhYjc5OGViNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKQEAgLTEwMDIsNyArMTAwMiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAg
IGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8g
RG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsK
KyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFs
SW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwog
ICAgIH0KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9
CkBAIC0xMDk0LDcgKzEwOTcsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAo
cmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0
IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7
CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZh
bEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKSk7CkBAIC0xMjc4LDcgKzEyODQsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCoKICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6
R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAg
ICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5
UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNo
YXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3Rp
UGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERS
RVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29w
ZS5yZWxlYXNlKCk7CkBAIC0yNTY3LDcgKzI1NzYsMTEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAo
SlMKICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAg
ICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAg
ICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyks
IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNz
KFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5R2VuZXJpYyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjQ0NjdlOWEyNWUxNDc3
ZTFlYzA2MzVkNDA5NzU0ZDhlNzUzOTJlZi4uZDE3MmVkZjExN2Y3YTgzMWFlYzczZTllNGRkMGY0
YTYzMzQ1ZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKQEAgLTY5LDEyICs2OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICAgICAgSklUR2V0
QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3Vs
dFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZXN1bHRSZWdzLCByZWdUMik7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudElu
dChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMy
ID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNsb3dD
YXNlKCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRS
ZWdzKTsKQEAgLTkzLDggKzk2LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlW
YWxJbmRleDsKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxz
W21fZ2V0QnlWYWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTExOCw3ICsxMjEsMTEg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBy
b2ZpbGUpLCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAg
ICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsK
QEAgLTEzOCw3ICsxNDUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC0xNTcsOSArMTY1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5l
cmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAg
IC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0
aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBj
bGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3By
ZXBhcmVDYWxsIik7CkBAIC0xODIsMTAgKzE5MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdl
dEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIp
LCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRk
U2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdz
KTsKQEAgLTIwMSw4ICsyMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4OworICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgr
K107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCkBAIC0yMjYsNyArMjM3LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
Ci0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSht
ZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjQ1LDcgKzI2MCw4IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVf
cHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0
KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5ICsyNzks
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFp
bCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBv
ZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAg
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKQEAgLTI4NSwxMCArMzAyLDEz
IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2VHUFIsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCByZWdUMik7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAg
ICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdl
bik7CiAKICAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Yg
c2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCkBAIC0zMDIs
OCArMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKIHsKICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsr
bV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJ
bmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTMyOCw5ICszNDcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxk
ZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVz
LCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
KT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAj
ZW5kaWYKKwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKQEAgLTM0NiwxMCArMzcwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1Nyw4ICszODQsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudAogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNb
bV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0lu
ZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRl
QnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpA
QCAtMzgzLDcgKzQwOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6
dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgZWxz
ZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9w
dGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCkBAIC00MTUsOCArNDQ1LDE0IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogICAgIFBhdGNoYWJs
ZUp1bXAgbm90SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0ludGVnZXJDb25zdGFudCkg
ewotICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOwot
ICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGF1dG8gaXNJbnQz
MiA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEp
OworICAgICAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICB9CiAgICAgICAg
IC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgICAgIHplcm9FeHRlbmQzMlRv
V29yZChyZWdUMSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwyMyArNDY4LDI0IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAg
ICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8p
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBD
UkFTSCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd0Nhc2UoYmFk
VHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dD
YXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC00NTcsNyArNDk0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCitKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhp
bmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpA
QCAtNDY1LDcgKzUwMiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1
b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogICAgIAogICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgICAgICAgICBmYXJK
dW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAgICAKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1w
IG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdU
MiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MTUsNyArNTYxLDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKQEAgLTUyMyw3ICs1NjksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAKICAg
ICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBi
cmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwor
ICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBl
SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVj
dFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9y
YWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7
CiAKQEAgLTU2OCw4ICs2MjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5
VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdUMSk7CiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5
TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0
aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2Ug
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1
Y2UgY29kZSBzaXplLgpAQCAtNTgwLDcgKzYzNSwxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQs
CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgZ2VuLnNsb3dQYXRoSnVt
cCgpLmxpbmsodGhpcyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4u
c3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9u
PGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFy
Z0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgp
KTsKIApAQCAtNjM4LDggKzY5OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBhdXRvKiBvcGVy
YXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoaXNEaXJl
Y3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcyMSw4IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZt
KTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5ICs3NDAsMTAg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbElu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNl
CisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsKQEAgLTY5Niw4ICs3NjIsMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1w
KCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIFBhdGNoYWJsZUp1bXAgZmFz
dFBhdGhKbXA7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJ
bmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAg
ICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgICAgICBhZGRTbG93Q2FzZShm
YXN0UGF0aEptcCk7CisgICAgfQogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAg
IApAQCAtNzQzLDcgKzgxNCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxs
IGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcgKzgz
Niw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKQEAgLTc3OSw5ICs4NTUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5m
b0dQUiwgcHV0S2luZEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAot
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0
byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRo
ZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRk
cmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBP
cGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25h
bWVfcHJlcGFyZUNhbGwiKTsKQEAgLTg0NiwxMSArOTIzLDE0IEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
IG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVl
UmVncyhyZWdUMCkpOwpAQCAtODk4LDE1ICs5NzgsMTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2wKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBl
Y21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJl
Z1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJl
Z1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTkx
OCw3ICsxMDAxLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwpAQCAtOTM1LDkgKzEwMTksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8K
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVw
YXJlQ2FsbCIpOwpAQCAtOTU2LDEwICsxMDQxLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93
Q2FzZSgpOwogICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTEwMDgsMTUgKzEwOTYsMTggQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFN
b2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICBl
bHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChy
ZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwot
CiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCkBAIC0xMDI4LDcgKzExMTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwog
CiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkgKzExMzcsMTAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRh
aWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8g
b2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAg
ICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xMDY4LDggKzExNjEsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFj
Y2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRS
ZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTExMTAsNyArMTIwMywxMSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9w
dGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNh
bGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsxMjMwLDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAK
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywg
cmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTc2LDcgKzEyNzMsMTEgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJl
Y3RPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMDgsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlw
ZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1Qx
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtMTIzMyw4ICsxMzM0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhp
cy5hcHBlbmQoZ2VuKTsKQEAgLTEyNzUsNyArMTM3NiwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCBy
ZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjk0LDcgKzEzOTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAK
LSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MjsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzExLDkgKzE0MTcsMTAgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0
bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0
byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1w
KEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xMzU0LDcgKzE0NjEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0
aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAog
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAg
LTEzNzMsNyArMTQ4NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKQEAgLTEzOTIsOSArMTUwNCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBh
cmVDYQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRo
aXNHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5
IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8g
dGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1MzEsMTAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRL
aW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNDY1LDcgKzE1NzcsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChnZW4u
c2xvd1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogCkBAIC0xNDgxLDcgKzE1OTcsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MTcsMTAgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVH
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRp
cmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5y
ZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1
dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjM5LDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJ
VEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU2NCw3ICsxNjgyLDExIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9
IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJl
dHVyblZhbHVlR1BSKTsKQEAgLTI3NTQsOCArMjg3Niw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2lu
ZCwKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwg
ZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1QxLCBlY21h
TW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI3NjUsNyArMjg4NywxMyBA
QCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5
dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5
IHByZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJl
bG9hZCB0aGUgdGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Cisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRl
Y2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0Jp
dHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZv
KCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0y
ODE3LDI5ICsyOTQ1LDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAgICBzd2l0Y2gg
KGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJs
ZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERv
dWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAg
IG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdl
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJy
YXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBu
ZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5cGVGb3JKSVRB
cnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQotICAgICAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFy
cmF5IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJyYXkgLyBCaWdV
aW50NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAgQVNTRVJUKGlz
RmxvYXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRBcnJh
eVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0
ciwgdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg2Niw4ICsy
OTk0LDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBtX2NvZGVCbG9j
aywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAgICAgIkJhc2Vs
aW5lIHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgp
KTsKICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFk
VHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
R2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklU
T3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVj
aWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KQEAgLTI5MDYsOCArMzA0MCwxMyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUmV0dXJuQQogICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNh
Y2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHBy
b3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jayku
ZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5z
dHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hK
dW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJl
c3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1
cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0
ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAg
ICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA4MywyMCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5
VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdp
dGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVw
IiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0
eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1Yklu
Zm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRy
VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlW
YWxHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9
IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQog
Ly8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlv
biB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4
cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwg
UmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0
ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFs
RGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0
ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTY4LDcgKzMxMTIsMTYgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBl
ID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsK
KyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJl
Y3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJs
ZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworCiAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0
Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0
eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7
CiAgICAgbG9hZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQp
LCBmcFJlZ1QwKTsKQEAgLTI5NzcsNyArMzEzMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAg
ICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1
b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4
aW5nVHlwZSBleHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3Vz
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk5NSw3ICszMTQ4LDE2
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAK
LSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVz
dGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAg
ICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVz
dGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRy
VGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGlu
ZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVk
SW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJm
bHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJbmRleChz
Y3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDA0LDcgKzMxNjYs
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAK
LUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5
U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVy
SUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzAyMyw3ICszMTg1LDE2IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMy
KC1BcnJheVN0b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJy
YXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJ
bmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihCZWxvd09y
RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBB
cnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mo
JmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRy
dXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkp
OworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUs
IHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0
b3JhZ2VTaGFwZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3JhZ2U6OnZl
Y3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMzAzNSw3ICszMjA2LDcgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50
VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMDYwLDcgKzMyMzEs
MTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVj
dFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZv
clR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRk
cmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJU
YWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFy
bHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
ZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7
CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJl
bG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZC
b3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKQEAgLTMxMTEsNyArMzI5Miw3IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMxMzYs
NyArMzMxNywxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8g
aXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0z
Mih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJz
b2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlw
ZSkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUo
dHlwZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJh
bmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2Zp
bGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIyYzc3MDQy
ODlhYmIwODJmOWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMGUzYmU2YWY4NDJjZTlkMDI2MjEzNWRl
ZDU2YzliMGFlYmRlMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRH
UFIoKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRh
Z0dQUigpKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAot
ICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNlUmVncywg
cmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
ZGVsQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQ
UigpKTsKIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAg
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1
bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTI1Nyw4
ICsyNTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWws
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcp
OwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJl
Z3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywgSW52YWxp
ZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CkBA
IC0zOTMsOCArMzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVn
cywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJl
Z3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVn
cywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxp
ZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBl
bmQoZ2VuKTsKQEAgLTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1v
ZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsK
ICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZh
bChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91
c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAtNTExLDcg
KzUxMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6
SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlw
ZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwpAQCAtNTIwLDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0Nv
bnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5mbyk7CiAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKENvbnRpZ3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNTcyLDcgKzU3Myw3IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLUpJ
VDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
QEAgLTU4MSw2ICs1ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbEluZm8pOwogICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihB
cnJheVN0b3JhZ2VTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNjYwLDggKzY2Miw4IEBAIHZv
aWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVn
VDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vz
c1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC03MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5
cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc0OCw4ICs3
NTAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC03OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpLCBJbnZh
bGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5k
KGdlbik7CkBAIC04MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcs
CiAgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1
dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVEluQnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywg
KmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9pbkJ5SWRz
LmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5o
CmluZGV4IDg4MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2Y2RmYWIuLjVhNTcyOGJi
ZTg3M2ZmNDY5MmJlNDc4NjhiYjVjNzAyOGJiZTRiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorI2lmIFVTRShKU1ZBTFVF
NjQpCit1c2luZyBTdHJ1Y3R1cmVJRCA9IHVpbnQzMl90OworI2Vsc2UKK3VzaW5nIFN0cnVjdHVy
ZUlEID0gU3RydWN0dXJlKjsKKyNlbmRpZgorCitjbGFzcyBBY2Nlc3NDYXNlOworCiAvLyBUaGlz
IGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFuZCBhbHNvIHRoZSBjbGFz
cyB5b3Ugd2FudAogLy8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkgaWYgeW91IGhhdmUgYSByb3V0
aW5lIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJvbSB0aGUgR0MuIElmIGluIGRv
dWJ0LCB1c2Ugb25lIG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVzLiBCdXQKQEAgLTk4LDYgKzEw
Niw5IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lIHsKICAgICAvLyBkZXN0cm95ZWQuCiAgICAgdmly
dHVhbCBib29sIHZpc2l0V2VhayhWTSYpOwogCisgICAgdmlydHVhbCBjb25zdCBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIHZpcnR1YWwgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+KiB3ZWFrUmVmZXJlbmNl
cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2
ODYyNzNkZGE4MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4uNDRjZTZmM2JiNDU0NjMwNDk2NmM1
YWQ0N2ViYjRjNWYwMzg5ODM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAi
Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENv
ZGVPcmlnaW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxs
KiBvd25lciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8s
IGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJy
YXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShj
b2RlUmVmLCB2bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSwgeyB9
LCB7IH0pCiAgICAgLCBtX3ZhcmlhbnRzKGNhc2VzLnNpemUoKSkKICAgICAsIG1fZmFzdENvdW50
cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggOTA1ZjhkN2YyYWZiZjViMDA2MWVmM2Q3NWY3ZjY2NmViZDFkY2EwNC4uNzUxYjcz
ZGRlMTc0NTlkMDdhZjU2ZmJlZWIzZTc0MTM0MjJhYTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC03MSw4ICs3MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBj
YWxsKQorc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRh
cmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQog
eworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJldHVybiBzdHVi
SW5mby5tX3Nsb3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFnPigpOworICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCA9IHN0dWJJbmZvLm1fc2xvd1Bh
dGhDYWxsTG9jYXRpb247CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+
aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAgICBGdW5jdGlvblB0cjxKSVRU
aHVua1B0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PEpJVFRo
dW5rUHRyVGFnPihjYWxsKTsKQEAgLTEwNSw2ICsxMDgsMTUgQEAgdm9pZCBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRl
cm5hbFAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbCwgbmV3Q2FsbGVlRnVu
Y3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0KIAorc3RhdGljIHZvaWQgcmVw
YXRjaFNsb3dQYXRoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9u
KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1Yklu
Zm8ubV9zbG93T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9u
UHRyVGFnPigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9jYXRpb24sIG5ld0Nh
bGxlZUZ1bmN0aW9uKTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7CiAgICAgR2l2ZVVw
T25DYWNoZSwKICAgICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMDksNyArMjIxLDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKgogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFz
Q2VsbCgpOwogICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5k
OjpQcml2YXRlTmFtZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCi0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQ
dHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJheShiYXNl
Q2VsbCkpIHsKQEAgLTIxOSw3ICsyMzEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNz
OjpnZW5lcmF0ZUFycmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxs
KSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rp
b24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEFycmF5TGVu
Z3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxh
dGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOSwxMSBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6
Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VDZWxsKSkgewotICAg
ICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0
ICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5z
ZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmlu
Z0xlbmd0aChzdHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRD
b2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChzdHViSW5mbyk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5j
dGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24o
a2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0
aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRl
cjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTUsMTEgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQog
ICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKQogICAgICAgICAgICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVy
YXRlU2VsZlByb3BlcnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOwogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAg
ICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlh
dGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmlu
aXRHZXRCeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9m
ZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0MzcsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFj
ZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1
ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29k
ZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5m
bywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkp
KTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNv
ZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NTEsNyBA
QCB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBr
aW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRC
eUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOwogfQogCiAKQEAgLTUy
OSw3ICs1NDEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogICAgICAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVs
bCh2bSksIElkZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTU0MCw3ICs1NTIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHRyeUNhY2hlQXJyYXlHZXRC
eVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZSwgaW5kZXgsIHN0dWJJbmZvKSA9PSBH
aXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmlj
KTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVy
YXRpb25HZXRCeVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVy
aWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1
dEtpbmQpIC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2
LDcgKzY0OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5
ICYmIChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5k
ID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
bmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAg
aWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsK
ICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5n
UHJvcGVydHkpIHsKQEAgLTY1OCw3ICs2NzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nl
c3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBz
bG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENv
ZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0
QnlJZFNlbGZQYXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFz
ZSgpID09IGJhc2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFw
cHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UobG9j
a2VyLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTMsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jawogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
KHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5B
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODE1LDcg
KzgyNyw3IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2lu
ZCkpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFw
cHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVs
QnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTg0Niw3ICs4NTgsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvYwogICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkK
ICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBu
ZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKICAgICAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC04NzQsNyArODg2
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0
ZWRTb21lQ29kZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgp
KTsKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9s
ZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5
TmFtZS51aWQoKSkpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTg5MSw5ICs5MDMsOSBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAg
IGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1v
ZGUpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJl
cGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3Qt
PnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAg
ICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlW
YWxHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKICAgICB9CiB9CiAKQEAgLTkz
Nyw3ICs5NDksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAg
ICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwg
c2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9j
aywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0K
QEAgLTk4NCw3ICs5OTYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5
SUQoCiAKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAorICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5I
aXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQgPyBzbG90LmNh
Y2hlZE9mZnNldCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5m
by5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2Rl
OjpzdHJpY3QoKSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKQEAgLTk5Myw3ICsx
MDA1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTAwNyw3ICsxMDE5LDcgQEAgdm9pZCByZXBhdGNoSW5C
eUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U09iamVjdCoKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VP
YmplY3QsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBP
bkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWQpOwog
fQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgK
QEAgLTEwMzIsNyArMTA0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNo
ZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
Q2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1By
aXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOwogCiAgICAgICAg
IHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsK
IApAQCAtMTA0MCw3ICsxMDUyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJp
dmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwg
aXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMDU0LDcgKzEwNjYsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jawogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNo
ZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBi
cmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5l
cmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJy
YW5kKApAQCAtMTA5MSw3ICsxMTAzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsK
ICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBv
bGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUs
IG5ld1N0cnVjdHVyZSk7CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0
cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRB
Y2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJp
Y3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTEwOTksNyArMTExMSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBv
bGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5l
Q29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEzLDcg
KzExMjUsNyBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJy
YW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBi
cmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMp
OwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApAQCAt
MTEzMyw3ICsxMTQ1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFu
Y2VPZigKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2Vs
bCgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0p
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKICAgICAgICAg
aWYgKHByb3RvdHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4odm0sIHZhbHVlKSkgewpAQCAtMTE2OCw5ICsxMTgwLDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgp
LAotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJ
QygpKQorICAgICAgICAgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHJlc3VsdC5jb2RlKCk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwK
KyAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAg
ICAKQEAgLTExODUsNyArMTIwMSw3IEBAIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICh0cnlD
YWNoZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHByb3Rv
dHlwZVZhbHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVy
aWMpOwogfQogCiBzdGF0aWMgdm9pZCBsaW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYg
Y2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IGNvZGVSZWYpCkBAIC0xMjAyLDcgKzEyMTgsNyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihW
TSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5r
Rm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIGxpbmtTbG93UGF0aFRvKHZtLCBjYWxsTGlua0lu
Zm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVK
SVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5r
LCB2bSwgeyB9LCB7IH0pKTsKIH0KIAogc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihK
U0NlbGwqIGNhbGxlZSkKQEAgLTEzMjAsNyArMTMzNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtWaXJ0
dWFsRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExp
bmtJCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZp
cnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZl
cnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZv
LnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywg
dm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9LCB7IH0pKTsKICAgICBjYWxsTGlua0luZm8u
c2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0ICsxNjU3LDE0IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsKLSAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Ci0gICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgSW5s
aW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsK
IH0KIAogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgm
b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTsKLSAgICBGdW5jdGlvblR5cGUg
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFk
UHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24p
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0
aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQo
Y29kZUJsb2NrLCBzdHViSW5mbykuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25U
eXBlIG9wdGltaXplZEZ1bmN0aW9uOwogICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpAQCAtMTY2NSw0NSArMTY4MSw0OCBAQCB2b2lkIHJl
c2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RO
b25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rp
b24pOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wdGltaXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJl
c2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgRGVsQnlLaW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwp
Ci0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgICAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2lu
Z0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0
UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCitzdGF0aWMgdm9pZCBy
ZXNldFBhdGNoYWJsZUp1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8u
cGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlm
IChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9
IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICBlbHNlCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBy
ZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVC
bG9jaywgc3R1YkluZm8pOwogfQogCi12b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIHJlc2V0UGF0Y2hhYmxlSnVt
cChzdHViSW5mbyk7CisgICAgcmVzZXRQYXRjaGFibGVKdW1wKGNvZGVCbG9jaywgc3R1YkluZm8p
OwogfQogCiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFj
Y2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCBy
ZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwor
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgSlNPYmplY3QqIGNhbGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
aW5kZXggMzEzNzlkYzRlNWE5ZGMyZGM2ZWE0OTMxNzc5NDcyNmEwMDIwMzUxYS4uM2ExOWZkMzY1
NDlkMWE4NDgwOWY5NGRhZGEyZGZiZTU3MDAwZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9j
ayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1
YkluZm8mKTsKK3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJ
bmZvJik7CiB2b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayos
IENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYzlkZTZhOGEzOGMxMWI2OTM3NjE5YzFlNTk0YWQxNDUx
YjNmMWE5OS4uZTdjZGNkYTM2MzM4NGQzNDVjODFiNDgyZGEyN2I3ZDFkYzJlY2Q5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzgsNiArNTM4
LDggQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29s
LCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
Qm9vbCwgdXNlVG9wTGV2ZWxBd2FpdCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtl
eXdvcmQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS4iKSBcCiAgICAgdihCb29sLCB2ZXJi
b3NlRXhlY3V0YWJsZVBvb2xBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisg
ICAgdihCb29sLCB1c2VTaGFyZWRJQywgaXNBUk02NCgpLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAg
ICB2KEJvb2wsIHVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBudWxs
cHRyKSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKaW5kZXggOGQwN2EyNzU3ODMzNDBi
ZWE0ZTEwZGRhNDkxNjNkMTNiNDk4M2YxMi4uYjhkZDRjYmQ1ZDI4MTAxNTdmOWE5OWJkOWNiMGYw
NTUxYTM2ZDljNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSURUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0
cnVjdHVyZTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIHVpbnQzMl90IFN0cnVjdHVy
ZUlEOwordXNpbmcgU3RydWN0dXJlSUQgPSB1aW50MzJfdDsKIAogaW5saW5lIFN0cnVjdHVyZUlE
IG51a2VkU3RydWN0dXJlSURCaXQoKQogewpAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgU3RydWN0
dXJlSUQgZGVjb250YW1pbmF0ZShTdHJ1Y3R1cmVJRCBpZCkKICAgICByZXR1cm4gaWQgJiB+bnVr
ZWRTdHJ1Y3R1cmVJREJpdCgpOwogfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi10eXBl
ZGVmIFN0cnVjdHVyZSogU3RydWN0dXJlSUQ7Cit1c2luZyBTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVy
ZSo7CiAKIGlubGluZSBTdHJ1Y3R1cmVJRCBudWtlZFN0cnVjdHVyZUlEQml0KCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiZWFjODZlYjBlYjhjZjUxMzhlZmJmZGMz
ODIzNDc0MmI4Y2JkZTExLi40YzFiZTQxODFmZDI3OTgzNDgwZmJiOTViNzNlNTQxNWM3ZjRjNmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vzc0Nh
c2UuaCIKICNpbmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIK
ICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKQEAgLTU2Nyw2ICs1NjgsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9v
bCogc3VjY2VzcykKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50
ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJ
bnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAg
bV9zaGFyZWRKSVRTdHVicyA9IG1ha2VVbmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAgICB9
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApAQCAtNjU1LDYgKzY1NywxMCBAQCBWTTo6flZNKCkK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY3JhdGNoQnVmZmVycy5zaXplKCk7ICsr
aSkKICAgICAgICAgVk1NYWxsb2M6OmZyZWUobV9zY3JhdGNoQnVmZmVyc1tpXSk7CiAjZW5kaWYK
KworI2lmIEVOQUJMRShKSVQpCisgICAgbV9zaGFyZWRKSVRTdHVicyA9IG51bGxwdHI7CisjZW5k
aWYKIH0KIAogdm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrKHZvaWQq
IGFyZ3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggOThhNzVjNmY4Yjhk
YjI3OWQwMjZmMzJlYmYzYmJjYzU0MWJhYjBmOS4uNzQyMmI5ZjY3NGUzNWRjMDUxMTRkN2U0ODAz
OWNlYmFmMDYxMjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNzUsNiAr
MTc1LDcgQEAgY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTYW1wbGluZ1Byb2Zp
bGVyOwogI2VuZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOworY2xhc3MgU2hhcmVkSklUU3R1YlNl
dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNz
IFNvdXJjZVByb3ZpZGVyQ2FjaGU7CkBAIC04NDYsMTEgKzg0NywxMyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFRodW5rcz4g
aml0U3R1YnM7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRD
VElTdHViKFRodW5rR2VuZXJhdG9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkSklUU3R1
YlNldD4gbV9zaGFyZWRKSVRTdHViczsKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAjaWYgRU5B
QkxFKEZUTF9KSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7
CiAjZW5kaWYKKwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVG
dW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
</data>
<flag name="commit-queue"
          id="451592"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430207</attachid>
            <date>2021-05-31 11:57:44 -0700</date>
            <delta_ts>2021-05-31 21:49:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210531115743.patch</filename>
            <type>text/plain</type>
            <size>429801</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
Mzc3OTI5MDRlNmFkYmExZTIwZGFkZDVjNDBiZTIyZjU3YzA4YzEwLi43YzIxODIzZjE5YzcwNTk0
ZTNhNDg0NTZkMmFlNjk4ZjdjZThhYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzEgQEAKKzIwMjEtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6dmlzaXRXZWFrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmg6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNjZXNzR2VuZXJhdGlvblN0YXRlKToK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0
dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmFwcGVuZENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBl
bmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNl
dFJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250
ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9G
VExTbG93UGF0aENhbGxLZXkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAg
ICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRs
L0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0
b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0Nv
bGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hSZWdBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hFeHRyYVJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaE5vbkFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6YWRkR1BSQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9u
OjphZGRHUFJFeHRyYUFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVj
dGlvbjo6YWRkU3RhY2tBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxl
Y3Rpb246OmFkZFBva2UpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBv
a2VPZmZzZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjptYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNFbnRyeUltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbCk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAg
IChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToK
KyAgICAgICAgKEpTQzo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUlDSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAo
SlNDOjpjcmVhdGVKSVRTdHViUm91dGluZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5oOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0
L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6dXNlU2hhcmVkSUMpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJ
VEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdENvbW1vbik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJ
VEdldEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJ
VEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6
OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9y
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpT
Qzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRH
ZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
SklURGVsQnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZh
bEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5z
dGFuY2VPZkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2Rl
KToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJl
c3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3By
b3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3By
aXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5
X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFt
ZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdERvdWJsZUxvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRDb250aWd1b3VzTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEFycmF5U3RvcmFnZUxvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93
aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJv
dXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmtleXMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6d2Vha1JlZmVyZW5jZXMgY29uc3QpOgorICAgICAg
ICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSk6Cisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFy
Z2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNsb3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlE
KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3Rh
bmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAo
SlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAg
KEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6Cisg
ICAgICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9m
KToKKyAgICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OnJlc2V0U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIxLTA1LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJv
cCBVbmNoZWNrZWRDb25kaXRpb24gLyBVbmNoZWNrZWRMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IGExNDM5NDg1ZmRjNjE1YTQ2NTJmMDE1
NDIzMGExNWYyNDdkMDAzOTMuLjc5ZWVmMmMyMDY1ZGQxNzM1YjhmNDIwM2I3NzNkOGM0OWY1NmE3
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBA
IC0yMzQsOCArMjM0LDggQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFn
IHRhZz4KICAgICBDb2RlTG9jYXRpb25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAg
ICAgewotICAgICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAg
ICAgICAgQVNTRVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFT
U0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQo
IWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlv
bkNhbGw8dGFnPihnZXRMaW5rZXJBZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVs
KSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNh
ZGExZmMwMzRjYzc0MWQuLmU1YjBiMmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjRFLmgKQEAgLTIyMCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2Fs
bFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQ
Uik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNz
LCBQdHJUYWcgdGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVz
cywgUHRyVGFnIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRy
VGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklU
Q2FnZSgpIHx8IGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAg
ICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAg
ICAgICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19J
TkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxv
YWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkp
OwotICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBj
YWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGNhbGxPcGVyYXRpb24oY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVy
YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
aW5kZXggMTJhOTdhMmQyNWQ1ZWJkMWU5OWE1ZTVhYzI5YzIyODkzYmE4MzhmOS4uZjdkMDMwMTJi
YzQ0ZWQ4M2NhNzVkZjljY2NlMDUyMjllMmMyOTkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNl
OjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNo
ZWFibGVJZGVudGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQo
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoK
QEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3ND
YXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAg
ICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIs
MzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlVHJhbnNpdGlvbigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNl
dCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUoCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0
ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVj
a1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0s
IHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBD
aGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7
IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZVNldFByaXZhdGVCcmFuZCgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlk
ZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAog
QWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nh
c2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAg
LTE4OCw5ICsxODgsOSBAQCBKU09iamVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbmRpdGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0
KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgp
IGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQs
NiArOTY0LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5
UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAg
LTEwNjEsNiArMTA2Myw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5w
cm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAt
MTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnBy
b3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BS
UmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0x
MjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJv
cGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKQEAgLTEzMTcsNiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdz
KCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5t
X3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRj
aEdQUik7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3Iu
YWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRl
SW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQgQWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JD
b2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCit7CisgICAgVk0mIHZtID0gc3RhdGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFt
cGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJ
bnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZEludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZENvbnRpZ3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6Cisg
ICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAg
IGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0
ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlz
VmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1
Y3R1cmU7CisgICAgICAgICAgICBpZiAoIWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAg
ICAgICBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZt
KTsKKyAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJl
cGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAg
ICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJp
bGl0eSkpIHsKKyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywg
Y29uZGl0aW9uKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRm9yIG5vdywgd2Ugb25seSBhbGxvdyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxl
LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9
IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRp
b24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKSkgeworICAgICAgICAgICAgLy8gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVu
IGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAg
ICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5lcmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVk
IHRoYXQKKyAgICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0
dXJuZWQgdHJ1ZS4KKworICAgICAgICAgICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8g
bG9uZ2VyIG1ldDogIiwgY29uZGl0aW9uLCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQg
Y29kZSB0aGF0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3Rl
ZCBhbnl3aGVyZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2Jq
ZWN0KCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVu
ZChzdHJ1Y3R1cmUtPmlkKCkpOworICAgIH0KK30KKwogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CkBAIC0xNDE3LDcgKzE1MDIsNyBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CiAKICAgICAg
ICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJp
bGl0eSkpIHsKLSAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvbmRpdGlvbik7
CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxvY2ssIGNvbmRpdGlv
bik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xNDM1LDcgKzE1MjAs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2VhayBy
ZWZlcmVuY2UgdGhhdCBpc24ndCBvdGhlcndpc2UgbGlzdGVkIGFueXdoZXJlLgogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsK
LSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuYXBwZW5kKFdyaXRlQmFycmllcjxKU0NlbGw+
KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNl
cy5hcHBlbmQoc3RydWN0dXJlLT5pZCgpKTsKIAogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoY29uZGl0aW9uLm9iamVjdCgpKSwgc2NyYXRjaEdQUik7CiAgICAg
ICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKQEAgLTE1ODIsNyArMTY2NywxMiBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogCiAgICAgICAgIC8vIFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25z
IG9mIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGlu
ZyBjYWxsIHNpdGUuCi0gICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBz
cGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAg
IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRp
ZgorICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9
IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZSk7CiAKICAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFj
a0ZvckNhbGwgPSBbJl0oQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0
YXRlLCBib29sIGNhbGxIYXNSZXR1cm5WYWx1ZSkgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
ZG9udFJlc3RvcmU7CkBAIC0xNzEyLDYgKzE4MDIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BS
SW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgYWNjZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xv
d1BhdGgodm0sIGppdCk7CisKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAg
ICAgICAgICAgICAgIGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRv
bmUuYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtMTcyMyw4ICsxODE0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJP
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0
ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24pLAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGludCBzdGFja1BvaW50ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFj
a1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1
c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1i
ZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CisgICAgICAgICAgICBq
aXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKICAgICAgICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIo
KTsKICAgICAgICAgICAgIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGls
bFN0YXRlLCBjYWxsSGFzUmV0dXJuVmFsdWUpOwogCkBAIC0xODQ1LDcgKzE5MzYsMTQgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgIHNraXBCYXJyaWVyLmFwcGVuZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2Ny
YXRjaEdQUiwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNo
R1BSKTsKLSAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAg
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlm
CisgICAgICAgICAgICBhdXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2
ZSk7CisKICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25X
cml0ZUJhcnJpZXJTbG93UGF0aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcp
OwpAQCAtMTg3NSw2ICsxOTczLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVl
UmVncyk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIyID0gSW52YWxpZEdQUlJlZzsKQEAgLTE5MzMsNiArMjAzMywxMCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAg
ICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAg
ICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBD
UFUoQVJNNjQpCisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJl
Z2lzdGVyczo6bHIpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNU
b1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMTM1LDggQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIp
OworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAg
ICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktp
bmQ6OlByb3BlcnR5RGVsZXRpb24pOwpAQCAtMjE5MSw2ICsyMjk3LDEzIEBAIFR5cGVkQXJyYXlU
eXBlIEFjY2Vzc0Nhc2U6OnRvVHlwZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
ICAgIH0KIH0KIAordm9pZCBTaGFyZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZD
b3VudCgpCit7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykKKyAgICAgICAgbV92bS5t
X3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisgICAgSklUU3R1YlJvdXRpbmU6Om9ic2Vy
dmVaZXJvUmVmQ291bnQoKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIEFjY2Vzc0Nh
c2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewpAQCAt
MjIwMyw2ICsyMzE2LDEwMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAK
K2Jvb2wgQWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYgbGhzLCBj
b25zdCBBY2Nlc3NDYXNlJiByaHMpCit7CisgICAgLy8gV2UgZG8gbm90IGNhcmUgbV9zdGF0ZS4K
KyAgICAvLyBBbmQgd2Ugc2F5ICJmYWxzZSIgaWYgZWl0aGVyIG9mIHRoZW0gaGF2ZSBtX3BvbHlQ
cm90b0FjY2Vzc0NoYWluLgorICAgIGlmIChsaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiB8fCBy
aHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChsaHMuYWRkaXRpb25hbFNldCgpIHx8IHJocy5hZGRpdGlvbmFsU2V0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fb2Zmc2V0ICE9IHJocy5tX29mZnNldCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQ
cm94eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0
KCkgIT0gcmhzLm1fc3RydWN0dXJlLmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGxocy5tX2lkZW50aWZpZXIgIT0gcmhzLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChsaHMubV9jb25kaXRpb25TZXQgIT0gcmhzLm1fY29uZGl0aW9uU2V0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGxocy5tX3R5cGUpIHsKKyAg
ICBjYXNlIExvYWQ6CisgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAg
IGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKKyAgICBj
YXNlIFJlcGxhY2U6CisgICAgY2FzZSBNaXNzOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNh
c2UgSW5IaXQ6CisgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBBcnJheUxlbmd0aDoKKyAgICBj
YXNlIFN0cmluZ0xlbmd0aDoKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBj
YXNlIFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgor
ICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkU2Nv
cGVkQXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREaXJlY3RBcmd1bWVudHNMb2FkOgor
ICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OENsYW1wZWRM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDMy
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZs
b2F0NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgY2FzZSBHZXR0ZXI6CisgICAgY2FzZSBTZXR0ZXI6IHsKKyAgICAgICAgLy8g
R2V0dGVyIGFuZCBTZXR0ZXIgcmVsaWVzIG9uIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgc2hhcmlu
ZyBpbXBvc3NpYmxlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2FzZSBD
dXN0b21WYWx1ZUdldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgorICAgIGNh
c2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjogewor
ICAgICAgICAvLyBUaGV5IGFyZSBlbWJlZGRpbmcgSlNHbG9iYWxPYmplY3QgdGhhdCBhcmUgbm90
IHRpZWQgdG8gc2hhcmluZyBKSVRTdHViUm91dGluZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2Qg
PSBsaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhz
ZCA9IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4g
bGhzZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAg
ICB9CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhz
ZCA9IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiBy
aHNkID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVy
biBsaHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1f
bW9kdWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSBy
aHNkLm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAg
IGNhc2UgSW5zdGFuY2VPZk1pc3M6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzogeworICAg
ICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAg
ICBhdXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBy
ZXR1cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIy
MzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uZmNkZmUwOWIzZTM2NWUwMWM5NmY4
MTg2OGM0MzI3Y2QzMzljYzg1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5j
bHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIs
NyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsK
IC8vIFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhl
IFBvbHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhp
cyBhbGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhv
cGVmdWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3ND
YXNlIHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNj
ZXNzQ2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElG
SUVSKEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3Qg
ewpAQCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1
bWVudHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3Ry
dWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQ
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwK
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0
ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJl
Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2
YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBS
ZWY8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9t
U3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJv
bVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZTsgfQpAQCAtMjUzLDExICsyNTYsNDMgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikg
eyB9CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1
c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbV9zdHJ1
Y3R1cmUgaXMgYWxyZWFkeSBkZXN0cm95ZWQuIFdlIGFyZSBkZXN0cm95aW5nIEpJVFN0dWJSb3V0
aW5lLCBhbmQgdGhpcyBkZXN0cnVjdGlvbiBpcyBkcml2ZW4KKyAgICAgICAgLy8gYnkgQ29kZUJs
b2NrJ3MgZGVzdHJ1Y3RvciAodHlwaWNhbGx5KS4gQW5kIGF0IHRoYXQgdGltZSwgaXQgaXMgcG9z
c2libGUgdGhhdCB0aGlzIHN0cnVjdHVyZSBpcyBhbHJlYWR5IGRlc3Ryb3llZCBiZWZvcmUKKyAg
ICAgICAgLy8gQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkLiBCdXQgaGVyZSwgd2UgZG8gbm90IGNh
cmUgYWJvdXQgdGhlIGxpdmVuZXNzIG9mIHRoaXMgc3RydWN0dXJlIHNpbmNlIHRoZSBvd25lciBz
aG91bGQga2VlcCBpdCwKKyAgICAgICAgLy8gYW5kIGlmIGl0IGlzIGRlYWQsIGl0IGlzIG9ubHkg
cG9zc2libGUgaW4gdGhlIGRlc3RydWN0b3Igb2YgdGhlIG93bmVyLiBXZSBqdXN0IGdldCBhIHBv
aW50ZXIgdmFsdWUgdmlhIHVudmFsaWRhdGVkR2V0KCkuCisgICAgICAgIHJldHVybiBjb21wdXRl
SGFzaChtX2NvbmRpdGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUp
LCBtX3ZpYVByb3h5LCBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLCBtX29mZnNldCk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYs
IGNvbnN0IEFjY2Vzc0Nhc2UmKTsKKwogcHJvdGVjdGVkOgogICAgIEFjY2Vzc0Nhc2UoVk0mLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwotICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYm
KSA9IGRlZmF1bHQ7Ci0gICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBk
ZWZhdWx0OworICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYmIG90aGVyKQorICAgICAgICA6IG1f
dHlwZShXVEZNb3ZlKG90aGVyLm1fdHlwZSkpCisgICAgICAgICwgbV9zdGF0ZShXVEZNb3ZlKG90
aGVyLm1fc3RhdGUpKQorICAgICAgICAsIG1fdmlhUHJveHkoV1RGTW92ZShvdGhlci5tX3ZpYVBy
b3h5KSkKKyAgICAgICAgLCBtX29mZnNldChXVEZNb3ZlKG90aGVyLm1fb2Zmc2V0KSkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShXVEZNb3ZlKG90aGVyLm1fc3RydWN0dXJlKSkKKyAgICAgICAgLCBt
X2NvbmRpdGlvblNldChXVEZNb3ZlKG90aGVyLm1fY29uZGl0aW9uU2V0KSkKKyAgICAgICAgLCBt
X3BvbHlQcm90b0FjY2Vzc0NoYWluKFdURk1vdmUob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFp
bikpCisgICAgICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUob3RoZXIubV9pZGVudGlmaWVyKSkK
KyAgICB7IH0KKworICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpCisgICAg
ICAgIDogbV90eXBlKG90aGVyLm1fdHlwZSkKKyAgICAgICAgLCBtX3N0YXRlKG90aGVyLm1fc3Rh
dGUpCisgICAgICAgICwgbV92aWFQcm94eShvdGhlci5tX3ZpYVByb3h5KQorICAgICAgICAsIG1f
b2Zmc2V0KG90aGVyLm1fb2Zmc2V0KQorICAgICAgICAsIG1fc3RydWN0dXJlKG90aGVyLm1fc3Ry
dWN0dXJlKQorICAgICAgICAsIG1fY29uZGl0aW9uU2V0KG90aGVyLm1fY29uZGl0aW9uU2V0KQor
ICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4ob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3ND
aGFpbikKKyAgICAgICAgLCBtX2lkZW50aWZpZXIob3RoZXIubV9pZGVudGlmaWVyKQorICAgIHsg
fQogCiAgICAgQWNjZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0
ZTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0y
NzUsNyArMzEwLDcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAKICAgICAvLyBGSVhNRTogVGhpcyBv
bmx5IGV4aXN0cyBiZWNhdXNlIG9mIGhvdyBBY2Nlc3NDYXNlIHB1dHMgcG9zdC1nZW5lcmF0aW9u
IHRoaW5ncyBpbnRvIGl0c2VsZi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2NDU2Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gY2xvbmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNv
bnN0OwogCiAgICAgLy8gUGVyZm9ybSBhbnkgYWN0aW9uIHRoYXQgbXVzdCBiZSBwZXJmb3JtZWQg
YmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVwb2NoIGluIHdoaWNoIHRoZSBjYXNlCiAgICAgLy8gd2Fz
IGNyZWF0ZWQuIFJldHVybnMgYSBzZXQgb2Ygd2F0Y2hwb2ludCBzZXRzIHRoYXQgd2lsbCBuZWVk
IHRvIGJlIHdhdGNoZWQuCkBAIC0zMTUsNiArMzUwLDE4MCBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsK
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKK2NsYXNzIFNoYXJl
YWJsZUpJVFN0dWJSb3V0aW5lIGZpbmFsIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKK3B1Ymxp
YzoKKyAgICBTaGFyZWFibGVKSVRTdHViUm91dGluZShWTSYgdm0sIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIEZpeGVkVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVm
ZXJlbmNlcykKKyAgICAgICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0o
dm0pCisgICAgICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgICAgICwgbV93ZWFrUmVm
ZXJlbmNlcyhXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICZtX2tleXM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4qIHdl
YWtSZWZlcmVuY2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fd2Vha1JlZmVyZW5jZXM7IH0K
KworICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIGZpbmFsOworCitwcml2YXRlOgorICAg
IFZNJiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOwor
ICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiBtX3dlYWtSZWZlcmVuY2VzOworfTsKKworY2xh
c3MgU2hhcmVkSklUU3R1YlNldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoU2hhcmVk
SklUU3R1YlNldCk7CitwdWJsaWM6CisgICAgU2hhcmVkSklUU3R1YlNldCgpID0gZGVmYXVsdDsK
KworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4mIGtleXMpCisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBm
b3IgKGF1dG8mIGtleSA6IGtleXMpCisgICAgICAgICAgICBXVEY6OmFkZChoYXNoZXIsIGtleS0+
aGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAgc3Ry
dWN0IEhhc2ggeworICAgICAgICBzdHJ1Y3QgS2V5IHsKKyAgICAgICAgICAgIEtleSgpID0gZGVm
YXVsdDsKKworICAgICAgICAgICAgS2V5KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIs
IEdQUlJlZyBleHRyYUdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBSZWdpc3RlclNldCB1c2VkUmVn
aXN0ZXJzLCBKSVRTdHViUm91dGluZSogd3JhcHBlZCkKKyAgICAgICAgICAgICAgICA6IG1fd3Jh
cHBlZCh3cmFwcGVkKQorICAgICAgICAgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIpCisgICAg
ICAgICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQorICAgICAgICAgICAgICAgICwgbV9l
eHRyYUdQUihleHRyYUdQUikKKyAgICAgICAgICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1Yklu
Zm9HUFIpCisgICAgICAgICAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKGJpdHdpc2VfY2FzdDxKSVRT
dHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpKQorICAgICAgICAgICAgeyB9
CisKKyAgICAgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3dyYXBwZWQgPT0gYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSk7IH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYS5tX3dyYXBwZWQgPT0gYi5tX3dyYXBwZWQKKyAgICAgICAgICAgICAgICAg
ICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkICE9IGIu
bV93cmFwcGVkOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBKSVRTdHViUm91dGluZSog
bV93cmFwcGVkIHsgbnVsbHB0ciB9OworICAgICAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAg
ICAgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fZXh0cmFH
UFI7CisgICAgICAgICAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgfTsKKworICAgICAgICB1c2luZyBLZXlU
cmFpdHMgPSBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8S2V5PjsKKworICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBLZXkmIHApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcC5t
X3dyYXBwZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4g
U2hhcmVkSklUU3R1YlNldDo6aGFzaCgqcC5tX3dyYXBwZWQtPmtleXMoKSk7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOworICAgIH07CisKKyAgICBzdHJ1Y3QgU2VhcmNoZXIgeworICAgICAgICBzdHJ1Y3Qg
VHJhbnNsYXRvciB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTZWFy
Y2hlciYgc2VhcmNoZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNo
YXJlZEpJVFN0dWJTZXQ6Omhhc2goc2VhcmNoZXIubV9rZXlzKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGEsIGNvbnN0IFNl
YXJjaGVyJiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhLm1fYmFzZUdQ
UiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0g
Yi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1f
ZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9z
dHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBi
Lm1fdXNlZFJlZ2lzdGVycykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBhdmVj
ID0gKmEubV93cmFwcGVkLT5rZXlzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGJ2ZWMgPSBiLm1fa2V5czsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF2ZWMuc2l6ZSgpICE9
IGJ2ZWMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBidmVjLnNp
emUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBY2Nlc3NDYXNl
OjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2luZGV4XSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF3ZWFrID0gKmEubV93cmFwcGVkLT53ZWFr
UmVmZXJlbmNlcygpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBid2VhayA9IGIu
bV93ZWFrUmVmZXJlbmNlczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF3ZWFrLnNpemUoKSAh
PSBid2Vhay5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBhd2Vhay5zaXpl
KCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhd2Vha1tp
XSAhPSBid2Vha1tpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAg
ICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7CisgICAgICAg
IEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3Rl
cnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mIG1fa2V5
czsKKyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiBtX3dlYWtSZWZlcmVu
Y2VzOworICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5
LCBKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtl
eS5tX3dyYXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChI
YXNoOjpLZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0K
KworICAgIHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAg
YXV0byBpdGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAg
ICAgaWYgKGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3Zl
KGl0ZXIpOworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVy
JiBzZWFyY2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hh
cmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAg
aWYgKGVudHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1f
d3JhcHBlZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAg
IEhhc2hTZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1
MzY3OWM4NC4uYjIyNmZiMTZmNWRiNzQ0ZjdmZTU1NmJlYzc1OGQ3Y2VhMDRlNGFhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjQ0LDEwICsyNDQs
OCBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXRVcChD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcCwgQ29kZUxvY2F0
aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlNb2RlIGFy
cmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCisgICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25M
YWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMtPm5v
dEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZUp1bXAgPSBi
YWRUeXBlSnVtcDsKICAgICAgICAgdGhpcy0+ZXhjZXB0aW9uSGFuZGxlciA9IGV4Y2VwdGlvbkhh
bmRsZXI7CiAgICAgICAgIHRoaXMtPmRvbmVUYXJnZXQgPSBkb25lVGFyZ2V0OwogICAgICAgICB0
aGlzLT5iYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQgPSBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7
CkBAIC0yNjIsOCArMjYwLDIxIEBAIHN0cnVjdCBCeVZhbEluZm8gewogCiAgICAgREVDTEFSRV9W
SVNJVF9BR0dSRUdBVEU7CiAKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
IG5vdEluZGV4SnVtcDsKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJh
ZFR5cGVKdW1wOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQorCisgICAg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247CisKKyAgICB1bmlv
biB7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25v
dEluZGV4SnVtcFRhcmdldDsKKyAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBtX25vdEluZGV4SnVtcDsKKyAgICB9OworICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7Cisg
ICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsK
KyAgICB9OworCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4g
ZXhjZXB0aW9uSGFuZGxlcjsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBkb25lVGFyZ2V0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJh
ZFR5cGVOZXh0SG90UGF0aFRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAppbmRleCBhMzY5ZTExMDA5MTBhNzZiM2UyZGNiODhjNzkyNTA2ZmMwMDc0ZTU0
Li42MmY3M2RkODllYWU1NjViOWVhYmZhYmU2ODNlZTk3N2Y5ZWQ4OWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00MjAsNiArNDIwLDExIEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgcmV0dXJuIGpp
dFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9CisKKyAgICBib29sIHVzZVNo
YXJlZElDKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhqaXRUeXBlKCkpOworICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIENvZGVCbG9j
ayogcmVwbGFjZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCAwYzNjNDEyMWQ1ODY2Mjdl
YTk1MDQxYmY3MTcwZGM3YzlkNTBhYmJhLi40ZWEwYjljZGNjNzE2MmZlOTNiYjY3NDljMjg2MDc1
NjM3MWEzYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEdldHRlclNl
dHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlCiAgICAgbV9jdXN0b21TbG90QmFzZS5zZXRNYXlCZU51bGwodm0sIG93
bmVyLCBjdXN0b21TbG90QmFzZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdl
dHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAogICAgIHN0ZDo6b3B0aW9uYWw8RE9NQXR0
cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9t
U2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5t
X2RvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNz
b3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3Vz
dG9tR2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVm
PEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAg
ICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmpl
Y3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBl
ID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0
ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAg
cmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3Vz
dG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkBAIC05MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRl
clNldHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAg
bV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1Jl
ZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0
YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVJlZ3MoKSk7CiAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BS
KTsKIAogICAgIEdQUlJlZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYg
KzIyNSwxMSBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6
IGZwU2NyYXRjaCkKICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwog
ICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3Rl
cnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3Rh
dGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2Ny
YXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vz
c0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmgKaW5kZXggYTg0ODg0NThmNGFiZDJhYWQyZWJhZjYyYjI4YTMzYzQxODYwNDA4Ny4u
YzM2NzNhNGYxNGJmMDc4NTY2MGM1NjRiNzgzMmE1ZGI0NDZiNzI5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5o
CkBAIC01MywxNyArNTMsMTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRl
cihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciosIEdQ
UlJlZyBiYXNlRm9yR2V0R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAg
ICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQs
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAg
IEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5v
dGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+JiYsIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwKICAgICAgICAgRnVu
Y3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciA9IG51bGxwdHIsIEpT
T2JqZWN0KiBjdXN0b21TbG90QmFzZSA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQ
cmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkdldHRlclNldHRlckFjY2Vzc0Nhc2UoKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNz
LmNwcAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2JhZTk2ZmIzMjFhLi4yMTk0
MmM0MzViZWVjMTRjMTU4NjM5NWUzZDY0MTEzNmUyMjg4OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAtMjE2LDYgKzIxNiw4IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVnaXN0ZXIoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VUYWdH
UFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKICNlbmRpZgor
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIEdQUlJlZyBzY3Jh
dGNoID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAgIGlmIChhbGxvY2F0b3Iu
ZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CkBAIC0z
NzksOCArMzgxLDU0IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICByZXR1cm4gbGlua2Vk
Q29kZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFj
Y2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4g
dGFyZ2V0KQogeworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAg
c3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAg
ICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQg
YmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5j
aENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHVi
SW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVk
c0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxp
ZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKKworICAgIEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3Rh
bnQganVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit7CisgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAvLyBJZiBpdCBpcyBub3QgR2V0
QnlJZC1saWtlLXRoaW5nLCB3ZSBkbyBub3QgZW1pdCBub3Agc2xlZCAoZS5nLiBHZXRCeVZhbCku
CisgICAgICAgIC8vIFRoZSBjb2RlIGlzIGFscmVhZHkgYW4gaW5kaXJlY3QganVtcCwgYW5kIG9u
bHkgdGhpbmcgd2Ugc2hvdWxkIGRvIGlzIHJlcGxhY2luZyBtX2NvZGVQdHIuCisgICAgICAgIGlm
IChzdHViSW5mby5oYXNDb25zdGFudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIC8vIElmIG1f
Y29kZVB0ciBpcyBwb2ludGluZyB0byBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24sIHRo
aXMgbWVhbnMgdGhhdCBJbmxpbmVBY2Nlc3MgY29kZSBpcyBub3QgYSBzdHViIG9uZS4KKyAgICAg
ICAgICAgIC8vIFdlIHJld3JpdGUgdGhpcyB3aXRoIHRoZSBzdHViLWJhc2VkIGRpc3BhdGNoaW5n
IGNvZGUgb25jZSwgYW5kIGNvbnRpbnVlIHVzaW5nIGl0IHVudGlsIHdlIHJlc2V0IHRoZSBjb2Rl
LgorICAgICAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
ID09IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSB7
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmc3R1YkluZm8pLCBzdHViSW5mby5t
X3N0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
Q29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgICAgIGF1dG8g
anVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAgICAgICBib29sIG5lZWRzQnJhbmNoQ29t
cGFjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihq
aXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworCisgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisKKyAgICAgICAgICAgICAgICBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIHN0
dWIgY2FsbCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN0dWJJbmZvLm1f
Y29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwpAQCAtMzk0LDYgKzQ0Miwy
NiBAQCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYgogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZl
ciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOwogfQog
Cit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisK
KyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5v
cCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlk
ZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7Cisg
ICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2Vt
Ymxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNo
ZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5s
aW5rKGp1bXAsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisKKyAgICBGSU5BTEla
RV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0
YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCit7CisgICAgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCBm
NDliMzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIyYjg0NzFkMTJkLi5lYjc2ZmYzOTZkMjg4ZWNk
YmUzYWYxMDE3ZjMyNDNhYWE3NDQwYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQsMTAgKzEwNCwxNCBAQCBjbGFzcyBJbmxpbmVB
Y2Nlc3MgewogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlQXJyYXlMZW5ndGgoU3RydWN0dXJl
U3R1YkluZm8mLCBKU0FycmF5Kik7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVTdHJpbmdM
ZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZUFycmF5
TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwotICAgIHN0YXRpYyB2b2lkIHJl
d2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4pOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2VsZkluQWNjZXNz
KFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJh
dGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIAorICAgIHN0YXRpYyB2b2lkIHJl
d2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7
CisgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5l
Q29kZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyB2b2lkIHJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisK
ICAgICAvLyBUaGlzIGlzIGhlbHBmdWwgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2l6ZSBvZiBhbiBJ
QyBvbgogICAgIC8vIHZhcmlvdXMgcGxhdGZvcm1zLiBXaGVuIGFkZGluZyBhIG5ldyB0eXBlIG9m
IElDLCBpbXBsZW1lbnQKICAgICAvLyBpdHMgcGxhY2Vob2xkZXIgY29kZSBoZXJlLCBhbmQgbG9n
IHRoZSBzaXplLiBUaGF0IHdheSB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFl
NzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdj
MTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNz
Q2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVh
dGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nl
c3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CiB9CiAKIHZvaWQg
SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJp
bnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNv
bnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5
cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNz
Q2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOwogICAg
IHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmlu
ZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0
NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWNjZXNzQ2Fz
ZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+
IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsCiAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0m
LCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBj
b25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFkYzIzMzY5MzNkNjc2YzNiZTllOTBjNjAx
ODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZlNjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rpb24uc2V0KHZtLCBvd25lciwgaW50cmlu
c2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0
LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
SlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRl
bnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rp
b24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9m
ZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
Ojp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8
QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3Vs
dC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEy
YmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgK
QEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50cmluc2ljR2V0
dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0
ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rp
b24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4g
Y2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAppbmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEw
OGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFmNDgxNTU2NjE1MTcwODVhODhlMTlhMDcz
YWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCkBAIC00NSwxOCArNDUsMTggQEAgTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgb3du
ZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJv
bm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5h
bWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNj
b3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlm
aWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNl
dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmly
b25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNj
ZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPiByZXN1bHQobmV3IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+
cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaApp
bmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNkMDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2
MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAg
LTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1
YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9u
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBT
Y29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0K
IAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
LCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZz
ZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmlu
YWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBm
YWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKaW5kZXggM2QyMzNmYWQxMzM5MmRl
MDJiZjNiM2M5N2ZkMDY0N2YwZDFhYWZmMy4uYmU3M2ZkYjVlNWE3YTlmZjFiNzUyNzIwMjUyOTNj
YjYyYTU4NDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2
ICs5MCwzMiBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7
CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBIYXNo
ZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlzKQorICAgICAg
ICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNo
ZXIuaGFzaCgpOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmIHJocykKKyAgICB7CisgICAgICAgIGlmIChsaHMuc2l6ZSgpICE9IHJocy5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gbGl0ZXIgPSBsaHMuYmVn
aW4oKTsKKyAgICAgICAgYXV0byByaXRlciA9IHJocy5iZWdpbigpOworICAgICAgICBmb3IgKDsg
bGl0ZXIgIT0gbGhzLmVuZCgpOyArK2xpdGVyLCArK3JpdGVyKSB7CisgICAgICAgICAgICBpZiAo
ISgqbGl0ZXIgPT0gKnJpdGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhzLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobGhz
ID09IHJocyk7CisgICAgfQogICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvck9i
amVjdChKU09iamVjdCopIGNvbnN0OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvckNv
bmRpdGlvbktpbmQoUHJvcGVydHlDb25kaXRpb246OktpbmQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXgg
MDNhMmY2NzFmNzQ0NmU0YWNhZGNkNzRiOWM4N2U4OWE3ZDA5YTAxNS4uYmQwYTIxZmNlNzBhNmQ3
OGE4MjM1YTgzN2JiYmUzMjBlYzgyYmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC01OSwxMCArNTksOSBAQCB2
b2lkIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICAgICAgb3V0LnByaW50KCI6IiwgbV9jb2RlKTsKIH0KIAotdm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24pCit2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9p
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBj
b25kaXRpb24pCiB7Ci0gICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVS
ZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCgKLSAgICAgICAgd2F0Y2hwb2ludHMsIGppdC0+
Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBjb25kaXRpb24pOworICAgIFdhdGNocG9pbnRzT25TdHJ1
Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQod2F0Y2hw
b2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sIGNvbmRpdGlvbik7CiB9CiAKIHZvaWQgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCkBAIC03Myw3ICs3MiwxMCBAQCB2b2lk
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQogdm9pZCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnN1Y2NlZWQoKQogewogICAgIHJlc3RvcmVTY3JhdGNoKCk7Ci0gICAgc3Vj
Y2Vzcy5hcHBlbmQoaml0LT5qdW1wKCkpOworICAgIGlmIChqaXQtPmNvZGVCbG9jaygpLT51c2VT
aGFyZWRJQygpKQorICAgICAgICBqaXQtPnJldCgpOworICAgIGVsc2UKKyAgICAgICAgc3VjY2Vz
cy5hcHBlbmQoaml0LT5qdW1wKCkpOwogfQogCiBjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzRm9yQ2FsbCgpCkBAIC0xMjYsMTAgKzEyOCwxMSBA
QCBhdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFj
a0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJTZQogICAgIH07CiB9CiAKLWF1dG8gQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNl
cHRpb25zKCkgLT4gU3BpbGxTdGF0ZQorYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVn
aXN0ZXJTZXQmIGV4dHJhKSAtPiBTcGlsbFN0YXRlCiB7CiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJl
Z2lzdGVycyA9IGFsbG9jYXRvci0+dXNlZFJlZ2lzdGVycygpOwogICAgIGxpdmVSZWdpc3RlcnMu
ZXhjbHVkZShjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGxpdmVSZWdpc3RlcnMubWVyZ2Uo
ZXh0cmEpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGV4dHJhU3RhY2tQYWRkaW5nID0gMDsK
ICAgICB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRp
b24gPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGwoKmppdCwgbGl2ZVJlZ2lzdGVycywgZXh0cmFTdGFja1BhZGRpbmcpOwpAQCAtMjUyLDcg
KzI1NSw3IEBAIFBvbHltb3JwaGljQWNjZXNzOjp+UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIAog
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAg
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQogewogICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKQEAgLTI2OCw5
ICsyNzEsOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRD
YXNlcygKICAgICAvLyAgIGFkZCBtb3JlIHRoaW5ncyBhZnRlciBmYWlsdXJlLgogICAgIAogICAg
IC8vIEZpcnN0IGVuc3VyZSB0aGF0IHRoZSBvcmlnaW5hbENhc2VzVG9BZGQgZG9lc24ndCBjb250
YWluIGR1cGxpY2F0ZXMuCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPj4g
Y2FzZXNUb0FkZDsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmlnaW5hbENhc2VzVG9BZGQuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG15Q2FzZSA9IFdURk1v
dmUob3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKKyAgICAgICAgYXV0byBteUNhc2UgPSBXVEZNb3Zl
KG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYgaXQg
aXMgbm90IHJlcGxhY2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0LgogICAg
ICAgICBib29sIGZvdW5kID0gZmFsc2U7CkBAIC0zNDYsOSArMzQ5LDkgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiB9CiAKIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UoCi0gICAgY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IG5ld0FjY2VzcykKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBSZWY8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4sIDI+IG5ld0FjY2Vzc2VzOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4sIDI+IG5ld0FjY2Vzc2VzOwogICAgIG5ld0FjY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5l
d0FjY2VzcykpOwogICAgIHJldHVybiBhZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLCBXVEZNb3ZlKG5ld0FjY2Vzc2VzKSk7CiB9CkBAIC0zNTksOSArMzYyLDE1IEBAIGJv
b2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CiAgICAgICAgIGlm
ICghYXQoaSkudmlzaXRXZWFrKHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5jZSA6IG1f
d2Vha1JlZmVyZW5jZXMpIHsKLSAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdlYWtSZWZl
cmVuY2UuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3N0dWJS
b3V0aW5lKSB7CisgICAgICAgIGF1dG8qIHdlYWtSZWZlcmVuY2VzID0gbV9zdHViUm91dGluZS0+
d2Vha1JlZmVyZW5jZXMoKTsKKyAgICAgICAgaWYgKHdlYWtSZWZlcmVuY2VzKSB7CisgICAgICAg
ICAgICBmb3IgKFN0cnVjdHVyZUlEIHdlYWtSZWZlcmVuY2UgOiAqd2Vha1JlZmVyZW5jZXMpIHsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZSh3
ZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDQwLDcgKzQ0OSw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWduZWQgc3JjSW5kZXggPSAwOwog
ICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAoc3JjSW5kZXggPCBtX2xpc3Qu
c2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9
IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+
IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10pOwogICAgICAgICAKICAgICAg
ICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0aGVuIHdlIGhhdmUgdG8ga2Vl
cCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAgICAgICAgLy8gZmFpbCB0byBy
ZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIHVz
ZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzUwMCw4IEBAIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRoaXNUYWdHUFIpOwogI2VuZGlm
CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAKICAgICBzdGF0ZS5z
Y3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC01MDAsMTIg
KzUxMSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2Vu
ZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7Ci0g
ICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVy
U3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hp
bmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRy
YVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2RlID0gZmFsc2U7CiAKQEAgLTUy
MSwxMiArNTI2LDMwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBpZiAoUG9seW1v
cnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiT3B0aW1pemVk
IGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwotICAgIAorCisgICAgYm9vbCBkb2Vz
Q2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gZmFsc2U7
CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVjdG9yPEpTQ2VsbCo+IGNlbGxz
VG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4ga2V5cyhjYXNlcy5z
aXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDog
Y2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxs
c1RvTWFyayk7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRl
ciB8fCBlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRlcikKKyAgICAgICAgICAgIGRv
ZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAga2V5c1tpbmRleF0gPSBlbnRy
eTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUubV9kb2VzQ2FsbHMgPSBkb2Vz
Q2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGRvZXNKU0dldHRl
clNldHRlckNhbGxzOworICAgIC8vIEdldHRlciAvIFNldHRlciByZWxpZXMgb24gc3RhY2stcG9p
bnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBsaW5rZWQgQ29kZUJsb2NrLCB3
aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAgaWYgKGRvZXNKU0dldHRlclNl
dHRlckNhbGxzKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNvbnRhaW5zIHRoZSBjYXNlcyB0
aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3b24ndCBjaGFuZ2UgdGhhdCBz
ZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrID0g
dHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IGZhbHNlOwogICAgIGJvb2wg
bmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3RyaW5nUHJv
cGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrID0g
ZmFsc2U7CkBAIC01NDIsMTAgKzU2NSw0OCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHlt
b3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAg
ICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0ZS53YXRjaHBvaW50cywgY29k
ZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBhbGxHdWFyZGVkQnlTdHJ1Y3R1
cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayhzdHViSW5mbyk7Ci0g
ICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyIHx8IG5ld0Nh
c2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAgICAgICAgICBoYXNKU0dldHRl
clNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2FzZS0+dXNlc1BvbHlQcm90bygp
KQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5lZWRz
U3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgfHwgbmVlZHNJ
bnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisKKyAgICBh
dXRvIGZpbmlzaENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxKSVRTdHViUm91dGluZT4mJiBz
dHViKSB7CisgICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZNb3ZlKHN0dWIpOworICAgICAgICBt
X3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CisgICAgICAgIGlmIChQ
b2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygi
UmV0dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCksICJcbiIpOworCisgICAgICAgIG1f
bGlzdCA9IFdURk1vdmUoY2FzZXMpOworICAgICAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKKwor
ICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7CisgICAgICAg
IGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgp
IHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdD
b2RlOworCisgICAgICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQs
IG1fc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgIH07CisKKyAgICBDQ2FsbEhlbHBl
cnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsKKworICAgIGlmIChjb2Rl
QmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlLm1fZG9lc0pTR2V0dGVy
U2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQg
c3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0g
aWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNr
LXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJlZ2lzdGVyIGFuZCBpdCBp
cyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1dGFibGUgY2FsbCBkb2Vz
IG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rpbmcgc3RhY2stcG9pbnRl
ciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzLiBCdXQgdGhp
cyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFjay1wb2ludGVyLCBhbmQg
bWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8gVG8gZW5zdXJlIFBBQy10
YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVyIHRvIHRoZSBhcHByb3By
aWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogICAgIH0KIAorICAgIHN0
YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJl
c2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAKICAgICBpZiAoY2FzZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5saWtlbHksIGJ1dCB3ZSBt
YWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc1MSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMgPSBu
dWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JFeGNl
cHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4
Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAgIGlmIChzdGF0ZS5uZWVk
c1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgICAgIC8v
IE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hlbiBkb2luZyBnZW5lcmlj
VW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAgICAgICAvLyBOb3RlIGFs
c28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20gZ2V0dGVyL3NldHRlci4g
Q3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2ICs3OTEsMzIgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICAg
fQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBmYWlsdXJl
LmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGlu
ZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8g
dGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNhbGxlZCAobm90IGp1bXBl
ZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxsIHRvIHRoZSB0aHVuayB3
aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAgICAvLyBBbmQgd2Ugc2hv
dWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBCYXNlbGluZUpJVC4KKyAg
ICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigp
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKworICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4gc3R1YjsKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXMo
V1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNo
YXJlZElDKCkgJiYgY2FuQmVTaGFyZWQpIHsKKyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6U2Vh
cmNoZXIgc2VhcmNoZXIgeworICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAgICAg
ICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BS
LAorICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBrZXlzLAorICAgICAgICAgICAgd2Vha1Jl
ZmVyZW5jZXMsCisgICAgICAgIH07CisgICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJz
LT5maW5kKHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKHN0dWIpCisgICAgICAgICAgICByZXR1cm4g
ZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CisgICAgfQorCiAgICAgTGlua0J1
ZmZlciBsaW5rQnVmZmVyKGppdCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxp
bmVDYWNoZSwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci5kaWRG
YWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFs
Ojp2ZXJib3NlKQpAQCAtNzM5LDkgKzgyNiwxMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc3VjY2Vzc0xhYmVsID0g
c3R1YkluZm8uZG9uZUxvY2F0aW9uOwogCi0gICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nl
c3MsIHN1Y2Nlc3NMYWJlbCk7Ci0KLSAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJ
QygpKQorICAgICAgICBBU1NFUlQoc3RhdGUuc3VjY2Vzcy5lbXB0eSgpKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NMYWJlbCk7Cisg
ICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworICAgIH0KICAgICAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJ
bmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZv
ciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwpAQCAtNzQ5LDI5ICs4MzksMTUgQEAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2MKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+IGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKICAgICAgICAgY29kZUJsb2NrLCBs
aW5rQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIiVzIiwgdG9DU3RyaW5n
KCJBY2Nlc3Mgc3R1YiBmb3IgIiwgKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3JpZ2lu
LCAiIHdpdGggcmV0dXJuIHBvaW50ICIsIHN1Y2Nlc3NMYWJlbCwgIjogIiwgbGlzdER1bXAoY2Fz
ZXMpKS5kYXRhKCkpOwotCi0gICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKLSAgICBWZWN0b3I8
SlNDZWxsKj4gY2VsbHNUb01hcms7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKQotICAg
ICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9NYXJrKTsKLSAg
ICAKLSAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIGNv
ZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxMaW5r
SW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4
Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwotICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRl
LndhdGNocG9pbnRzKTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkK
LSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwg
Y29kZS5jb2RlKCksICJcbiIpOwogICAgIAotICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOwot
ICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwotICAgIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OktpbmQgcmVzdWx0S2luZDsKLSAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjpt
YXhBY2Nlc3NWYXJpYW50TGlzdFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCi0gICAgICAg
IHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7
Ci0gICAgZWxzZQotICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6
R2VuZXJhdGVkTmV3Q29kZTsKLSAgICAKLSAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dChyZXN1bHRLaW5kLCBjb2RlLmNvZGUoKSk7CisgICAgc3R1YiA9IGNyZWF0ZUlDSklUU3R1YlJv
dXRpbmUoY29kZSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIHZtLCBj
b2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlu
a0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKKworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElD
KCkpIHsKKyAgICAgICAgaWYgKGNhbkJlU2hhcmVkKQorICAgICAgICAgICAgdm0ubV9zaGFyZWRK
SVRTdHVicy0+YWRkKFNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleShzdHViSW5mby5iYXNlR1BS
LCBzdHViSW5mby52YWx1ZUdQUiwgc3R1YkluZm8ucmVncy50aGlzR1BSLCBzdHViSW5mby5tX3N0
dWJJbmZvR1BSLCBzdHViSW5mby51c2VkUmVnaXN0ZXJzLCBzdHViLmdldCgpKSk7CisgICAgfQor
CisgICAgcmV0dXJuIGZpbmlzaENvZGVHZW5lcmF0aW9uKFdURk1vdmUoc3R1YikpOwogfQogCiB2
b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjkyMDMyNmRjYzkx
NTQ3NGIzZjFlZWI3ZjcyNWU2YWIzNGFlY2I0MS4uNDU5YmIwYmZhYzU3ZWRlMmIxYzQzNWEwYmZl
N2QxNjk3NDdmZDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKQEAgLTE0MSwxMCArMTQxLDEwIEBAIGNsYXNzIFBvbHltb3Jw
aGljQWNjZXNzIHsKICAgICAvLyBXaGVuIHRoaXMgZmFpbHMgKHJldHVybnMgR2F2ZVVwKSwgdGhp
cyB3aWxsIGxlYXZlIHRoZSBvbGQgc3R1YiBpbnRhY3QgYnV0IHlvdSBzaG91bGQgbm90IHRyeQog
ICAgIC8vIHRvIGNhbGwgdGhpcyBtZXRob2QgYWdhaW4gZm9yIHRoYXQgUG9seW1vcnBoaWNBY2Nl
c3MgaW5zdGFuY2UuCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlcygKLSAgICAg
ICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+KTsK
KyAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+KTsKIAog
ICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZSgKLSAgICAgICAgY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPik7CisgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBSZWY8
QWNjZXNzQ2FzZT4pOwogICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVnZW5lcmF0
ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgRUNNQU1vZGUsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgCkBAIC0xNzks
NyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBD
b2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAg
Ci0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0
VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBl
OwogICAgIAogICAgIHZvaWQgY29tbWl0KAogICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1
YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLApAQCAtMTg4LDcgKzE4OCw2
IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBMaXN0VHlwZSBtX2xpc3Q7CiAgICAg
UmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IG1fd2F0Y2hwb2ludHM7Ci0gICAgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBz
dHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKQEAgLTE5Niw2ICsxOTUsOCBAQCBzdHJ1Y3Qg
QWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAKICAgICAgICAgLCBt
X2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNlKQorICAgICAgICAs
IG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNh
bGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3Jl
UmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNp
dGVJbmRleChmYWxzZSkKQEAgLTIyMywxMCArMjI0LDEyIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUgewogICAgIEZQUlJlZyBzY3JhdGNoRlBSIHsgSW52YWxpZEZQUlJlZyB9OwogICAg
IEVDTUFNb2RlIG1fZWNtYU1vZGUgeyBFQ01BTW9kZTo6c2xvcHB5KCkgfTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKLSAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOworICAgIFZlY3Rv
cjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9j
YWxsTGlua0luZm9zOworICAgIGJvb2wgbV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA6IDE7Cisg
ICAgYm9vbCBtX2RvZXNDYWxscyA6IDE7CiAKLSAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CisgICAgdm9pZCBpbnN0YWxsV2F0Y2hwb2lu
dChDb2RlQmxvY2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOwogCiAgICAgdm9p
ZCByZXN0b3JlU2NyYXRjaCgpOwogICAgIHZvaWQgc3VjY2VlZCgpOwpAQCAtMjQ4LDcgKzI1MSw3
IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAK
ICAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0
IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7Ci0gICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVS
ZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCk7CisgICAgU3BpbGxTdGF0
ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGNv
bnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7CiAKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oY29uc3QgU3BpbGxTdGF0
ZSYpOwogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGNvbnN0
IFNwaWxsU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYgZG9udFJlc3RvcmUgPSB7IH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nh
c2UuY3BwCmluZGV4IGNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1MGVlYTZhM2IzNGU3NWZhOWQuLjRi
Zjc4MGVkMzE3NjZlZGU2YmNjNTYwNDQ2YTUwNzlhY2JjYzEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKQEAg
LTM4LDE5ICszOCwxOSBAQCBQcm94eWFibGVBY2Nlc3NDYXNlOjpQcm94eWFibGVBY2Nlc3NDYXNl
KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2NlcwogICAgIG1fdmlhUHJveHkg
PSB2aWFQcm94eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8
QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBBU1NFUlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0g
TWlzcyB8fCB0eXBlID09IEdldEdldHRlciB8fCB0eXBlID09IFJlcGxhY2UpOwotICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKIFByb3h5YWJsZUFjY2Vzc0Nhc2U6On5Qcm94eWFibGVBY2Nlc3NDYXNlKCkKIHsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkg
Y29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0
CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByb3h5YWJsZUFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcg
UHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRl
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCmluZGV4IGRjMzllMjZjYTJmNGIyYjdh
YmExMmI1YTU1ZjMyNjY0NDEwZWZhNWMuLmU4NDM4NWNhNzVjOWY3NTJlOGU4ZTE2Y2RkZTBhYmNh
YzdiY2M0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b3h5YWJsZUFjY2Vzc0Nhc2UuaApAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIFByb3h5YWJsZUFj
Y2Vzc0Nhc2UgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAKICAgICBXYXRjaHBvaW50U2V0KiBhZGRp
dGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0LmdldCgp
OyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYs
IEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCgpLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRl
KFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAgIGJvb2wgdmlhUHJveHkgPSBmYWxz
ZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0
cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgflByb3h5YWJsZUFjY2Vzc0Nhc2UoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYzhlNmJjNjNhMzZhMzliODQ1OGI5MDBjYjJhNTJlZjRm
MTUxMTIwZi4uOGRmNTgxZTQ2NGYwZTAyZTM0Nzc1NWZjNzkwZDI3Y2I4OTQyNWE0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC01Miw2ICs1Miw3IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5m
byhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpCiAgICAgLCBwcm9w
ZXJ0eUlzSW50MzIoZmFsc2UpCiAgICAgLCBwcm9wZXJ0eUlzU3ltYm9sKGZhbHNlKQogeworICAg
IHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiB9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjp+
U3RydWN0dXJlU3R1YkluZm8oKQpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjk1ZTdkYmI4
NjM4YWI5MmY3NzEzMzg3MWY2ZmE0NmQ5MzVmY2ZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04Nyw3ICs4Nyw3IEBA
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNl
T2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwg
Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFj
Y2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nh
c2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+
KTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVC
bG9jayopOwogCkBAIC0zNDQsMTkgKzM0NCwzMCBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7
CiBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHN0
YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBJQyBmb3IgKmJ5
SWQgY2FjaGVzLiBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hhYmxlIGp1bXAgZm9yICdpbnN0YW5j
ZW9mJyBjYWNoZXMuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9u
ZUxvY2F0aW9uOwotICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1Bh
dGhDYWxsTG9jYXRpb247CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIAorICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxv
Y2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbExvY2F0aW9uOworICAg
ICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICB9
OworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2Nv
ZGVQdHI7CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZVB0cigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9jb2RlUHRyKTsgfQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIHNsb3dQYXRoU3RhcnRMb2NhdGlvbik7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJhdGlvbigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQor
CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKIAotICAgIEdQUlJlZyBiYXNlR1BSOwot
ICAgIEdQUlJlZyB2YWx1ZUdQUjsKKyAgICBHUFJSZWcgYmFzZUdQUiB7IEludmFsaWRHUFJSZWcg
fTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAgdW5pb24gewog
ICAgICAgICBHUFJSZWcgdGhpc0dQUjsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUjsKICAg
ICAgICAgR1BSUmVnIHByb3BlcnR5R1BSOwogICAgICAgICBHUFJSZWcgYnJhbmRHUFI7CiAgICAg
fSByZWdzOworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSOwogICAgIC8vIEZJWE1F
OiBbMzItYml0c10gQ2hlY2sgaWYgU3RydWN0dXJlU3R1YkluZm86OmJhc2VUYWdHUFIgaXMgdXNl
ZCBzb21ld2hlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
aW5kZXggOGFkZWFkNTBmNDU1NmNmZjI1ZTdjN2M5OTc4MzA0ZDQxNzcwOTc0Ny4uNDc2NTRhNzZk
YjVhMTEzZjBmY2I2YmY2OGEzZDIyYWNiYzZhMDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMTU0LDYgKzE1NCwxMSBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxs
TGlua1JlY29yZChmdW5jdGlvbkNhbGwsIGZ1bmN0aW9uKSk7CiAgICAgICAgIHJldHVybiBmdW5j
dGlvbkNhbGw7CiAgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgY2FsbChhZGRyZXNzLCBPcGVyYXRpb25QdHJU
YWcpOworICAgIH0KICAgICAKICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCAyNWEx
MjE5ZmRkNDNiZGZlM2MwN2I4YTI3NGRmOGUwZTU3ODhkMmI1Li5iYTM5ZmZhYzdkYmYzODllYmZi
OGJjNTA2ZDQwOWUxNzUwMGFkMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xODksNiArMTg5LDggQEAgY2xhc3MgQ2FsbFJl
c3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93
UGF0aEdlbmVyYXQKICAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7CiB9
OwogCisKKwogdGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBU
eXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKQEAg
LTI2NCw2ICsyNjYsNjcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGhNb3ZlKAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNv
dXJjZUFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgor
Y2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRUeXBlPiB7CitwdWJs
aWM6CisgICAgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3IoCisgICAg
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xv
d1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVx
dWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAg
ICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4oZnJvbSwg
aml0LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCisgICAgICAgICwgbV9zdHViSW5m
b0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgLCBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcyhz
bG93UGF0aE9wZXJhdGlvbkFkZHJlc3MpCisgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikK
KyAgICAgICAgLCBtX2FyZ3VtZW50cyhzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMp
Li4uKQorICAgICAgICAsIG1fc3R1YkluZm8oc3R1YkluZm8pCisgICAgeworICAgIH0KKworcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+CisgICAgdm9pZCB1
bnBhY2tBbmRHZW5lcmF0ZShTcGVjdWxhdGl2ZUpJVCogaml0LCBzdGQ6OmluZGV4X3NlcXVlbmNl
PEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKTsKKyAgICAgICAgdGhpcy0+c2V0VXAoaml0KTsKKyAg
ICAgICAgbV9zdHViSW5mby0+bV9zbG93T3BlcmF0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAg
aml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPFJlc3Vs
dFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUpCisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRp
b248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgc3RkOjpnZXQ8QXJn
dW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRy
ZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5k
ZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIHRoaXMtPnRlYXJEb3duKGppdCk7CisgICAg
fQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIGZpbmFs
CisgICAgeworICAgICAgICB1bnBhY2tBbmRHZW5lcmF0ZShqaXQsIHN0ZDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+Pjo6dmFsdWU+
KCkpOworICAgIH0KKworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzczsKKyAgICBGdW5jdGlvblR5cGUg
bV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7Cisg
ICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87Cit9OworCisKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlw
ZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAorICAgIFJlc3VsdFR5cGUgcmVzdWx0
LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5
cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KGZyb20sIGppdCwgc3R1YkluZm8sIHN0dWJJ
bmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJl
cXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklU
KiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5
cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVu
dHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKGZyb20sIGppdCwgc3R1YkluZm8sIHN0
dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsIHJlc3VsdCwgYXJndW1l
bnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5B
QkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDBhZjVkZDk4MzljODAyMTZlZjhiY2YwZGU2M2RlM2JjODk1YjNhOGEu
LjkyNDgwMjk3MDUwZmViNWE5ODdlZDlkZjVjOTI3MWI3NjA4MjgyMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDQ1LDI0ICsx
MDQ1LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
SklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpK
dW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKQEAgLTEw
NzAsNyArMTA4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUq
IG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vz
c1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDg2LDI3ICsxMDk4LDM5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7
CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IElu
dmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAg
ICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAg
ICAgIGJhc2UudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNw
aWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdz
KCk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJ
bmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJh
c2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTExMTUsNyArMTEzOSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERv
bnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTEzMCwxNCArMTE1NCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAorICAgICAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwotCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CkBAIC0xMTQ3LDIwICsxMTc2LDM1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAKICAgICAgICAg
SklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
cmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAK
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBt
X2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTE4OSwyMiArMTIzMywy
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiB7CiAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwotCiAgICAgICAgIEpT
VmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5KTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVl
UmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2so
bm9kZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTIxMywyMCArMTI2MiwzNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAg
ICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsK
IAogICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJl
Z3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3Ms
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkg
eworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwpAQCAtMTI1NSw5ICsxMzE5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwg
UGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMjY3LDE0ICsxMzM3
LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdK
SVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
cmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIGdlbi5zbG93
UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCi0gICAgICAgIE5lZWRU
b1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJ
Q0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwK
KyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVj
a05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsK
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNTg5LDkg
KzM2NzAsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlW
YWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKIHsKICAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gR2V0UHJpdmF0ZU5hbWUpOwogICAgIERG
R19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9ncmFwaC5jaGlsZChub2RlLCAxKS51c2VL
aW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFwaC5jaGlsZChu
b2RlLCAxKSk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CisgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFw
aC5jaGlsZChub2RlLCAxKSk7CisKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5v
cmlnaW4uc2VtYW50aWM7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29y
ZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2Rl
T3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJz
ID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMzYwMiwxNCArMzY5MywyMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1Zh
bHVlUmVncyBiYXNlLCBKUwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlKSk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0
UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1
bHQucmVncygpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIp
OwogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAg
ICBhdXRvIG1ha2VTbG93UGF0aENhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgYXV0byBtYWtl
U2xvd1BhdGhJQ0NhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICByZXR1cm4gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8o
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIGJhc2UsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKHByb3BlcnR5LnBheWxvYWRHUFIoKSkpOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsCiAgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLApAQCAtMzYxNyw4ICszNzE0LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlMKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IGJhc2VJc0tub3duQ2VsbAotICAgICAgICA/IG1ha2VTbG93
UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXlsb2FkR1BSKCkpKQotICAg
ICAgICA6IG1ha2VTbG93UGF0aENhbGwoYmFzZSk7CisgICAgICAgID8gbWFrZVNsb3dQYXRoSUND
YWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKKyAgICAgICAg
OiBtYWtlU2xvd1BhdGhJQ0NhbGwoYmFzZSk7CiAKICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4s
IHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQ
YXRoKSk7CkBAIC0zNjMwLDI4ICszNzI3LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG1fZ3JhcGgu
Y2hpbGQobm9kZSwgMCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8u
ZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0
YUZvcm1hdEpTKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNl
OiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAor
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5q
c1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNo
SWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAg
YnJlYWs7CkBAIC0zNzUwLDI5ICszODU5LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwotCi0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgLy8gV2UgZW1pdCBwcm9w
ZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKICAgICAv
LyB0byBjaGVjayBpdCBoZXJlLgogICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVs
ZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5l
IDogUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OwotICAgIGNhY2hlZFB1dEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBw
dXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2Rl
KQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVS
ZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgR1BSUmVnIGJyYW5kR1BS
ID0gYnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIo
KSwgYnJhbmRHUFIpOwpAQCAtMzc4NiwxNiArMzkwNiwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKIAogICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRS
ZWdpc3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJh
bmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5k
R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1i
b2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAg
ICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4s
IHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQ
YXRoKSk7CkBAIC0zODA2LDkgKzM5MzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzgyMCwxNiArMzk1NCwyNCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZv
R1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVz
dWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5k
R1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xv
d1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKQEAgLTM5NDcsMjIgKzQwODksMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92
ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIs
IEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFs
dWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3Vs
dEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0
Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVn
aXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJv
dG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAg
IHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdz
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVS
ZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VP
ZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0zOTczLDYgKzQxMjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAgICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90
b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTM5ODAsMTMgKzQxMjks
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAg
R1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVH
UFIgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgIAotICAgICAg
ICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
SlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNo
MkdQUik7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHN0dWJJ
bmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIAogICAgICAgICBibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0z
OTk2LDEyICs0MTUwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KE5vZGUqIG5vZGUpCiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAg
ICAgCisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFu
ZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgCisg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1Zh
bHVlUmVncyBwcm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBA
IC00MDE3LDcgKzQxNzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZihOb2RlKiBub2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0
YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIs
IHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFu
Y2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBz
dHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAog
ICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CkBAIC0xMzA0Nyw0NiArMTMyMDcsNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVRvSW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+
ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChO
b2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERp
cmVjdChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHVi
SW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsK
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNt
YU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ3MTgsMTggKzE0ODk2LDIwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNj
cmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5k
LCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFN
b2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CiAgICAgICAg
IC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24n
dCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BS
LCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVlUmVncywgZmFsc2UpOwor
ICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCisgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNjcmF0Y2hHUFIs
IGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
QEAgLTE0NzM5LDkgKzE0OTE5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1
bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKLSAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5z
dHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1Bh
dGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFs
dWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlk
ZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVl
UmVncywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlJZChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5k
ZXggNzRjMTVlNjk3ZTJjYzMyZjZlOWIyZTdjMjVhNmUxOGMxM2Q0MGQ2Yi4uODY4YmZmNzBmOTRm
OGUyMTExYTQ2OGRkZWE0OTUzMjE3NDVmYjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTksMTYgQEAgY2xhc3MgU3Bl
Y3VsYXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRhY2hlZChOb2RlKik7CiAK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lk
IGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZh
bHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQs
IEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVy
OjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwor
ICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUg
PSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlz
R1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21w
aWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkp
OworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nl
c3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0
JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdH
UFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBl
KTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9y
Tm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6
Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUs
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3Vs
dFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNz
VHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdH
UFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BS
UmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENv
bXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJ
ZChOb2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
IHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVy
dCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9kZSosIGJvb2wg
aW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwg
R1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICB2
b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BS
LCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CkBAIC05
NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6
QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9u
VHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSwg
cmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICFGdW5jdGlv
blRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZvaWQ+CisgICAgY2FsbE9w
ZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9u
VHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgfQor
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFj
a09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiAgICAgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBh
IHdlYWstcG9pbnRlci4KQEAgLTk4OCw2ICsxMDA4LDEzIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklU
IHsKICAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgIH0KIAor
ICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1pdFN0
b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBt
X2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBm
dW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKQEAgLTEw
MTAsNiArMTAzNywyOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBj
YWxsOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGFwcGVuZENh
bGwoYWRkcmVzcyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAg
fQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBh
ZGRyZXNzLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCisgICAgeworICAgICAgICBh
cHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBtX2ppdC5zZXR1cFJlc3VsdHMocmVzdWx0MSwg
cmVzdWx0Mik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzKQorICAgIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJl
c3VsdFJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChhZGRy
ZXNzLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisjZW5k
aWYKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQp
CiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAppbmRleCBmMTJmODZmMGQ2ODljNTQ2MDNlZjBkZjNjMDc3YTIxNGJlMWY5
MzAzLi41MjY0NmE5NjFmZmI4NWJjNDlkY2ExMmY0Zjk1MDAxNzc1M2Y3NDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
QEAgLTE2OCwxNSArMTY4LDE2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVk
Z2UgZWRnZSwgR1BSUmVnJiB0YWdHUFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0
ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9k
ZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJh
c2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5w
YXlsb2FkR1BSKCksIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAg
ICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCks
IHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlkZW50
aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdH
UFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJl
c3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwK
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5
cGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlzIGEg
aGFja3kgZml4IGZvciB3aGVuIHRoZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlh
cyB0aGUgYmFzZSBwYXlsb2FkIHdpdGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5z
CiAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwg
d2hpY2ggaGFzIGEgcmVsYXRpdmVseSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9y
eSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92ZXIg
b25lIG1vdmUgaW5zdHJ1Y3Rpb24uCkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0g
bV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElm
TmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VU
YWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlm
aWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQ
UiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFsaWRH
UFJSZWcsIHR5cGUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAg
ICAKQEAgLTIyOCwxNSArMjI5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQoCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKLSAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIs
IEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5
bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVn
IHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQ
UiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVy
OjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZv
R1BSKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVy
cygpOwogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdp
biwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5
bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25l
LCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BS
KSwgSW52YWxpZEdQUlJlZyk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwogICAgIApAQCAtMjM0MSw4ICsyMzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAg
ICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BS
UmVnKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMzQwNSw3ICszNDA3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52
YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAg
ICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxp
ZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQ
UiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI1LDcg
KzM0MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNW
YWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbCh0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
VGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhp
c1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJl
Zywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWY4YmEzODY4ZTg1ODdjMTRjMzc0MDJiOGJj
Mzg0MzA5YzgxMjBhMC4uMjkzMDMwZmQxZTQyYzAzOTRjZjI2YzM4YjVhNWQzNjA1OTFmMjFlYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0xNDcsMTIgKzE0NywxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1Zh
bHVlKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJl
c3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUp
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0g
ICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRp
Zmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3Jp
Z2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBz
bG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNz
VHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5
cGUgdHlwZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2Fs
bFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0
aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZwogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRv
IHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJl
Z2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChy
ZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwog
ICAgIH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAot
ICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlw
ZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJn
ZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1
bmN0aW9uKHR5cGUpLAotICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNo
ZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlv
bih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAg
ICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRo
VGFyZ2V0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcg
cmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CkBAIC0xODcsMjAgKzE5NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUgogICAg
IHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNl
dCh0aGlzR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxz
ZSk7CisgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQ
UikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNH
UFIpLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAg
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRl
bnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKQEAgLTI2ODEsMTYgKzI3MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KSk7Ci0KKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMsIFJldXNlLCBwcm9wZXJ0eSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAg
ICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKKyAgICAgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKwogICAgICAgICAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CkBAIC0yNzAwLDggKzI3MjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUikpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlH
UFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAg
ICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDEx
ICsyNzM5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAog
ICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRC
eVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAg
ICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5ODQsOSArNDAx
OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBj
YXNlIEdldEJ5SWRXaXRoVGhpczogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IENlbGxVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsK
KyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAg
ICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0
aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTM5OTQsMTQgKzQwMzYsMjEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlk
V2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJl
c3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcExp
c3QoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTQwMTMsNyArNDA2Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFz
ZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9H
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCA4MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZmYmNmZDYyM2NhNWM1YzdkLi4zMjk4NmE3NzAzZTgx
NDA3ZDM0YzkzMTVlOWE3NmNhNTE2YWQ2NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYgKzM5NzgsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAt
NDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RD
ZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhK
dW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVz
dWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00
MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTQxMzAsMTAgKzQxNDUsMTEgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJh
bXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3By
KCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7
CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKLSAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgc3R1Yklu
Zm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAg
ICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMgKzQxNzUsMjUgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAg
ICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBl
KSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9H
UFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpOwor
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSks
IEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhD
YWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBtaWdodCB3YW50IHRvIGxhdGUtY2xv
YmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1MzgsMTAgKzQ1NjcsMTIgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBKUyBzZXR0ZXIgY2FsbCBJQ3MgZ2Vu
ZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0aGlzLgogICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBj
YWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBd
LmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIHN0dWJJbmZvR1BSLCBH
UFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQ
UlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBd
LmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdl
bmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtU
byhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBv
cnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyMzksNiAr
NTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC01MjU5LDEw
ICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlH
UFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0
Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0
eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVl
UmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmlu
ZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50MzI7CkBAIC01MjgwLDEzICs1MzI1
LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
dENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0
KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhC
ZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5Myw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMiA6IDE7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAg
ICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwpAQCAtNTg3NCw3ICs1
OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29u
c3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdC
aXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBwYXJhbXNbMl0uZ3ByKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigp
KTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJz
Y3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BS
KSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZh
c3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAgICAgICAgICAgICAgICBwYXJhbXMu
YWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0
LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rp
b247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENh
bGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyMjQyLDggKzEyMzE0LDggQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+
IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2Vw
dGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIzMzIsMTIgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhj
ZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1
dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwxMiArMTIzNDgsMjQgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93
UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFy
YW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbklu
QnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRp
Zmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9w
dGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEy
NDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsg
VmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgCkBAIC0x
MjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1wOwogICAgICAg
ICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEyNTIzLDEwICsxMjYxMCwxMiBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUt
PnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5zdGFuY2VPZkdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90
b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1
bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLAog
ICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmplY3QpOwogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAg
ICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwo
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgo
CkBAIC0xMjUzNywxMiArMTI2MjYsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmso
JmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQ
YXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mb0dQUiwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv
dHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJl
c3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9y
dFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTM5ODYsNiAr
MTQwODcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENl
bGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgR2V0QnlJZEZsdXNo
L0dldEJ5SWREaXJlY3RGbHVzaCwgd2UgbWlnaHQgZ2V0IHNvbWUgcGVyZm9ybWFuY2UgYm9vc3Qg
aWYgd2UgY2xhaW0gdGhhdCBpdAogICAgICAgICAvLyBjbG9iYmVycyB2b2xhdGlsZSByZWdpc3Rl
cnMgbGF0ZS4gSXQncyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgdGhvdWdoLCBzaW5j
ZSB0aGUKQEAgLTE0MDE0LDEwICsxNDExNiwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAgICAgICBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNp
dGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IElu
dmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRH
ZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5
cGUpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBz
dHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUg
PSBqaXQubGFiZWwoKTsKQEAgLTE0MDMwLDEyICsxNDEzNCwyNCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFy
YW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENh
bGwpOwpAQCAtMTQwNjAsOCArMTQxNzYsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwot
CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAt
MTQwODMsMTAgKzE0MTk5LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRs
ZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsK
IAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJl
ZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkp
LAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1Yklu
Zm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVs
KCk7CkBAIC0xNDA5OSwxMiArMTQyMTcsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJl
Z2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0
aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtU
byhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBv
cnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRleCAyYWRkNDk0YzUzMmFh
ZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRmLi5iNGU0NzU4ZTU4ZmIxZTc5MjZjNmEwNzE4Mzcz
MTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0
aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHdvcmRTaXplID0gODsKIAogU2xvd1BhdGhDYWxs
Q29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKLSAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJl
Z2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0
LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVj
dENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6IG1faml0KGppdCkKICAgICAsIG1fbnVtQXJncyhu
dW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdpc3RlcihyZXR1cm5SZWdpc3RlcikKQEAgLTYzLDYg
KzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKICAgICBt
X2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm1lcmdlKG1fYXJndW1lbnRSZWdpc3RlcnMpOwog
ICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBtX2NhbGxp
bmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAg
aWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
IG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lz
dGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLmZpbHRlcih1c2VkUmVnaXN0
ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxsaW5nQ29udmVudGlvblJl
Z2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEyIEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6On5TbG93
UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6
OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBj
b25zdAogewotICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxU
YXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0KTsKKyAgICByZXR1cm4gU2xvd1Bh
dGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJz
LCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENhbGxDb250ZXh0
OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKSBjb25zdAorewor
ICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIG51bGxwdHIsIG1fYXJn
dW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBhZGRyZXNzLm9mZnNldCk7CiB9CiAKIFNsb3dQYXRo
Q2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKQEAgLTEzMyw2ICsxNDAsMjIgQEAgU2xvd1BhdGhD
YWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Nsb3dQYXRoQ2FsbCBTbG93
UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyBj
YWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXkgPSBrZXlXaXRoVGFyZ2V0KGNh
bGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCByZXN1bHQgPSBTbG93UGF0aENhbGwobV9qaXQu
Y2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7CisKKyAgICBtX2ppdC5hZGRMaW5rVGFzaygKKyAg
ICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHVuayA9CisgICAgICAg
ICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwgcmVzdWx0Lmtl
eSgpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxsKCksIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih0aHVuay5jb2RlKCkpKTsKKyAgICAgICAgfSk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhG
b3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAg
IGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4MWYyNzdmNmI4MjE3YWM5ZjNmYTgwYzEyYS4uZDZm
Mjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBmNDgyYTgzMWQ0YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCkBAIC01NCwxNSArNTQsMTcgQEAgY2xhc3Mg
U2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2lsbCBiZSBhbiBSQUlJIHRoaW5neSB0aGF0IHdpbGwg
c2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sgc2l6ZXMgYW5kIG9mZnNldHMgYW5kIHN1Y2guCiBj
bGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBTbG93UGF0aENhbGxDb250
ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51
bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlcik7CisgICAgU2xvd1BhdGhDYWxsQ29udGV4dChS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25lZCBudW1Bcmdz
LCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rl
cik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRleHQoKTsKIAogICAgIC8vIE5PVEU6IFRoZSBjYWxs
IHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVhZHkgZ29pbmcgdG8gYmUgbGlua2VkIGJ5IHRoZSBK
SVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAgICAvLyBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB5
b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAgICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2Fs
bCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CiAKIHByaXZhdGU6CiAgICAg
U2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0OwogICAgIAogICAgIFJlZ2lzdGVyU2V0IG1fYXJn
dW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lz
dGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiB7CiAg
ICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAgewotICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0
IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAx
LCByZXN1bHRHUFIpOworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJl
Z2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIElu
dmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8dm9pZChBcmd1bWVudFR5
cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAgICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwo
dm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0xMTcsNiArMTE5LDQ4IEBAIFNsb3dQYXRoQ2FsbCBj
YWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlv
bigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhl
bHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LAorICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgQXJndW1l
bnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgU2xvd1BhdGhDYWxsIGNhbGw7CisgICAgewor
ICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBz
aXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8dm9pZChBcmd1
bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFyZ3VtZW50cy4uLik7CisgICAgICAgIGNhbGwgPSBj
b250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7CisgICAgfQorICAgIGlmIChleGNlcHRpb25UYXJnZXQp
CisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+YXBwZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2so
dm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9u
VGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRHUFIs
CisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgaWYgKGNhbGxTaXRlSW5k
ZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKHZtLCB1c2Vk
UmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJn
dW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdp
bihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5
cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0YXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGVPcmln
aW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJn
ZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgQXJndW1l
bnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oCisgICAg
ICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3RlcnMsIGppdCwgY2FsbFNpdGVJbmRleEZvckNvZGVP
cmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLAorICAg
ICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpG
VEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCmluZGV4IDJkMzA2YzYyMDMzYTgzOTA4ZTZm
Y2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdlODI2MWZkNDczNmIxZDMzNzJiZWY1NTEzZWZlNWFh
MzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewotICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIs
IG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2Nh
bGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwg
bV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKKyAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJz
ID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgaW5kaXJl
Y3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9p
bnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0
ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxs
S2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJjN2NlODNkNzA1MjBlNzYxMzg0MmJkZDMzZC4uMGNl
NjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0MWFlMTAwMGQxMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCkBAIC01MSwxMSArNTEsMTIgQEAg
Y2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoCiAgICAg
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
Y2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzLAotICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0LCBpbnQzMl90IGlu
ZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhzZXQpCiAgICAgICAgICwg
bV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKQogICAg
ICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMoYXJndW1lbnRSZWdpc3RlcnMpCiAgICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1faW5kaXJlY3RPZmZzZXQoaW5kaXJlY3RPZmZz
ZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYzLDEwICs2NCwxMSBAQCBjbGFzcyBTbG93UGF0
aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY2FsbFRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBh
cmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRSZWdpc3RlcnM7IH0K
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBp
bnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpcmVjdE9mZnNldDsg
fQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSB3aXRoQ2FsbFRhcmdldChGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gU2xvd1Bh
dGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMo
KSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3Rl
cnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCksIGluZGlyZWN0
T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAg
IFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVy
cyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsK
ICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KERlbGV0ZWRWYWx1ZVRhZykKICAgICAg
ICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkKLSAgICAgICAg
LCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05MywxOCArOTMsMjAgQEAgY2xh
c3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7CiAgICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3Rl
cnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJzCiAgICAgICAgICAgICAmJiBtX2NhbGxUYXJnZXQg
PT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5t
X29mZnNldDsKKyAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0CisgICAg
ICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0ID09IG90aGVyLm1faW5kaXJlY3RPZmZzZXQ7CiAg
ICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
dXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fdXNlZFJl
Z2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCArIG1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogCiBw
cml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRhcmdldDsKICAgICBSZWdpc3RlclNldCBtX2FyZ3Vt
ZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZfdCBtX29mZnNldDsKKyAgICBwdHJkaWZmX3QgbV9v
ZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBtX2luZGlyZWN0T2Zmc2V0IHsgMCB9OwogfTsKIAog
c3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExU
aHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWExMmFhZGRkMjc2YTkzMzEzM2MwYjM2Yzg2NjEzYWQu
LmQ5MjAyYTNkNDE5ZTVjYjJhNTllMzFmYmU4NWE0YWQ1M2JlNDk0MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRpb25UaHVua0dl
bmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKICAgICAKICAgICAv
LyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFj
dGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5v
bkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1
ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAg
ICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3Jh
dGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwogCiAgICAgaml0
LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAsMTMgKzIwMCwyMCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwg
Y29uc3QgUwogICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0K
ICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBr
ZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQ
UkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIx
LCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3VtZW50UmVnaXN0
ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyID0ga2V5LmFyZ3VtZW50UmVnaXN0
ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBkb250Q2xvYmJlci5z
ZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBX
VEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAgICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbCA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNh
bGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5pbmRpcmVjdE9mZnNldCgpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSksIEdQ
UkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0LnJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CkBA
IC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICBqaXQucmV0KCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBr
ZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJGVEwgc2xvdyBwYXRoIGNhbGwg
dGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDM1NGY5NTQ3YjRhYmYz
Mjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2QuLjZlYTY1NDU0YjhiMjVmODdkOWI2YzdhNDlhNzdj
Y2Y2NTAzMTJjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRl
ICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTY1
Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICBhdXRvIGNhbGxM
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpJVENvbXBpbGF0aW9uUHRy
VGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1ZmZlci5hZGRNYWluVGhyZWFkRmluYWxpemF0aW9u
VGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgKmlu
Zm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0
dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9LCB7
IH0pKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExv
Y2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRo
dW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcyZDg5
ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4OTdlYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3LDcgKzIwNyw3IEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogCiAgICAgLy8g
ZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3Nl
ZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBleHRyYVBva2Ug
aXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFj
ay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewog
ICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIxOSw4IEBAIGNs
YXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAg
Y3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVk
IGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAgIEFyZ0NvbGxl
Y3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCisgICAgICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQs
IHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+CisgICAgICAg
IEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYgb3Ro
ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2Vz
OwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwpA
QCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVz
dGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
ICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFy
Z3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNo
UmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsg
MSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJT
b3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tu
dW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBS
UmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJS
ZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwg
bnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0
aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBh
cmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNl
c10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
IAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5h
dGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50
LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQo
KnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAg
ICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50
OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3NzU291cmNlc10g
PSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAot
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEs
IGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3Rp
bmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMg
KyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBh
cmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4g
cmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMp
OwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3Vt
ZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9
IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0g
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJnKEdQ
UlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhp
cyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJn
dW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNd
ID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4
dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsg
MSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3Vy
cmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Up
CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVk
IGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xhbmcgY2xhaW1z
IHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBzdGQ6
Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1
bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQUnMp
OworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CiAgICAgICAg
IGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEsMTUgQEAgY2xhc3Mg
Q0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFy
Z3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVk
IGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tl
T2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9m
ZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBS
QXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWdu
ZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQo
Y3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0g
Y2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVu
dCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7
CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAgLTM3Niw4ICsz
ODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRpb24gdGltZSBl
eHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRlbXBs
YXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFy
Z3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lk
IG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9U
eXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJ
bmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSArNDAzLDMxIEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2Up
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1
ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAg
ICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BS
UmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJl
Z2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3Mg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0LDggKzQzNSw4
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2Vsc2Ug
Ly8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJS
ZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxk
IG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2OSwyNSArNDgw
LDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3Vt
ZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJh
UG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgp
LCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCiAKICAg
ICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0gICAgICAgIGlm
IChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsK
KyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAx
KTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVO
VF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBh
cmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwog
ICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50
KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUg
QXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVk
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcy
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWdu
ZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0Nv
dW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAg
aWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJF
eHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAyKTsKKyAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7
CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSAr
IDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdV
TUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFy
Z3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIoKSk7CkBAIC01
NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyks
IGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJy
ZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIoKSk7CkBAIC01
NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElO
RSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwg
QXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJ
bW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBp
dCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5n
IHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25z
IHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZlciBuZWVkZWQg
dG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdlIHdvdWxkIG5l
ZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNoIHNvdW5kcwpA
QCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJn
LCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwK
ICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUK
ICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1
ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFy
ZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8
CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVl
CiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFs
dWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBB
cmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90
PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUK
ICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252
ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+Pios
IENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19z
YW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBU
cnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2Fz
ZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0
byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3Nh
bWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNjM5
LDggKzY1MCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0aGUgYXJn
dW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5v
bkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQ
UkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJjZXMs
IEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJj
ZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBG
UFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVibGljOgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdXNpbmcgRmly
c3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
c2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJp
dCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxB
cml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNl
bmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAg
fSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJl
YWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBm
b3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9w
ZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2Fu
aXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQorICAgIH0KIAot
I2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlT
X0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBF
LCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQogICAgIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2
NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAg
ICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxB
cml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNl
bmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwg
MCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50
cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+
IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFs
bHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9y
IDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUs
IDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4o
KSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5
cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGZ1
bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAgfQogCi0jdW5k
ZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsK
KyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVj
dGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVzcy5iYXNlLCBH
UFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJl
c3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IGY3YWEz
MjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLmFiMzRhMTQ1MDVlYTE5NzVlMTEy
ODM2MWUzMDA4ZjQ1NWVmN2NmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTM4
LDkgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1HQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCitHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6OkdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNl
cykKICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQorICAgICwgbV9r
ZXlzKFdURk1vdmUoa2V5cykpCisgICAgLCBtX3dlYWtSZWZlcmVuY2VzKFdURk1vdmUod2Vha1Jl
ZmVyZW5jZXMpKQogewogICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0aGlzKTsK
IH0KQEAgLTQ5LDYgKzUyLDkgQEAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NBd2FyZUpJVFN0
dWJSb3V0aW5lKCkgeyB9CiAKIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVy
b1JlZkNvdW50KCkKIHsKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQorICAgICAgICBt
X3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKwogICAgIGlmIChtX2lzSmV0dGlz
b25lZCkgewogICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVlZGVkIGZvciB3aGVuIHRoZSBzeXN0
ZW0gc2h1dHMgZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAgICAgLy8gdGhlIEpJVCBzdHViIHJv
dXRpbmUgc2V0IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0IGFyb3VuZCB0byBkZWxldGluZwpA
QCAtNzUsOSArODEsOSBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6ZGVsZXRlRnJvbUdD
KCkKIH0KIAogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRT
dHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsCisgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZt
LCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgRml4ZWRWZWN0b3I8U3Ry
dWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgY29u
c3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0lu
Zm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAgIDogR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZl
cmVuY2VzKSkKICAgICAsIG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlua0lu
Zm9zKFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiB7CkBAIC0xMDYsOSArMTEyLDkgQEAgdm9pZCBN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwo
U2xvdFZpc2l0b3ImIHZpc2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAotICAg
IGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUs
IFZNJiB2bSwgIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2Vs
bHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVk
VmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4mJiB3ZWFrUmVmZXJlbmNlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpT
Q2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0
ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5r
SW5mb3MpKQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RG
TW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIo
Y29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
LCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyLT5jb2Rl
T3JpZ2lucygpKQpAQCAtMTUyLDggKzE1OCwxMCBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGlu
ZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIH0KIAogCi1SZWY8
SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorUmVmPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmIGtleXMsCisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1Jl
ZmVyZW5jZXMsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgYm9v
bCBtYWtlc0NhbGxzLApAQCAtMTY1LDE4ICsxNzMsMTggQEAgUmVmPEpJVFN0dWJSb3V0aW5lPiBj
cmVhdGVKSVRTdHViUm91dGluZSgKICAgICBpZiAoIW1ha2VzQ2FsbHMpIHsKICAgICAgICAgLy8g
QWxsb2NhdGluZyBDYWxsTGlua0luZm9zIG1lYW5zIHdlIHNob3VsZCBoYXZlIGNhbGxzLgogICAg
ICAgICBBU1NFUlQoY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKHZtLCBjb2RlLCBXVEZNb3ZlKGtleXMpLCBX
VEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoY29kZUJsb2Nr
Rm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkp
KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlu
a0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJD
YWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBX
VEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5m
b3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxT
aXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5r
SW5mb3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpj
cmVhdGUoY29kZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpj
cmVhdGUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKTsK
ICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUs
IHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3duZXIsIGNlbGxz
LCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5k
ZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFjYTlmZC4uMDVhOGE2ZmM2YjQ2
NTk3MDdiODYwMjI5ZWY3NjhkZDYzNzA1NTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7
CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIApAQCAtNTQs
MTIgKzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2Vz
IG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmKTsKICAgICB+R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0
aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0
ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2Rl
LCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZl
Y3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcykKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdU
Rk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKSk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDkgQEAgY2xhc3MgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAgbWFya1JlcXVp
cmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAKKyAgICBjb25zdCBGaXhl
ZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Jm1fa2V5czsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiogd2Vha1JlZmVy
ZW5jZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV93ZWFrUmVmZXJlbmNlczsgfQorCiAgICAg
dm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTgxLDYgKzg1LDkgQEAg
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIAog
ICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSmV0dGlz
b25lZCB7IGZhbHNlIH07CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiBtX2tleXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+IG1fd2Vha1Jl
ZmVyZW5jZXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRp
dGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3ICs5NSw3IEBAIGNs
YXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBjbGFz
cyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91
dGluZSB7CiBwdWJsaWM6CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICAg
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZN
JiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxM
aW5rSW5mbz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwg
Rml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZl
Y3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJraW5nR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0xMDksNyAr
MTE2LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIg
ZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdD
QXdhcmVKSVRTdHViUm91dGluZSBCYXNlOwogCi0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2Vs
bCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRl
SW5kZXgpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxs
TGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKICAgICB+
R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAogICAg
IHZvaWQgYWJvdXRUb0RpZSgpIGZpbmFsOwpAQCAtMTI5LDkgKzEzNiwxMCBAQCBjbGFzcyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJr
aW5nR0NBd2FyZUpJVAogLy8gYXBwcm9wcmlhdGUuIEdlbmVyYWxseSB5b3Ugb25seSBuZWVkIHRv
IHBhc3MgcG9pbnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQKIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxs
IHRvIEMrKyBvciBKUy4KIC8vIAotLy8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHVi
Um91dGluZSgKKy8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgK
IC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
IGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBib29sIG1ha2Vz
Q2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQyLDggKzE1MCw4IEBAIGNsYXNzIEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3
YXJlSklUCiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQgdXAgd2l0aCBt
b3JlIGNvZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1SZWY8SklUU3R1YlJvdXRpbmU+
IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFr
ZXNDYWxscywKK1JlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgKKyAg
ICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgRml4
ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiYmIHdlYWtSZWZlcmVuY2VzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFr
ZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYm
IGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5k
bGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUlu
ZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2
YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgwMDc3YjBj
NGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDYwLDYg
KzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFy
Z3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJl
Z1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFy
Z0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6
ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblBy
ZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQg
b24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6eDY7IC8v
IHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0gQVJNNjRS
ZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4
MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIg
PSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGVlMWE0ZTM3ZmZjMjc3ZGNkOTZkNGIwMjJiNzcyN2M1
YmJmNzQyM2QuLjliODIzZWM4NDIzYTJlZjNmY2U5YjNiMzBhMDBiNjMxM2MzNjkxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkzMSwxMiArOTMxLDEyIEBAIHZvaWQgSklUOjps
aW5rKCkKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29tcGlsYXRpb25JbmZvIDog
bV9ieVZhbENvbXBpbGF0aW9uSW5mbykgewogICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRj
aGFibGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5ub3RJbmRleEp1bXA7Ci0g
ICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gbm90SW5kZXhKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhK
dW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKIAogICAgICAgICAgICAgUGF0Y2hhYmxl
SnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVK
dW1wOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4gYmFkVHlwZUp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRU
eXBlSnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2Nh
dGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVy
bmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwogCkBAIC05NDUs
MTQgKzk0NSwxOSBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRo
VGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0
aFRhcmdldCkpOwogCiAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8t
PnNldFVwKAotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCwKLSAgICAgICAgICAgICAgICBi
YWRUeXBlSnVtcCwKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLAogICAgICAgICAg
ICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKICAgICAgICAgICAgICAgICBi
eVZhbENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCiAgICAgICAgICAgICAgICAgZG9uZVRh
cmdldCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwKICAgICAgICAgICAgICAg
ICBzbG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlv
bkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJl
dGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgICAgIGJ5VmFsQ29t
cGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IHNsb3dQYXRoVGFy
Z2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90
SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRp
b25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3NWM5
Y2I5NmIxMzY1MzJmMDg2MWYyZjBhODA1OGVmYzZiMDU2YjI0Li45ZjMxNjVkNTViOGJkZmRmMTAy
YmZhZjhhZDEzOGU2ODFhYWRjZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI5NCw2
ICsyOTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25D
YWxsOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsKEFkZHJlc3MgZnVuY3Rp
b24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24sIE9wZXJhdGlvblB0clRh
Zyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAg
IENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk1LDM5ICs0MDAsMzkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFu
ZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAgICAgLy8gU3RydWN0
dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2FzZXMuIEZhbGwtdGhy
b3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdUMCwgYW5kIGl0IGlz
IG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKSB7IHJldHVy
biBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMyU2hhcGUpOyB9
Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlw
ZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1p
dEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOworICAgICAgICBK
dW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsgcmV0dXJuIGVtaXRD
b250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBl
KTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbios
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOworICAgICAgICBKdW1wTGlzdCBl
bWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNT
aGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CisgICAgICAgIEp1
bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlN
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKIAogICAgICAgICAvLyBQ
cm9wZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29udGFpbnMgaW5k
ZWNpbmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5vdCB5ZXQgbG9h
ZGVkLiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVyby1leHRlbmRl
ZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLgog
ICAgICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91
c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlW
YWxJbmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlW
YWxJbmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1
b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbElu
Zm8pOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBK
dW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwor
ICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUg
PSBDb250aWd1b3VzU2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3As
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
QnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgogICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CkBAIC04NzAsMTMgKzg3NSwxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPik7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRy
ZXNzKTsKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5U
eXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlmCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4
Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCk7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1l
dGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorICAgICAg
ICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFBy
b2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAg
ICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBAIC04ODYsNiArODk1LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAg
fQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRh
cmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0
YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFy
Z2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAgICAgIHN0cnVj
dCBpczY0Qml0VHlwZSB7CkBAIC05MDYsNiArOTIzLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNs
b3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9p
ZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+
KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBjYW5ub3QgdXNl
IHN0YW5kYXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRoYW4gNjQgYml0
cy4KKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5hbWUgRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgICAg
ICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoQWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbHNl
IC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFyZ3MuLi4gYXJn
cykKQEAgLTkxMyw2ICs5NDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykK
KyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3Bl
cmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0
KSk7CisgICAgICAgIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtOTIzLDYgKzk1OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAg
IH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBN
ZXRhZGF0YSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIHRhcmdldCwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQs
IGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChPcGVyYXRp
b25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4uLiBhcmdzKQog
ICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAxYjQ5ZDQ4
OWRhYTJiNzg2YWI3OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMwYzdmNzY3MTM3OTQ3MGU0
ZGQ5ZDRkYTgzNjVkYTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
QEAgLTM5OCw4ICszOTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNv
ZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgp
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxLCBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4p
OwpAQCAtNDMyLDggKzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Bl
bihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdl
bi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0
cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwor
CiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CkBA
IC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJl
Z3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgICAgIHBy
ZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSks
IHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBK
U1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5
cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIp
LCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAg
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00
OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBi
cmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCku
cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1Zh
bHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNTI4LDE2
ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAgICBub3RPYmpl
Y3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAgICAgIG5vdE9i
amVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwogCiAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBs
KCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRC
eUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRv
bmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBub3RPYmplY3Qu
YXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAgICAgICBDYWxs
IGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
Z2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZG9uZVZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRv
bmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
anVtcCgpKTsKQEAgLTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAog
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5z
dHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7Cisg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwog
ICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGVj
YzRlNWYzZmY2ZDA3Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFmZGNhYzc4MmFj
OWM4NzRlNTUwYWZmYjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBKSVRUeXBl
OjpCYXNlbGluZUpJVCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAg
ICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
KSksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihp
ZGVudC0+aW1wbCgpKSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxv
YWRJdGVyYXRvckdQUiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZhbGlkR1BSUmVn
LAogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgcHJl
c2VydmVkUmVncy5hZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6
OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAog
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkpLAogICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0
eU5hbWVzLT5kb25lLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVz
dWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25lUmVncywKKyAg
ICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAK
ICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9j
aywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMt
PnZhbHVlLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BS
LCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdzLAorICAgICAg
ICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4
IDRjZTc3ZjViMGNlODk5NTBhZmMxZTUyZjQzNTY1MTQ1NjUxYzdiOTguLjE1YzFkN2UwOTg4ZDgz
ZTE0MGQ0MzE5ZjQ2MjM0MTA4ODJiNWJmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiBjbGFzcyBW
TTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBIb3N0
Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVKSVQsCi0gICAg
REZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0Q2FsbFRodW5r
ID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJhc2VsaW5lSklU
ID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIxMDEsCiB9Owor
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7CitzdGF0aWNfYXNz
ZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9mSklUVHlwZSk7
CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4g
ewogcHVibGljOgpAQCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0g
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6OkJhc2VsaW5l
SklUOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElDKEpJVFR5cGUgaml0VHlw
ZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGpp
dFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBPcHRpb25z
Ojp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwogICAgIHZpcnR1YWwgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhfdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNkZTY0NjIyY2UuLjJmZThi
OWI4ZTMxYzhiZGJhMzcxNDJhNmY2MDg3ODRiZGI0M2ZkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC00Myw5
ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHViSW5mbygpCiB9
CiAKIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBt
X2ppdFR5cGUoaml0VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9jb2RlQmxvY2sgPyBtX2Nv
ZGVCbG9jay0+YWRkU3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdpbikgOiBnYXJiYWdlU3R1
YkluZm8oKTsKICAgICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNpdGU7CkBAIC02
MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCiAK
ICAgICBtX3N0dWJJbmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5zbG93UGF0aENhbGxMb2Nh
dGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENh
bGwpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAg
bV9zdHViSW5mby0+bV9zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8
SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOwogICAgIG1fc3R1YkluZm8tPnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc2xvd1BhdGhCZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5l
cmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAotICAgIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2Vk
UmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQogewog
ICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJ
bmZvLT52YWx1ZUdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdz
LnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIg
PSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJh
c2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0g
dmFsdWUudGFnR1BSKCk7CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklU
QnlJZEdlbmVyYXRvcigKIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3Rh
cnQuaXNTZXQoKSk7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAg
ICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxp
emUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRo
U3RhcnRMb2NhdGlvbjsKIH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RD
b21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2l6ZSkKIHsKKyAgICAv
LyBXZSBnZW5lcmF0ZSB0aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBTaGFyZWRJ
QyBpcyBlbmFibGVkIGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2UgSW5saW5lQWNjZXNzCisg
ICAgLy8gZm9yIHRoZSBwZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9zdGFydCA9IGppdC5sYWJl
bCgpOwogICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29k
ZVNpemUoKTsKICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7CkBAIC0xMDEsOSArMTA2
LDkgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3Nl
bWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0QnlJZEdlbmVyYXRvcjo6
SklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkK
LSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
YWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQor
ICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9H
UFIpCiAgICAgLCBtX2lzTGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51aWQoKSA9PSBjb2RlQmxv
Y2stPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7CkBAIC0xMTUsOSArMTIw
LDkgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVl
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykKLSAgICA6IEpJVEJ5SWRH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0
QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAg
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJ
ZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHVi
SW5mb0dQUikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2FkR1BSKCkgIT0g
dGhpc1JlZ3MudGFnR1BSKCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBAQCB2b2lkIEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogfQogCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVu
dGlmaWVyLAotICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcg
c2NyYXRjaCwgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2Ny
YXRjaCwgCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICAgICAg
OiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vz
c1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAgIDogSklUQnlJ
ZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nl
c3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAg
ICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5k
KQogewpAQCAtMTcxLDE0ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNo
KQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlWYWxHZW5lcmF0b3I6
OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5
cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykK
IHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICBB
U1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9z
dHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJl
Z3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChi
YXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzMCBAQCBKSVREZWxCeVZhbEdl
bmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZQogdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBt
X3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAg
ICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0
Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERl
bEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlu
a0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShM
aW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJU
KG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAg
ICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQ
YXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1
YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0K
IAotSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQot
ICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVRE
ZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAg
bV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICBBU1NFUlQoYmFz
ZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVy
dHlHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0
LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSBy
ZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQ
UigpOwpAQCAtMjIzLDIyICsyMzMsMjUgQEAgSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJ
ZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3IKIHZvaWQg
SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1
YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAg
IG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZp
bmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
K3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgs
IExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1
bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRp
b25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBt
X3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIEpJVEluQnlJZEdlbmVyYXRv
cjo6SklUSW5CeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRS
ZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBl
IGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBi
YXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBub3Qgc3Vw
cG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVOVVNFRF9QQVJB
TShwcm9wZXJ0eU5hbWUpOwpAQCAtMjUxLDE1ICsyNjQsMTUgQEAgdm9pZCBKSVRJbkJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUSW5z
dGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1
YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIGJvb2wgcHJv
dG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAg
ICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Oklu
c3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6
Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9
IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OwogICAgIG1fc3R1Yklu
Zm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBlOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTI3OSwyMSArMjkyLDI0IEBAIEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAKIHZvaWQgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewotICAg
IG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVz
cyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZD
b2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFi
ZWwoKTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsCi0gICAg
ICAgIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fanVtcCkpOwot
ICAgIAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgubG9jYXRpb25P
ZjxOb1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUR2V0QnlWYWxHZW5lcmF0
b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGpp
dFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwg
Y29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAg
ICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQocmVzdWx0KQogewpAQCAtMzAyLDYgKzMx
OCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9
IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBw
cm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQu
cGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQ
UjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBi
YXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQ
UigpOwpAQCAtMzEyLDIwICszMjksMjMgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQg
SklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGpp
dCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBq
aXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5
cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0
dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKEND
YWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAg
fSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAg
ICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRo
KQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBh
dGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkp
OwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQ
YXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNl
OjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
bV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+
c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2Nr
LCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVn
aXN0ZXJzKQogewogICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkNoZWNrUHJp
dmF0ZUJyYW5kIHx8IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kKTsK
ICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKQEAgLTMzMyw2
ICszNTMsNyBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogICAgIG1fc3R1YkluZm8tPmJhc2VH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLmJyYW5kR1BSID0g
YnJhbmQucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKICAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7CkBA
IC0zNDMsMTYgKzM2NCwxOSBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogdm9pZCBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAg
PSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2pp
dFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxs
KENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
ICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVm
ZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5h
bGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAg
QVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZh
c3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRh
Zz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFz
dFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5t
X2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2IyNTUxOTU1NDhi
MGYyZWI2NTEuLmI2OTA4Nzg1NzY0MzhkOTdkOTk0MzBhYzYzZDkxN2JjMmVjOTNmNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51bSBjbGFzcyBK
SVRUeXBlIDogdWludDhfdDsKIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHJv
dGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKKyAg
ICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycyk7CiAgICAgCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKiBt
X2NvZGVCbG9jazsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5m
byogbV9zdHViSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBAIC03
Nyw4ICs3OCw4IEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IgewogICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEJ5SWRH
ZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayos
IEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVibGljOgogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CkBAIC0xMDEsMTMgKzEwMiwxMyBA
QCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNz
IEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBK
SVRHZXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVi
bGljOgogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSk7Cisg
ICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIApAQCAtMTE1LDI2ICsxMTYsMjYgQEAgY2xhc3MgSklUR2V0QnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBib29sIG1faXNMZW5ndGhBY2Nl
c3M7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBwdWJsaWMgSklU
QnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRo
aXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVi
bGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKICAgICB7IH0K
IAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgQ29kZUJs
b2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2Us
CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsMTQgKzE0NiwxNCBAQCBjbGFzcyBK
SVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIFB1dEtp
bmQgbV9wdXRLaW5kOwogfTsKIAotY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVREZWxCeVZhbEdlbmVyYXRv
cigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayosIEpJ
VFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0
eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNo
KTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAg
ewpAQCAtMTcwLDE0ICsxNzEsMTQgQEAgY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVREZWxCeUlkR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBC
YXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklURGVsQnlJZEdl
bmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBDb2RlQmxvY2sq
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAg
ICAgewpAQCAtMTk1LDQyICsxOTYsNTAgQEAgY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2Vu
ZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6IHB1
YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHB1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiAgICAgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvcigpIHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0gICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAgICBHUFJSZWcgdmFsdWUs
IEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAorICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKKyAgICAgICAgR1BS
UmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHByb3RvdHlwZUlzS25vd25P
YmplY3QgPSBmYWxzZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJik7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKICAgICB2b2lk
IGZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xv
d1BhdGhMaW5rQnVmZmVyKTsKIAogcHJpdmF0ZToKLSAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBtX2p1bXA7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFz
cyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CitjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwog
cHVibGljOgogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1
bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJl
c3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNs
b3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjUxLDE0ICsyNjAsMTQgQEAgY2xhc3MgSklU
R2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAg
IE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xh
c3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcigpIHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAotICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQs
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0
aEp1bXAoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
aW5kZXggZTc5Y2QzNmVmNTdkN2JkY2VjZTE3NjhkMDU4OGFmZWVkODg4NTAxNS4uMjhhNjQzMzdl
MmYwOGY1ZjIwYWRhNzM3YmI3NmJjYjQ3MzYyMjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFy
cmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBzd2l0Y2gg
KGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHJldHVybiBlbWl0SW50
MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0
SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBj
YXNlIEpJVERvdWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRDb250aWd1b3Vz
OgotICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwg
YmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3Ry
dWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgot
ICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xMjgsNiArMTI4LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0CiAg
ICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRhdGVUb3BDYWxs
RnJhbWUoKTsKKyAgICBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICBleGNlcHRpb25DaGVjaygp
OworfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xv
d1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rp
b24pCiB7CkBAIC0xNTcsNiArMTY0LDE2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAg
cmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxS
ZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlv
bik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
cmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQ
UjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRh
ZGF0YT4KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBt
ZXRhZGF0YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgVmly
dHVhbFJlZ2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxODgsMTkgQEAgQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRh
dGE+CitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgQWRkcmVzcyBm
dW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZh
bHVlR1BSKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1
ZUdQUik7CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNl
SWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmlydHVh
bFJlZ2lzdGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYmQ1NWEzZDA1
MTZkNDZiNjdhZTU5N2I2YzNhNGY1ODdiNWZkZDczMC4uNDVhMDc1MWM5NmM2YTJhY2U4YjY0ZmYw
NGYzNDkwM2NkZDFmNzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xNjQsMTMgKzE2NCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIs
IC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdUNSwKICAgICAg
ICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAg
ICAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0xODYsNyArMTkxLDE0IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2Vu
ID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsK
KworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3Bl
cmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+KEFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAgIH0gZWxzZQorICAg
ICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJl
c3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2Vu
LnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzMxLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVy
IHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwg
YmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUo
Y3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1v
dmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDAp
OwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsxNzQ2LDEzIEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5m
bywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklU
U3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0
eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jayku
ZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2Rl
KCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlv
bkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFk
ZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
YnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hh
c19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTE3NjksMTEgKzE3ODYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFz
X2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBl
ZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9y
QXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBt
b2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIAogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nh
c2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNl
KHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC0xNzk5LDcg
KzE4MTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRf
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHlEZWZhdWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnlWYWxJbmZv
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUo
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRzdCwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOwog
CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xv
d1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlW
YWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA4ZGIzNTllYmQ4Y2QwNTY2
OTczYjg2M2M0ODY3NDFhN2ZhZTIyNDVlLi40ZDc0MTI2YmUxZTNkZTQzMGQzYTZkOWNiN2ZkZGI2
ZGM4NmY3ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCkBAIC0xNjIsMTMgKzE2MiwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIs
IC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICBJbnZhbGlkR1BSUmVn
LAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0U3RvcmVCb29sKGRzdCwg
cmVnVDApOwpAQCAtMTE4Myw3ICsxMTg1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFz
SW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAg
ICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRB
cnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFy
cmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7CisgICAgSnVt
cExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9u
LCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xMTk4LDcgKzEyMDAsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZm
ZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2luZGV4ZWRf
cHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIAotICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZh
bEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRh
Zz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJl
c3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHlHZW5lcmljKSk7CiB9CiAKQEAgLTEyMzQsNyArMTIzNiw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxp
a2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0
TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUpOworICAg
IEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVj
dGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigx
KSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNjAzZjkzYTlhZmYyMWQ5ZGQ0YjFi
YjQ5Nzk5YzljMmEzYWNmYzU3Li4xNmJkYTA5MWIwNTNjMTAzOWRkMzVlY2E3NTExYTRhYjc5OGVi
NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTEwMDIsNyArMTAwMiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0
QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIGlmIChyZXN1
bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZl
ciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIo
T1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKKyAgICAgICAg
aWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZh
bHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CkBAIC0xMDk0
LDcgKzEwOTcsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAocmVzdWx0ID09
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5
IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0g
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAg
IGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmlj
KTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFs
KGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFN
b2RlKSk7CkBAIC0xMjc4LDcgKzEyODQsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAg
ICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7
CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbElu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkp
CisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxs
QnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxlYXNl
KCk7CkBAIC0yNTY3LDcgKzI1NzYsMTEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlMKICAgICAg
ICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAgICAgICB8fCBv
YmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAvLyBE
b24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9j
ay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
R2VuZXJpYyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjQ0NjdlOWEyNWUxNDc3ZTFlYzA2MzVk
NDA5NzU0ZDhlNzUzOTJlZi4uZDE3MmVkZjExN2Y3YTgzMWFlYzczZTllNGRkMGY0YTYzMzQ1ZmU0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTY5LDEyICs2OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRC
eVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3VsdFJlZ3MpOwor
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZXN1
bHRSZWdzLCByZWdUMik7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0
eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsK
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAg
ICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAg
LTkzLDggKzk2LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsK
KyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlW
YWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAog
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTExOCw3ICsxMjEsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUpLCBw
cm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzOCw3
ICsxNDUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7CkBAIC0xNTcsOSArMTY1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0
IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8g
Y2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxs
Iik7CkBAIC0xODIsMTAgKzE5MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRS
ZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3Bl
cnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
KTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTIw
MSw4ICsyMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCkBAIC0yMjYsNyArMjM3LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBw
ZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwg
cmV0dXJuVmFsdWVHUFIpOwpAQCAtMjQ1LDcgKzI2MCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAot
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIz
OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5ICsyNzksMTAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRp
cmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5y
ZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3h4
eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKQEAgLTI4NSwxMCArMzAyLDEzIEBAIHZvaWQg
SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VHUFIsIGJh
c2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRT
bG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiAKICAg
ICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ug
c2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCkBAIC0zMDIsOCArMzIyLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdl
biA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsK
ICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKQEAgLTMyOCw5ICszNDcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Nl
dF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlv
blRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3Vt
ZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblNl
dFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplOwor
ICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYKKwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAg
LTM0NiwxMCArMzcwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVj
a1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNr
UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
ZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMu
YXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1Nyw4ICszODQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudAogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nl
c3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzgzLDcg
KzQwOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJy
YW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGlt
aXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgZWxzZQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCkBAIC00MTUsOCArNDQ1LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogICAgIFBhdGNoYWJsZUp1bXAgbm90
SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0ludGVnZXJDb25zdGFudCkgewotICAgICAg
ICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOwotICAgICAgICBh
ZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGF1dG8gaXNJbnQzMiA9IGJyYW5j
aElmSW50MzIocmVnVDEpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOworICAgICAg
ICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICB9CiAgICAgICAgIC8vIFNlZSBj
b21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChyZWdU
MSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwyMyArNDY4LDI0IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBK
SVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2gg
KG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50
MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJ
bnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJs
ZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1
b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZh
bEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAg
ICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC00NTcsNyArNDk0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkK
IHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNDY1LDcg
KzUwMiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogICAgIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVn
VDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7
CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJ
bW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIG91dE9mQm91
bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MTUsNyArNTYxLDcgQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTUy
Myw3ICs1NjksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAKICAgICBKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAo
YnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihF
cXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAg
ICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdl
dCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGlu
ayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJl
c3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKQEAgLTU2
OCw4ICs2MjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENh
Y2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdUMSk7CiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCByZWdU
MiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0
ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRp
b25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBz
aXplLgpAQCAtNTgwLDcgKzYzNSwxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1
dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmso
dGhpcyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgQ2Fs
bCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8o
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBl
KGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDEs
IHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1Qw
LCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAt
NjM4LDggKzY5OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBhdXRvKiBvcGVyYXRpb24gPSBp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoaXNEaXJlY3QgPyBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcyMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5ICs3NDAsMTAgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlH
UFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMg
YSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAg
IC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAg
IGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsKQEAgLTY5Niw4ICs3NjIsMTMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsK
IAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Ci0gICAg
YWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXA7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBU
YXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAgICAgIGZhc3RQ
YXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEpt
cCk7CisgICAgfQogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAgIApAQCAtNzQz
LDcgKzgxNCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcgKzgzNiw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTc3
OSw5ICs4NTUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgcHV0
S2luZEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFy
Z2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQg
dG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1
bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFy
ZUNhbGwiKTsKQEAgLTg0NiwxMSArOTIzLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMSwgYmFzZSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZGVsQnlJ
ZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdU
MCkpOwpAQCAtODk4LDE1ICs5NzgsMTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQ
Uik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAg
IENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKICNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVl
UmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTkxOCw3ICsxMDAx
LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwpAQCAtOTM1LDkgKzEwMTksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2Rl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6
IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQg
b3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBj
YWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIp
OwpAQCAtOTU2LDEwICsxMDQxLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwog
ICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKQEAgLTEwMDgsMTUgKzEwOTYsMTggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVl
KCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAg
ICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1
ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94
Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCkBAIC0xMDI4LDcgKzExMTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkgKzExMzcsMTAgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBk
aXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJu
aW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
cmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9k
ZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xMDY4LDggKzExNjEsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAog
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6
OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdU
MSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKQEAgLTExMTAsNyArMTIwMywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRy
eUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2
YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0
dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsxMjMwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
RGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMu
YXBwZW5kKGdlbik7CkBAIC0xMTc2LDcgKzEyNzMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6
dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
LSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFk
YXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMDgsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4p
OwpAQCAtMTIzMyw4ICsxMzM0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQo
Z2VuKTsKQEAgLTEyNzUsNyArMTM3NiwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1
ZUdQUik7CkBAIC0xMjk0LDcgKzEzOTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAg
IC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzExLDkgKzE0MTcsMTAgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwg
cHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAv
LyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhl
IHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xp
ZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsIik7CkBAIC0xMzU0LDcgKzE0NjEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSks
IHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0
QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemU7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXNPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzNzMsNyAr
MTQ4NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKQEAgLTEzOTIsOSArMTUwNCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRp
bWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHBy
b3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8g
RklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0
YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVu
dCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1MzEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwK
KyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCBy
ZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRLaW5kOjpEaXJl
Y3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHV0
QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNDY1LDcgKzE1NzcsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhG
dW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC0x
NDgxLDcgKzE1OTcsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFt
ZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MTcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmlj
dE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0g
ICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRv
IHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhl
IGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9w
cmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjM5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5f
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVEluQnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU2NCw3ICsxNjgyLDExIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
Pjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVl
R1BSKTsKQEAgLTI3NTQsOCArMjg3Niw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBl
bWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUo
Ynl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9w
ZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1QxLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBk
b25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI3NjUsNyArMjg4NywxMyBAQCBKSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHByZXNlcnZl
IHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0aGUg
dGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0
aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5
TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yODE3LDI5ICsy
OTQ1LDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAgICBzd2l0Y2ggKGFycmF5TW9k
ZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMy
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3Vv
dXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlu
a0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJy
YXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdl
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBuZWVkc0xpbmtG
b3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5cGVGb3JKSVRBcnJheU1vZGUo
YXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQotICAgICAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7
CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVj
b2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5IGluIElD
CiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJh
eSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAgQVNTRVJUKGlzRmxvYXQodHlw
ZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRG
bG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg2Niw4ICsyOTk0LDE0IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hC
dWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAgICAgIkJhc2VsaW5lIHB1dF9i
eV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1f
Y29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICB9
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxs
KENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVy
aWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9w
ZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMg
b25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9u
cy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlv
bnMgaW4gYWR2YW5jZS4KQEAgLTI5MDYsOCArMzA0MCwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQQogICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9w
ZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFt
ZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBy
ZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9
IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFs
SW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNz
KSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICB9CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA4MywyMCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywg
UmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVk
IHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtp
bmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlk
KCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJu
QWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4u
c3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
Pm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5
VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkg
eworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IHB1dEtpbmQg
PT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0
aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJu
QWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihC
eVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
KTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RG91Ymxl
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNl
ID0gcmVnVDA7CkBAIC0yOTY4LDcgKzMxMTIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRE
b3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIAog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
aWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNo
MzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICAgICAg
ICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJn
ZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxp
bmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7
CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworCiAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVz
cyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9h
ZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCBmcFJlZ1Qw
KTsKQEAgLTI5NzcsNyArMzEzMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJu
IHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBl
eHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk5NSw3ICszMTQ4LDE2IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0
byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBU
cnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBl
ID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhw
ZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJbmRleChzY3JhdGNoLCBw
cm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDA0LDcgKzMxNjYsNyBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVt
cExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9
IHJlZ1QwOwpAQCAtMzAyMyw3ICszMTg1LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJy
YXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJheVN0
b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7Cisg
ICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihCZWxvd09yRXF1YWwsIHNj
cmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3Jh
Z2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5m
by0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAg
ICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0z
MihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0g
ZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gs
IFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFw
ZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0
aE9mZnNldCgpKSkpOwpAQCAtMzAzNSw3ICszMjA2LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
VHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMDYwLDcgKzMyMzEsMTcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAg
bG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlT
Y3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBi
cmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJy
YXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlW
YWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
ICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNo
LCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3Jh
dGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBs
b2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9w
ZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVj
aWFsQ2FzZShwcm9maWxlKTsKQEAgLTMxMTEsNyArMzI5Miw3IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMxMzYsNyArMzMxNywx
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAg
ICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0
VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9y
VHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRy
ZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJs
eVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBl
YXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsK
KwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVs
b3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJv
dW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIyYzc3MDQyODlhYmIwODJm
OWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMGUzYmU2YWY4NDJjZTlkMDI2MjEzNWRlZDU2YzliMGFl
YmRlMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsK
ICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBi
YXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVn
cywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZGVsQnlJZHMu
YXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpKTsKIAog
ICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdz
LCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTI1Nyw4ICsyNTcsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJl
Z3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CkBAIC0zOTMsOCAr
MzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQ
cml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRS
ZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFj
Y2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BS
KCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVncywgYnJhbmRS
ZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsK
QEAgLTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9
IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNl
IEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVj
b2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERv
dWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRp
Z3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAtNTExLDcgKzUxMSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3Qg
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGlu
Z1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAt
NTIwLDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5mbyk7CiAgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKENvbnRp
Z3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNTcyLDcgKzU3Myw3IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTU4MSw2
ICs1ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbEluZm8pOwogICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihBcnJheVN0b3Jh
Z2VTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNjYwLDggKzY2Miw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1
bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OlRy
eUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBA
IC03MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5
SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0
UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc0OCw4ICs3NTAsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBA
IC03OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpLCBJbnZhbGlkR1BSUmVn
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBA
IC04MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsCiAgICAgICAg
IHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRp
cmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAg
ICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChn
ZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGlu
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCmluZGV4IDg4
MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2Y2RmYWIuLjVhNTcyOGJiZTg3M2ZmNDY5
MmJlNDc4NjhiYjVjNzAyOGJiZTRiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
SklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCit1c2lu
ZyBTdHJ1Y3R1cmVJRCA9IHVpbnQzMl90OworI2Vsc2UKK3VzaW5nIFN0cnVjdHVyZUlEID0gU3Ry
dWN0dXJlKjsKKyNlbmRpZgorCitjbGFzcyBBY2Nlc3NDYXNlOworCiAvLyBUaGlzIGlzIGEgYmFz
ZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFuZCBhbHNvIHRoZSBjbGFzcyB5b3Ugd2Fu
dAogLy8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkgaWYgeW91IGhhdmUgYSByb3V0aW5lIHRoYXQg
ZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJvbSB0aGUgR0MuIElmIGluIGRvdWJ0LCB1c2Ug
b25lIG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVzLiBCdXQKQEAgLTk4LDYgKzEwNiw5IEBAIGNs
YXNzIEpJVFN0dWJSb3V0aW5lIHsKICAgICAvLyBkZXN0cm95ZWQuCiAgICAgdmlydHVhbCBib29s
IHZpc2l0V2VhayhWTSYpOwogCisgICAgdmlydHVhbCBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1
YWwgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+KiB3ZWFrUmVmZXJlbmNlcygpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBvYnNl
cnZlWmVyb1JlZkNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2ODYyNzNkZGE4
MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4uNDRjZTZmM2JiNDU0NjMwNDk2NmM1YWQ0N2ViYjRj
NWYwMzg5ODM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJ
bmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENvZGVPcmlnaW4u
aCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZl
Y3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8dWludDMy
X3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2
bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSwgeyB9LCB7IH0pCiAg
ICAgLCBtX3ZhcmlhbnRzKGNhc2VzLnNpemUoKSkKICAgICAsIG1fZmFzdENvdW50cyhXVEZNb3Zl
KGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXgg
OTA1ZjhkN2YyYWZiZjViMDA2MWVmM2Q3NWY3ZjY2NmViZDFkY2EwNC4uNzUxYjczZGRlMTc0NTlk
MDdhZjU2ZmJlZWIzZTc0MTM0MjJhYTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCkBAIC03MSw4ICs3MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsKQorc3Rh
dGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogeworICAgIGlm
IChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJldHVybiBzdHViSW5mby5tX3Ns
b3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFnPigpOworICAgIENvZGVMb2NhdGlv
bkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCA9IHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9j
YXRpb247CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgp
ID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAgICBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRh
Zz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PEpJVFRodW5rUHRyVGFn
PihjYWxsKTsKQEAgLTEwNSw2ICsxMDgsMTUgQEAgdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFAKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24ucmV0
YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0KIAorc3RhdGljIHZvaWQgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKQoreworICAg
IGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9zbG93
T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9jYXRpb24sIG5ld0NhbGxlZUZ1bmN0
aW9uKTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7CiAgICAgR2l2ZVVwT25DYWNoZSwK
ICAgICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMDksNyArMjIxLDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKgogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwog
ICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRl
TmFtZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCi0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNz
Q2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlQ2VsbCkpIHsK
QEAgLTIxOSw3ICsyMzEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0
ZUFycmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxsKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihr
aW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEFycmF5TGVuZ3RoKGxvY2tl
cik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOSwxMSBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZt
LCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VDZWxsKSkgewotICAgICAgICAgICAg
ICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0ICYmIElubGlu
ZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5zZXQKKyAgICAg
ICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChz
dHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5l
ID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChzdHViSW5mbyk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5k
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTUsMTEgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKgogICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQogICAgICAgICAg
ICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAg
ICAgICAgICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAgICAgICAgICAg
ICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlBy
b3BlcnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwog
ICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJl
LT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRCeUlk
U2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVy
OwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0MzcsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1w
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
cHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAg
ICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAg
ICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywg
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NTEsNyBAQCB2b2lkIHJl
cGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNWYWx1ZSBiYQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBraW5kKSA9PSBH
aXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9u
KGtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOwogfQogCiAKQEAgLTUyOSw3ICs1NDEs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElk
ZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTU0MCw3ICs1NTIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogdm9p
ZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHRyeUNhY2hlQXJyYXlHZXRCeVZhbChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZSwgaW5kZXgsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNh
Y2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsKKyAgICAg
ICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25HZXRC
eVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlk
RnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQpIC0+
IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2LDcgKzY0OCw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5ICYmIChwdXRL
aW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsK
KyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3Qu
YmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKICAgICAgICAg
ICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5nUHJvcGVydHkp
IHsKQEAgLTY1OCw3ICs2NzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQ
dXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVy
YXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hl
ZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFNlbGZQ
YXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJh
c2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJv
cHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UobG9ja2VyLCBjb2Rl
QmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
awogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgp
KTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29k
ZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODE1LDcgKzgyNyw3IEBA
IHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xv
dCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAg
ICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRl
R2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kLCBF
Q01BTW9kZSBlY21hTW9kZSkKQEAgLTg0Niw3ICs4NTgsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvYwogICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
ICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwog
CiAgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKICAgICAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG5ld09mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC04NzQsNyArODg2LDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29k
ZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKICAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSkpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5m
bywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkp
KTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90
VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTg5MSw5ICs5MDMsOSBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAgIGlmICh0cnlD
YWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09IEdp
dmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRo
R2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlm
IChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKICAgICB9CiB9CiAKQEAgLTkzNyw3ICs5NDks
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAg
ICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlk
ZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0
dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTk4NCw3
ICs5OTYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAKICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorICAg
ICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAg
ICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nl
c3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQgPyBzbG90LmNhY2hlZE9mZnNl
dCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nl
c3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3Qo
KSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKQEAgLTk5Myw3ICsxMDA1LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTAwNyw3ICsxMDE5LDcgQEAgdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCoK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBp
ZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHBy
b3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWQpOwogfQogCiBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKQEAgLTEwMzIs
NyArMTA0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0
ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2
YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKKyAgICAgICAgUmVm
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFu
ZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9
IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
RUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA0
MCw3ICsxMDUyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2
YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5k
UmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJv
cGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0g
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5s
aW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDU0
LDcgKzEwNjYsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jawogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNoZUNoZWNrUHJp
dmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCBz
dHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0K
IAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKApAQCAt
MTA5MSw3ICsxMTAzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJp
dmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAg
TE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBvbGRTdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFBy
aXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSk7CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwg
bmV3U3RydWN0dXJlKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNl
KGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJh
bmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTEwOTksNyArMTExMSw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExP
R19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
cmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEzLDcgKzExMjUsNyBA
QCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1w
bGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBicmFuZElELCBz
dHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNl
dFByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApAQCAtMTEzMyw3ICsx
MTQ1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAg
ICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2VsbCgpOwogICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKICAgICAgICAgaWYgKHByb3Rv
dHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHZh
bHVlKSkgewpAQCAtMTE2OCw5ICsxMTgwLDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAotICAgICAg
ICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHJlc3VsdC5jb2RlKCk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
CisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKKyAgICAgICAg
ICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTEx
ODUsNyArMTIwMSw3IEBAIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoCiB7CiAgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICh0cnlDYWNoZUluc3Rh
bmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHByb3RvdHlwZVZhbHVl
LCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOwogfQog
CiBzdGF0aWMgdm9pZCBsaW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJ
bmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGVSZWYp
CkBAIC0xMjAyLDcgKzEyMTgsNyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSYgdm0sIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBj
YWxsTGlua0luZm8pOwogICAgIGxpbmtTbG93UGF0aFRvKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1
YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91
dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xv
d1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9
LCB7IH0pKTsKIH0KIAogc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0NlbGwqIGNh
bGxlZSkKQEAgLTEzMjAsNyArMTMzNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtWaXJ0dWFsRm9yKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJCiAKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVu
ayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZt
LCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dT
dHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAg
ICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUo
dmlydHVhbFRodW5rLCB2bSwgeyB9LCB7IH0pKTsKICAgICBjYWxsTGlua0luZm8uc2V0Q2xlYXJl
ZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0ICsxNjU3LDE0IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsKLSAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Ci0gICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBw
cm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgSW5saW5lQWNjZXNz
OjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9p
ZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKIHsKICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTsKLSAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6
ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxs
VGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24pLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOworICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVp
bnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2Nr
LCBzdHViSW5mbykuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGlt
aXplZEZ1bmN0aW9uOwogICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdE9wdGltaXplOwpAQCAtMTY2NSw0NSArMTY4MSw0OCBAQCB2b2lkIHJlc2V0UHV0QnlJ
RChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAg
ICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RP
cHRpbWl6ZTsKICAgICB9CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1Bh
dGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wdGltaXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFz
SnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0RGVsQnko
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlL
aW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSk7CiAgICAgZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwor
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxl
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCitzdGF0aWMgdm9pZCByZXNldFBhdGNo
YWJsZUp1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxl
SnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICBlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRo
U3RhcnRMb2NhdGlvbik7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsK
KyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1
YkluZm8pOwogfQogCi12b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5m
byk7CisgICAgcmVzZXRQYXRjaGFibGVKdW1wKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2
b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRP
cHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFNldFBy
aXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7
Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGlu
ZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJs
b2NrLCBzdHViSW5mbyk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
SlNPYmplY3QqIGNhbGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggMzEz
NzlkYzRlNWE5ZGMyZGM2ZWE0OTMxNzc5NDcyNmEwMDIwMzUxYS4uM2ExOWZkMzY1NDlkMWE4NDgw
OWY5NGRhZGEyZGZiZTU3MDAwZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsK
K3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2
b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2Nh
dGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
bmV3Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKaW5kZXggYzlkZTZhOGEzOGMxMWI2OTM3NjE5YzFlNTk0YWQxNDUxYjNmMWE5OS4u
ZTdjZGNkYTM2MzM4NGQzNDVjODFiNDgyZGEyN2I3ZDFkYzJlY2Q5OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzgsNiArNTM4LDggQEAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VTaGFy
ZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNl
VG9wTGV2ZWxBd2FpdCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtleXdvcmQgYXQg
dGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS4iKSBcCiAgICAgdihCb29sLCB2ZXJib3NlRXhlY3V0
YWJsZVBvb2xBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29s
LCB1c2VTaGFyZWRJQywgaXNBUk02NCgpLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2ws
IHVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAK
IAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKaW5kZXggOGQwN2EyNzU3ODMzNDBiZWE0ZTEwZGRh
NDkxNjNkMTNiNDk4M2YxMi4uYjhkZDRjYmQ1ZDI4MTAxNTdmOWE5OWJkOWNiMGYwNTUxYTM2ZDlj
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURU
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFi
bGUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsK
IAogI2lmIFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIHVpbnQzMl90IFN0cnVjdHVyZUlEOwordXNp
bmcgU3RydWN0dXJlSUQgPSB1aW50MzJfdDsKIAogaW5saW5lIFN0cnVjdHVyZUlEIG51a2VkU3Ry
dWN0dXJlSURCaXQoKQogewpAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgU3RydWN0dXJlSUQgZGVj
b250YW1pbmF0ZShTdHJ1Y3R1cmVJRCBpZCkKICAgICByZXR1cm4gaWQgJiB+bnVrZWRTdHJ1Y3R1
cmVJREJpdCgpOwogfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIFN0cnVj
dHVyZSogU3RydWN0dXJlSUQ7Cit1c2luZyBTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZSo7CiAKIGlu
bGluZSBTdHJ1Y3R1cmVJRCBudWtlZFN0cnVjdHVyZUlEQml0KCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiZWFjODZlYjBlYjhjZjUxMzhlZmJmZGMzODIzNDc0MmI4
Y2JkZTExLi40YzFiZTQxODFmZDI3OTgzNDgwZmJiOTViNzNlNTQxNWM3ZjRjNmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNp
bmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRl
ICJCaWdJbnRPYmplY3QuaCIKQEAgLTU2Nyw2ICs1NjgsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2Vz
cykKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5j
dGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1
bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgbV9zaGFyZWRK
SVRTdHVicyA9IG1ha2VVbmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKIApAQCAtNjU1LDYgKzY1NywxMCBAQCBWTTo6flZNKCkKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY3JhdGNoQnVmZmVycy5zaXplKCk7ICsraSkKICAgICAg
ICAgVk1NYWxsb2M6OmZyZWUobV9zY3JhdGNoQnVmZmVyc1tpXSk7CiAjZW5kaWYKKworI2lmIEVO
QUJMRShKSVQpCisgICAgbV9zaGFyZWRKSVRTdHVicyA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAog
dm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrKHZvaWQqIGFyZ3VtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggOThhNzVjNmY4YjhkYjI3OWQwMjZm
MzJlYmYzYmJjYzU0MWJhYjBmOS4uNzQyMmI5ZjY3NGUzNWRjMDUxMTRkN2U0ODAzOWNlYmFmMDYx
MjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNzUsNiArMTc1LDcgQEAg
Y2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwogI2Vu
ZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOworY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFNvdXJjZVBy
b3ZpZGVyQ2FjaGU7CkBAIC04NDYsMTEgKzg0NywxMyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewog
I2lmIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFRodW5rcz4gaml0U3R1YnM7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRDVElTdHViKFRo
dW5rR2VuZXJhdG9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkSklUU3R1YlNldD4gbV9z
aGFyZWRKSVRTdHViczsKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKEZUTF9K
SVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYK
KwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMs
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAK
</data>
<flag name="commit-queue"
          id="451620"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430230</attachid>
            <date>2021-05-31 21:48:29 -0700</date>
            <delta_ts>2021-05-31 23:57:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210531214828.patch</filename>
            <type>text/plain</type>
            <size>429801</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
Mzc3OTI5MDRlNmFkYmExZTIwZGFkZDVjNDBiZTIyZjU3YzA4YzEwLi43YzIxODIzZjE5YzcwNTk0
ZTNhNDg0NTZkMmFlNjk4ZjdjZThhYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzEgQEAKKzIwMjEtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6dmlzaXRXZWFrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmg6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNjZXNzR2VuZXJhdGlvblN0YXRlKToK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0
dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmFwcGVuZENhbGwpOgorICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBl
bmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNl
dFJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250
ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2Fs
bC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9G
VExTbG93UGF0aENhbGxLZXkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAg
ICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRs
L0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0
b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0Nv
bGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hSZWdBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hFeHRyYVJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6cHVzaE5vbkFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlv
bjo6YWRkR1BSQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9u
OjphZGRHUFJFeHRyYUFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVj
dGlvbjo6YWRkU3RhY2tBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxl
Y3Rpb246OmFkZFBva2UpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBv
a2VPZmZzZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjptYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNFbnRyeUltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRz
KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0
Q2FsbCk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAg
IChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAg
ICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToK
KyAgICAgICAgKEpTQzo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUlDSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAo
SlNDOjpjcmVhdGVKSVRTdHViUm91dGluZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5oOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OmNyZWF0ZSk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0
L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6dXNlU2hhcmVkSUMpOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJ
VEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdENvbW1vbik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJ
VEdldEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRH
ZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJ
VEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6
OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9y
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpT
Qzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRH
ZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6
SklURGVsQnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZh
bEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5z
dGFuY2VPZkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2Rl
KToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJl
c3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
aGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3By
b3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3By
aXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5
X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFt
ZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdERvdWJsZUxvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRDb250aWd1b3VzTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEFycmF5U3RvcmFnZUxvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93
aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJv
dXRpbmUuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OmtleXMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6d2Vha1JlZmVyZW5jZXMgY29uc3QpOgorICAgICAg
ICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSk6Cisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFy
Z2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNsb3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlE
KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3Rh
bmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAo
SlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAg
KEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6Cisg
ICAgICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9m
KToKKyAgICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OnJlc2V0U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIxLTA1LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJv
cCBVbmNoZWNrZWRDb25kaXRpb24gLyBVbmNoZWNrZWRMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IGExNDM5NDg1ZmRjNjE1YTQ2NTJmMDE1
NDIzMGExNWYyNDdkMDAzOTMuLjc5ZWVmMmMyMDY1ZGQxNzM1YjhmNDIwM2I3NzNkOGM0OWY1NmE3
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBA
IC0yMzQsOCArMjM0LDggQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFn
IHRhZz4KICAgICBDb2RlTG9jYXRpb25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAg
ICAgewotICAgICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAg
ICAgICAgQVNTRVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFT
U0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQo
IWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlv
bkNhbGw8dGFnPihnZXRMaW5rZXJBZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVs
KSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNh
ZGExZmMwMzRjYzc0MWQuLmU1YjBiMmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjRFLmgKQEAgLTIyMCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2Fs
bFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQ
Uik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNz
LCBQdHJUYWcgdGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVz
cywgUHRyVGFnIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRy
VGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklU
Q2FnZSgpIHx8IGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAg
ICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAg
ICAgICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19J
TkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxv
YWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkp
OwotICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBj
YWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGNhbGxPcGVyYXRpb24oY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVy
YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
aW5kZXggMTJhOTdhMmQyNWQ1ZWJkMWU5OWE1ZTVhYzI5YzIyODkzYmE4MzhmOS4uZTMyY2ZhM2Rh
NWMwYjAyNTc5MjMyOTQ2MTBkNDVmMWY5MTQ0MjNkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNl
OjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNo
ZWFibGVJZGVudGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQo
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vz
c0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5
cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoK
QEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3ND
YXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAg
ICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIs
MzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlVHJhbnNpdGlvbigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNl
dCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUoCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3
U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0
ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVj
a1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0s
IHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBD
aGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7
IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0
ZVNldFByaXZhdGVCcmFuZCgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlk
ZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAog
QWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nh
c2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAg
LTE4OCw5ICsxODgsOSBAQCBKU09iamVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbmRpdGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0
KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgp
IGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQs
NiArOTY0LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5
UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAg
LTEwNjEsNiArMTA2Myw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5w
cm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAt
MTE0NCw2ICsxMTQ4LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnBy
b3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BS
UmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0x
MjA1LDYgKzEyMTEsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJv
cGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNF
KEpTVkFMVUUzMl82NCkKQEAgLTEzMTcsNiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdz
KCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5t
X3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRj
aEdQUik7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3Iu
YWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMzk0LDYgKzE0MDQsODEgQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgIGdlbmVyYXRl
SW1wbChzdGF0ZSk7CiB9CiAKK3ZvaWQgQWNjZXNzQ2FzZTo6Y29sbGVjdEludmFyaWFudHNGb3JD
b2RlUmV1c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCit7CisgICAgVk0mIHZtID0gc3RhdGUubV92bTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVu
dHNMZW5ndGg6CisgICAgY2FzZSBNb2R1bGVOYW1lc3BhY2VMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFt
cGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJ
bnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZEludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZENvbnRpZ3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6Cisg
ICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAg
IGNhc2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0
ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgaWYgKGlz
VmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1
Y3R1cmU7CisgICAgICAgICAgICBpZiAoIWhhc0FsdGVybmF0ZUJhc2UoKSkKKyAgICAgICAgICAg
ICAgICBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlKCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgY3VyclN0cnVjdHVyZSA9IGFsdGVybmF0ZUJhc2UoKS0+c3RydWN0dXJlKHZt
KTsKKyAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJl
cGxhY2VtZW50cyh2bSwgb2Zmc2V0KCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiBtX2NvbmRpdGlvblNldCkgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CisKKyAgICAg
ICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJp
bGl0eSkpIHsKKyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywg
Y29uZGl0aW9uKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gRm9yIG5vdywgd2Ugb25seSBhbGxvdyBlcXVpdmFsZW5jZSB3aGVuIGl0J3Mgd2F0Y2hhYmxl
LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpICE9
IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSk7CisKKyAgICAgICAgaWYgKCFjb25kaXRp
b24uc3RydWN0dXJlRW5zdXJlc1ZhbGlkaXR5QXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKSkgeworICAgICAgICAgICAgLy8gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5ub3QgaGFwcGVu
IGlzIHRoYXQgd2UgcmVxdWlyZSB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGNhbGxzCisgICAgICAg
ICAgICAvLyBBY2Nlc3NDYXNlOjpnZW5lcmF0ZSgpIG9ubHkgYWZ0ZXIgaXQgaGFzIHZlcmlmaWVk
IHRoYXQKKyAgICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmNvdWxkU3RpbGxTdWNjZWVkKCkgcmV0
dXJuZWQgdHJ1ZS4KKworICAgICAgICAgICAgZGF0YUxvZygiVGhpcyBjb25kaXRpb24gaXMgbm8g
bG9uZ2VyIG1ldDogIiwgY29uZGl0aW9uLCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSB3aWxsIGVtaXQg
Y29kZSB0aGF0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3Rl
ZCBhbnl3aGVyZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2Jq
ZWN0KCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVu
ZChzdHJ1Y3R1cmUtPmlkKCkpOworICAgIH0KK30KKwogdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CkBAIC0xNDE3LDcgKzE1MDIsNyBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CiAKICAgICAg
ICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJp
bGl0eSkpIHsKLSAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvbmRpdGlvbik7
CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxvY2ssIGNvbmRpdGlv
bik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xNDM1LDcgKzE1MjAs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2VhayBy
ZWZlcmVuY2UgdGhhdCBpc24ndCBvdGhlcndpc2UgbGlzdGVkIGFueXdoZXJlLgogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsK
LSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuYXBwZW5kKFdyaXRlQmFycmllcjxKU0NlbGw+
KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNl
cy5hcHBlbmQoc3RydWN0dXJlLT5pZCgpKTsKIAogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoY29uZGl0aW9uLm9iamVjdCgpKSwgc2NyYXRjaEdQUik7CiAgICAg
ICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKQEAgLTE1ODIsNyArMTY2NywxMiBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogCiAgICAgICAgIC8vIFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25z
IG9mIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGlu
ZyBjYWxsIHNpdGUuCi0gICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBz
cGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShB
Uk02NCkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAg
IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRp
ZgorICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9
IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZSk7CiAKICAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFj
a0ZvckNhbGwgPSBbJl0oQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0
YXRlLCBib29sIGNhbGxIYXNSZXR1cm5WYWx1ZSkgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
ZG9udFJlc3RvcmU7CkBAIC0xNzEyLDYgKzE4MDIsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BS
SW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgYWNjZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xv
d1BhdGgodm0sIGppdCk7CisKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAg
ICAgICAgICAgICAgIGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRv
bmUuYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtMTcyMyw4ICsxODE0LDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJP
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0
ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24pLAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIGludCBzdGFja1BvaW50ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFj
a1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1
c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1i
ZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CisgICAgICAgICAgICBq
aXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKICAgICAgICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIo
KTsKICAgICAgICAgICAgIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGls
bFN0YXRlLCBjYWxsSGFzUmV0dXJuVmFsdWUpOwogCkBAIC0xODQ1LDcgKzE5MzYsMTQgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgIHNraXBCYXJyaWVyLmFwcGVuZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2Ny
YXRjaEdQUiwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNo
R1BSKTsKLSAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAg
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlm
CisgICAgICAgICAgICBhdXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2
ZSk7CisKICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25X
cml0ZUJhcnJpZXJTbG93UGF0aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcp
OwpAQCAtMTg3NSw2ICsxOTczLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVl
UmVncyk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIyID0gSW52YWxpZEdQUlJlZzsKQEAgLTE5MzMsNiArMjAzMywxMCBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAg
ICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAg
ICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBD
UFUoQVJNNjQpCisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJl
Z2lzdGVyczo6bHIpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNU
b1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMTM1LDggQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIp
OworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQor
ICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJl
KCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAg
ICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktp
bmQ6OlByb3BlcnR5RGVsZXRpb24pOwpAQCAtMjE5MSw2ICsyMjk3LDEzIEBAIFR5cGVkQXJyYXlU
eXBlIEFjY2Vzc0Nhc2U6OnRvVHlwZWRBcnJheVR5cGUoQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
ICAgIH0KIH0KIAordm9pZCBTaGFyZWFibGVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZD
b3VudCgpCit7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVicykKKyAgICAgICAgbV92bS5t
X3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisgICAgSklUU3R1YlJvdXRpbmU6Om9ic2Vy
dmVaZXJvUmVmQ291bnQoKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIEFjY2Vzc0Nh
c2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewpAQCAt
MjIwMyw2ICsyMzE2LDEwMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAK
K2Jvb2wgQWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYgbGhzLCBj
b25zdCBBY2Nlc3NDYXNlJiByaHMpCit7CisgICAgLy8gV2UgZG8gbm90IGNhcmUgbV9zdGF0ZS4K
KyAgICAvLyBBbmQgd2Ugc2F5ICJmYWxzZSIgaWYgZWl0aGVyIG9mIHRoZW0gaGF2ZSBtX3BvbHlQ
cm90b0FjY2Vzc0NoYWluLgorICAgIGlmIChsaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiB8fCBy
aHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChsaHMuYWRkaXRpb25hbFNldCgpIHx8IHJocy5hZGRpdGlvbmFsU2V0KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fb2Zmc2V0ICE9IHJocy5tX29mZnNldCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQ
cm94eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0
KCkgIT0gcmhzLm1fc3RydWN0dXJlLmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGxocy5tX2lkZW50aWZpZXIgIT0gcmhzLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChsaHMubV9jb25kaXRpb25TZXQgIT0gcmhzLm1fY29uZGl0aW9uU2V0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGxocy5tX3R5cGUpIHsKKyAg
ICBjYXNlIExvYWQ6CisgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAg
IGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKKyAgICBj
YXNlIFJlcGxhY2U6CisgICAgY2FzZSBNaXNzOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNh
c2UgSW5IaXQ6CisgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBBcnJheUxlbmd0aDoKKyAgICBj
YXNlIFN0cmluZ0xlbmd0aDoKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBj
YXNlIFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgor
ICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkU2Nv
cGVkQXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREaXJlY3RBcmd1bWVudHNMb2FkOgor
ICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OENsYW1wZWRM
b2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDMy
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZs
b2F0NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgY2FzZSBJbnN0YW5j
ZU9mR2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIEdldHRlcjoKKyAg
ICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNldHRlciByZWxpZXMgb24g
Q29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUuCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0dGVyOgorICAgIGNhc2Ug
Q3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1ZVNldHRlcjoKKyAgICBj
YXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIC8vIFRoZXkgYXJlIGVtYmVkZGlu
ZyBKU0dsb2JhbE9iamVjdCB0aGF0IGFyZSBub3QgdGllZCB0byBzaGFyaW5nIEpJVFN0dWJSb3V0
aW5lLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2FzZSBJbnRyaW5zaWNH
ZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBsaHNkLm1faW50cmluc2ljRnVuY3Rpb24gPT0g
cmhzZC5tX2ludHJpbnNpY0Z1bmN0aW9uOworICAgIH0KKworICAgIGNhc2UgTW9kdWxlTmFtZXNw
YWNlTG9hZDogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8TW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QgPT0gcmhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdAorICAgICAgICAgICAgJiYgbGhzZC5t
X21vZHVsZUVudmlyb25tZW50ID09IHJoc2QubV9tb2R1bGVFbnZpcm9ubWVudAorICAgICAgICAg
ICAgJiYgbGhzZC5tX3Njb3BlT2Zmc2V0ID09IHJoc2QubV9zY29wZU9mZnNldDsKKyAgICB9CisK
KyAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CisgICAgY2FzZSBJbnN0YW5jZU9mTWlzczogeworICAg
ICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAg
ICBhdXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBy
ZXR1cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIy
MzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uZmNkZmUwOWIzZTM2NWUwMWM5NmY4
MTg2OGM0MzI3Y2QzMzljYzg1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5j
bHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIs
NyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsK
IC8vIFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhl
IFBvbHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhp
cyBhbGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhv
cGVmdWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3ND
YXNlIHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNj
ZXNzQ2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElG
SUVSKEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3Qg
ewpAQCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1
bWVudHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3Ry
dWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQ
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwK
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0
ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJl
Kik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2
YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBS
ZWY8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9t
U3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJv
bVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZTsgfQpAQCAtMjUzLDExICsyNTYsNDMgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikg
eyB9CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29sbGVjdEludmFyaWFudHNGb3JDb2RlUmV1
c2UoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgQ29kZUJsb2NrKik7CisKKyAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbV9zdHJ1
Y3R1cmUgaXMgYWxyZWFkeSBkZXN0cm95ZWQuIFdlIGFyZSBkZXN0cm95aW5nIEpJVFN0dWJSb3V0
aW5lLCBhbmQgdGhpcyBkZXN0cnVjdGlvbiBpcyBkcml2ZW4KKyAgICAgICAgLy8gYnkgQ29kZUJs
b2NrJ3MgZGVzdHJ1Y3RvciAodHlwaWNhbGx5KS4gQW5kIGF0IHRoYXQgdGltZSwgaXQgaXMgcG9z
c2libGUgdGhhdCB0aGlzIHN0cnVjdHVyZSBpcyBhbHJlYWR5IGRlc3Ryb3llZCBiZWZvcmUKKyAg
ICAgICAgLy8gQ29kZUJsb2NrIGdldHMgZGVzdHJveWVkLiBCdXQgaGVyZSwgd2UgZG8gbm90IGNh
cmUgYWJvdXQgdGhlIGxpdmVuZXNzIG9mIHRoaXMgc3RydWN0dXJlIHNpbmNlIHRoZSBvd25lciBz
aG91bGQga2VlcCBpdCwKKyAgICAgICAgLy8gYW5kIGlmIGl0IGlzIGRlYWQsIGl0IGlzIG9ubHkg
cG9zc2libGUgaW4gdGhlIGRlc3RydWN0b3Igb2YgdGhlIG93bmVyLiBXZSBqdXN0IGdldCBhIHBv
aW50ZXIgdmFsdWUgdmlhIHVudmFsaWRhdGVkR2V0KCkuCisgICAgICAgIHJldHVybiBjb21wdXRl
SGFzaChtX2NvbmRpdGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUp
LCBtX3ZpYVByb3h5LCBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLCBtX29mZnNldCk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYs
IGNvbnN0IEFjY2Vzc0Nhc2UmKTsKKwogcHJvdGVjdGVkOgogICAgIEFjY2Vzc0Nhc2UoVk0mLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwotICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYm
KSA9IGRlZmF1bHQ7Ci0gICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBk
ZWZhdWx0OworICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYmIG90aGVyKQorICAgICAgICA6IG1f
dHlwZShXVEZNb3ZlKG90aGVyLm1fdHlwZSkpCisgICAgICAgICwgbV9zdGF0ZShXVEZNb3ZlKG90
aGVyLm1fc3RhdGUpKQorICAgICAgICAsIG1fdmlhUHJveHkoV1RGTW92ZShvdGhlci5tX3ZpYVBy
b3h5KSkKKyAgICAgICAgLCBtX29mZnNldChXVEZNb3ZlKG90aGVyLm1fb2Zmc2V0KSkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShXVEZNb3ZlKG90aGVyLm1fc3RydWN0dXJlKSkKKyAgICAgICAgLCBt
X2NvbmRpdGlvblNldChXVEZNb3ZlKG90aGVyLm1fY29uZGl0aW9uU2V0KSkKKyAgICAgICAgLCBt
X3BvbHlQcm90b0FjY2Vzc0NoYWluKFdURk1vdmUob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFp
bikpCisgICAgICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUob3RoZXIubV9pZGVudGlmaWVyKSkK
KyAgICB7IH0KKworICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpCisgICAg
ICAgIDogbV90eXBlKG90aGVyLm1fdHlwZSkKKyAgICAgICAgLCBtX3N0YXRlKG90aGVyLm1fc3Rh
dGUpCisgICAgICAgICwgbV92aWFQcm94eShvdGhlci5tX3ZpYVByb3h5KQorICAgICAgICAsIG1f
b2Zmc2V0KG90aGVyLm1fb2Zmc2V0KQorICAgICAgICAsIG1fc3RydWN0dXJlKG90aGVyLm1fc3Ry
dWN0dXJlKQorICAgICAgICAsIG1fY29uZGl0aW9uU2V0KG90aGVyLm1fY29uZGl0aW9uU2V0KQor
ICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4ob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3ND
aGFpbikKKyAgICAgICAgLCBtX2lkZW50aWZpZXIob3RoZXIubV9pZGVudGlmaWVyKQorICAgIHsg
fQogCiAgICAgQWNjZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0
ZTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0y
NzUsNyArMzEwLDcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAKICAgICAvLyBGSVhNRTogVGhpcyBv
bmx5IGV4aXN0cyBiZWNhdXNlIG9mIGhvdyBBY2Nlc3NDYXNlIHB1dHMgcG9zdC1nZW5lcmF0aW9u
IHRoaW5ncyBpbnRvIGl0c2VsZi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2NDU2Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gY2xvbmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNv
bnN0OwogCiAgICAgLy8gUGVyZm9ybSBhbnkgYWN0aW9uIHRoYXQgbXVzdCBiZSBwZXJmb3JtZWQg
YmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVwb2NoIGluIHdoaWNoIHRoZSBjYXNlCiAgICAgLy8gd2Fz
IGNyZWF0ZWQuIFJldHVybnMgYSBzZXQgb2Ygd2F0Y2hwb2ludCBzZXRzIHRoYXQgd2lsbCBuZWVk
IHRvIGJlIHdhdGNoZWQuCkBAIC0zMTUsNiArMzUwLDE4MCBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsK
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKK2NsYXNzIFNoYXJl
YWJsZUpJVFN0dWJSb3V0aW5lIGZpbmFsIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKK3B1Ymxp
YzoKKyAgICBTaGFyZWFibGVKSVRTdHViUm91dGluZShWTSYgdm0sIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIEZpeGVkVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVm
ZXJlbmNlcykKKyAgICAgICAgOiBKSVRTdHViUm91dGluZShjb2RlKQorICAgICAgICAsIG1fdm0o
dm0pCisgICAgICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgICAgICwgbV93ZWFrUmVm
ZXJlbmNlcyhXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+Pioga2V5cygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICZtX2tleXM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4qIHdl
YWtSZWZlcmVuY2VzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJm1fd2Vha1JlZmVyZW5jZXM7IH0K
KworICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIGZpbmFsOworCitwcml2YXRlOgorICAg
IFZNJiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gbV9rZXlzOwor
ICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiBtX3dlYWtSZWZlcmVuY2VzOworfTsKKworY2xh
c3MgU2hhcmVkSklUU3R1YlNldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoU2hhcmVk
SklUU3R1YlNldCk7CitwdWJsaWM6CisgICAgU2hhcmVkSklUU3R1YlNldCgpID0gZGVmYXVsdDsK
KworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4mIGtleXMpCisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBm
b3IgKGF1dG8mIGtleSA6IGtleXMpCisgICAgICAgICAgICBXVEY6OmFkZChoYXNoZXIsIGtleS0+
aGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAgc3Ry
dWN0IEhhc2ggeworICAgICAgICBzdHJ1Y3QgS2V5IHsKKyAgICAgICAgICAgIEtleSgpID0gZGVm
YXVsdDsKKworICAgICAgICAgICAgS2V5KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIs
IEdQUlJlZyBleHRyYUdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBSZWdpc3RlclNldCB1c2VkUmVn
aXN0ZXJzLCBKSVRTdHViUm91dGluZSogd3JhcHBlZCkKKyAgICAgICAgICAgICAgICA6IG1fd3Jh
cHBlZCh3cmFwcGVkKQorICAgICAgICAgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIpCisgICAg
ICAgICAgICAgICAgLCBtX3ZhbHVlR1BSKHZhbHVlR1BSKQorICAgICAgICAgICAgICAgICwgbV9l
eHRyYUdQUihleHRyYUdQUikKKyAgICAgICAgICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1Yklu
Zm9HUFIpCisgICAgICAgICAgICAgICAgLCBtX3VzZWRSZWdpc3RlcnModXNlZFJlZ2lzdGVycykK
KyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKGJpdHdpc2VfY2FzdDxKSVRT
dHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpKQorICAgICAgICAgICAgeyB9
CisKKyAgICAgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3dyYXBwZWQgPT0gYml0d2lzZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSk7IH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYS5tX3dyYXBwZWQgPT0gYi5tX3dyYXBwZWQKKyAgICAgICAgICAgICAgICAg
ICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1f
ZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHVi
SW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Vz
ZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkICE9IGIu
bV93cmFwcGVkOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBKSVRTdHViUm91dGluZSog
bV93cmFwcGVkIHsgbnVsbHB0ciB9OworICAgICAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAg
ICAgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fZXh0cmFH
UFI7CisgICAgICAgICAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgfTsKKworICAgICAgICB1c2luZyBLZXlU
cmFpdHMgPSBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8S2V5PjsKKworICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBLZXkmIHApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcC5t
X3dyYXBwZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4g
U2hhcmVkSklUU3R1YlNldDo6aGFzaCgqcC5tX3dyYXBwZWQtPmtleXMoKSk7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOworICAgIH07CisKKyAgICBzdHJ1Y3QgU2VhcmNoZXIgeworICAgICAgICBzdHJ1Y3Qg
VHJhbnNsYXRvciB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTZWFy
Y2hlciYgc2VhcmNoZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNo
YXJlZEpJVFN0dWJTZXQ6Omhhc2goc2VhcmNoZXIubV9rZXlzKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGEsIGNvbnN0IFNl
YXJjaGVyJiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhLm1fYmFzZUdQ
UiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0g
Yi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1f
ZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9z
dHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBi
Lm1fdXNlZFJlZ2lzdGVycykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBhdmVj
ID0gKmEubV93cmFwcGVkLT5rZXlzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGJ2ZWMgPSBiLm1fa2V5czsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF2ZWMuc2l6ZSgpICE9
IGJ2ZWMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBidmVjLnNp
emUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBY2Nlc3NDYXNl
OjplcXVhbEluU2hhcmluZygqYXZlY1tpbmRleF0sICpidmVjW2luZGV4XSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGF3ZWFrID0gKmEubV93cmFwcGVkLT53ZWFr
UmVmZXJlbmNlcygpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBid2VhayA9IGIu
bV93ZWFrUmVmZXJlbmNlczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF3ZWFrLnNpemUoKSAh
PSBid2Vhay5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBhd2Vhay5zaXpl
KCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhd2Vha1tp
XSAhPSBid2Vha1tpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAg
ICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7CisgICAgICAg
IEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3Rl
cnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mIG1fa2V5
czsKKyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiBtX3dlYWtSZWZlcmVu
Y2VzOworICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6Omhhc2goKnN0dWItPmtleXMoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkga2V5
LCBKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtl
eS5tX3dyYXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChI
YXNoOjpLZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChrZXkpOworICAgIH0K
KworICAgIHZvaWQgcmVtb3ZlKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAg
YXV0byBpdGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAg
ICAgaWYgKGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3Zl
KGl0ZXIpOworICAgIH0KKworICAgIEpJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVy
JiBzZWFyY2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hh
cmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAg
aWYgKGVudHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1f
d3JhcHBlZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAg
IEhhc2hTZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1
MzY3OWM4NC4uYjIyNmZiMTZmNWRiNzQ0ZjdmZTU1NmJlYzc1OGQ3Y2VhMDRlNGFhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjQ0LDEwICsyNDQs
OCBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXRVcChD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcCwgQ29kZUxvY2F0
aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlNb2RlIGFy
cmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCisgICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25M
YWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMtPm5v
dEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZUp1bXAgPSBi
YWRUeXBlSnVtcDsKICAgICAgICAgdGhpcy0+ZXhjZXB0aW9uSGFuZGxlciA9IGV4Y2VwdGlvbkhh
bmRsZXI7CiAgICAgICAgIHRoaXMtPmRvbmVUYXJnZXQgPSBkb25lVGFyZ2V0OwogICAgICAgICB0
aGlzLT5iYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQgPSBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7
CkBAIC0yNjIsOCArMjYwLDIxIEBAIHN0cnVjdCBCeVZhbEluZm8gewogCiAgICAgREVDTEFSRV9W
SVNJVF9BR0dSRUdBVEU7CiAKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
IG5vdEluZGV4SnVtcDsKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJh
ZFR5cGVKdW1wOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQorCisgICAg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247CisKKyAgICB1bmlv
biB7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25v
dEluZGV4SnVtcFRhcmdldDsKKyAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBtX25vdEluZGV4SnVtcDsKKyAgICB9OworICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7Cisg
ICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsK
KyAgICB9OworCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4g
ZXhjZXB0aW9uSGFuZGxlcjsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBkb25lVGFyZ2V0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJh
ZFR5cGVOZXh0SG90UGF0aFRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAppbmRleCBhMzY5ZTExMDA5MTBhNzZiM2UyZGNiODhjNzkyNTA2ZmMwMDc0ZTU0
Li42MmY3M2RkODllYWU1NjViOWVhYmZhYmU2ODNlZTk3N2Y5ZWQ4OWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00MjAsNiArNDIwLDExIEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgcmV0dXJuIGpp
dFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9CisKKyAgICBib29sIHVzZVNo
YXJlZElDKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhqaXRUeXBlKCkpOworICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIENvZGVCbG9j
ayogcmVwbGFjZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCAwYzNjNDEyMWQ1ODY2Mjdl
YTk1MDQxYmY3MTcwZGM3YzlkNTBhYmJhLi40ZWEwYjljZGNjNzE2MmZlOTNiYjY3NDljMjg2MDc1
NjM3MWEzYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEdldHRlclNl
dHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlCiAgICAgbV9jdXN0b21TbG90QmFzZS5zZXRNYXlCZU51bGwodm0sIG93
bmVyLCBjdXN0b21TbG90QmFzZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdl
dHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLAogICAgIHN0ZDo6b3B0aW9uYWw8RE9NQXR0
cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hh
aW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9t
U2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5t
X2RvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNz
b3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3Vz
dG9tR2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVm
PEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAg
ICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmpl
Y3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBl
ID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJh
c2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVu
dGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0
ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAg
cmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3Vz
dG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkBAIC05MSw5ICs5MSw5IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRl
clNldHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAg
bV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1Jl
ZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0
YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Io
c3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVJlZ3MoKSk7CiAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BS
KTsKIAogICAgIEdQUlJlZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYg
KzIyNSwxMSBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6
IGZwU2NyYXRjaCkKICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwog
ICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3Rl
cnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcyBwYXJhbXMoc3Rh
dGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2Ny
YXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vz
c0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmgKaW5kZXggYTg0ODg0NThmNGFiZDJhYWQyZWJhZjYyYjI4YTMzYzQxODYwNDA4Ny4u
YzM2NzNhNGYxNGJmMDc4NTY2MGM1NjRiNzgzMmE1ZGI0NDZiNzI5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5o
CkBAIC01MywxNyArNTMsMTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1pdERPTUpJVEdldHRl
cihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciosIEdQ
UlJlZyBiYXNlRm9yR2V0R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAg
ICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQs
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsCiAgICAgICAg
IEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgc3RkOjpvcHRpb25hbDxET01BdHRyaWJ1dGVBbm5v
dGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+JiYsIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwKICAgICAgICAgRnVu
Y3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciA9IG51bGxwdHIsIEpT
T2JqZWN0KiBjdXN0b21TbG90QmFzZSA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQ
cmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkdldHRlclNldHRlckFjY2Vzc0Nhc2UoKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNz
LmNwcAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2JhZTk2ZmIzMjFhLi4yMTk0
MmM0MzViZWVjMTRjMTU4NjM5NWUzZDY0MTEzNmUyMjg4OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAtMjE2LDYgKzIxNiw4IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVnaXN0ZXIoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VUYWdH
UFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKICNlbmRpZgor
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIEdQUlJlZyBzY3Jh
dGNoID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAgIGlmIChhbGxvY2F0b3Iu
ZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7CkBAIC0z
NzksOCArMzgxLDU0IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICByZXR1cm4gbGlua2Vk
Q29kZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFj
Y2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4g
dGFyZ2V0KQogeworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAg
c3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAg
ICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQg
YmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5j
aENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHVi
SW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVk
c0JyYW5jaENvbXBhY3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxp
ZCgpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKKworICAgIEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3Rh
bnQganVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit7CisgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICAvLyBJZiBpdCBpcyBub3QgR2V0
QnlJZC1saWtlLXRoaW5nLCB3ZSBkbyBub3QgZW1pdCBub3Agc2xlZCAoZS5nLiBHZXRCeVZhbCku
CisgICAgICAgIC8vIFRoZSBjb2RlIGlzIGFscmVhZHkgYW4gaW5kaXJlY3QganVtcCwgYW5kIG9u
bHkgdGhpbmcgd2Ugc2hvdWxkIGRvIGlzIHJlcGxhY2luZyBtX2NvZGVQdHIuCisgICAgICAgIGlm
IChzdHViSW5mby5oYXNDb25zdGFudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIC8vIElmIG1f
Y29kZVB0ciBpcyBwb2ludGluZyB0byBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24sIHRo
aXMgbWVhbnMgdGhhdCBJbmxpbmVBY2Nlc3MgY29kZSBpcyBub3QgYSBzdHViIG9uZS4KKyAgICAg
ICAgICAgIC8vIFdlIHJld3JpdGUgdGhpcyB3aXRoIHRoZSBzdHViLWJhc2VkIGRpc3BhdGNoaW5n
IGNvZGUgb25jZSwgYW5kIGNvbnRpbnVlIHVzaW5nIGl0IHVudGlsIHdlIHJlc2V0IHRoZSBjb2Rl
LgorICAgICAgICAgICAgaWYgKHN0dWJJbmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
ID09IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSB7
CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmc3R1YkluZm8pLCBzdHViSW5mby5t
X3N0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
Q29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgICAgIGF1dG8g
anVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAgICAgICAgICAgICBib29sIG5lZWRzQnJhbmNoQ29t
cGFjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihq
aXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOworCisgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKGp1bXAsIHN0dWJJbmZvLmRvbmVMb2NhdGlvbik7CisKKyAgICAgICAgICAgICAgICBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIHN0
dWIgY2FsbCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN0dWJJbmZvLm1f
Y29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwpAQCAtMzk0LDYgKzQ0Miwy
NiBAQCB2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYgogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZl
ciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOwogfQog
Cit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisK
KyAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5v
cCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlk
ZGxlIG9mIGFuIElDLgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7Cisg
ICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2Vt
Ymxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNo
ZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5s
aW5rKGp1bXAsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisKKyAgICBGSU5BTEla
RV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0
YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCit7CisgICAgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCBm
NDliMzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIyYjg0NzFkMTJkLi5lYjc2ZmYzOTZkMjg4ZWNk
YmUzYWYxMDE3ZjMyNDNhYWE3NDQwYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQsMTAgKzEwNCwxNCBAQCBjbGFzcyBJbmxpbmVB
Y2Nlc3MgewogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlQXJyYXlMZW5ndGgoU3RydWN0dXJl
U3R1YkluZm8mLCBKU0FycmF5Kik7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVTdHJpbmdM
ZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZUFycmF5
TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwotICAgIHN0YXRpYyB2b2lkIHJl
d2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4pOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2VsZkluQWNjZXNz
KFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJh
dGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIAorICAgIHN0YXRpYyB2b2lkIHJl
d2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7
CisgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5l
Q29kZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyB2b2lkIHJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisK
ICAgICAvLyBUaGlzIGlzIGhlbHBmdWwgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2l6ZSBvZiBhbiBJ
QyBvbgogICAgIC8vIHZhcmlvdXMgcGxhdGZvcm1zLiBXaGVuIGFkZGluZyBhIG5ldyB0eXBlIG9m
IElDLCBpbXBsZW1lbnQKICAgICAvLyBpdHMgcGxhY2Vob2xkZXIgY29kZSBoZXJlLCBhbmQgbG9n
IHRoZSBzaXplLiBUaGF0IHdheSB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFl
NzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdj
MTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNz
Q2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVh
dGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nl
c3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CiB9CiAKIHZvaWQg
SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJp
bnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNv
bnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5
cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNz
Q2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOwogICAg
IHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmlu
ZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0
NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWNjZXNzQ2Fz
ZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+
IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsCiAgICAgICAgIEpTT2JqZWN0KiBwcm90
b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0m
LCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBj
b25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFkYzIzMzY5MzNkNjc2YzNiZTllOTBjNjAx
ODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZlNjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rpb24uc2V0KHZtLCBvd25lciwgaW50cmlu
c2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0
LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
SlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRl
bnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rp
b24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9m
ZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
Ojp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8
QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3Vs
dC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
aAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEy
YmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgK
QEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50cmluc2ljR2V0
dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0
ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rp
b24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4g
Y2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAppbmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEw
OGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFmNDgxNTU2NjE1MTcwODVhODhlMTlhMDcz
YWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCkBAIC00NSwxOCArNDUsMTggQEAgTW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgb3du
ZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJv
bm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5h
bWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNj
b3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlm
aWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNl
dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmly
b25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNj
ZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPiByZXN1bHQobmV3IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+
cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaApp
bmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNkMDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2
MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAg
LTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1
YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9u
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBT
Y29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0K
IAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
LCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZz
ZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmlu
YWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBm
YWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKaW5kZXggM2QyMzNmYWQxMzM5MmRl
MDJiZjNiM2M5N2ZkMDY0N2YwZDFhYWZmMy4uYmU3M2ZkYjVlNWE3YTlmZjFiNzUyNzIwMjUyOTNj
YjYyYTU4NDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2
ICs5MCwzMiBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7
CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBIYXNo
ZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlzKQorICAgICAg
ICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNo
ZXIuaGFzaCgpOworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmIHJocykKKyAgICB7CisgICAgICAgIGlmIChsaHMuc2l6ZSgpICE9IHJocy5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gbGl0ZXIgPSBsaHMuYmVn
aW4oKTsKKyAgICAgICAgYXV0byByaXRlciA9IHJocy5iZWdpbigpOworICAgICAgICBmb3IgKDsg
bGl0ZXIgIT0gbGhzLmVuZCgpOyArK2xpdGVyLCArK3JpdGVyKSB7CisgICAgICAgICAgICBpZiAo
ISgqbGl0ZXIgPT0gKnJpdGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhzLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobGhz
ID09IHJocyk7CisgICAgfQogICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvck9i
amVjdChKU09iamVjdCopIGNvbnN0OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvckNv
bmRpdGlvbktpbmQoUHJvcGVydHlDb25kaXRpb246OktpbmQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXgg
MDNhMmY2NzFmNzQ0NmU0YWNhZGNkNzRiOWM4N2U4OWE3ZDA5YTAxNS4uYmQwYTIxZmNlNzBhNmQ3
OGE4MjM1YTgzN2JiYmUzMjBlYzgyYmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC01OSwxMCArNTksOSBAQCB2
b2lkIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICAgICAgb3V0LnByaW50KCI6IiwgbV9jb2RlKTsKIH0KIAotdm9pZCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBjb25kaXRpb24pCit2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9p
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBj
b25kaXRpb24pCiB7Ci0gICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVS
ZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCgKLSAgICAgICAgd2F0Y2hwb2ludHMsIGppdC0+
Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBjb25kaXRpb24pOworICAgIFdhdGNocG9pbnRzT25TdHJ1
Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQod2F0Y2hw
b2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sIGNvbmRpdGlvbik7CiB9CiAKIHZvaWQgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCkBAIC03Myw3ICs3MiwxMCBAQCB2b2lk
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQogdm9pZCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnN1Y2NlZWQoKQogewogICAgIHJlc3RvcmVTY3JhdGNoKCk7Ci0gICAgc3Vj
Y2Vzcy5hcHBlbmQoaml0LT5qdW1wKCkpOworICAgIGlmIChqaXQtPmNvZGVCbG9jaygpLT51c2VT
aGFyZWRJQygpKQorICAgICAgICBqaXQtPnJldCgpOworICAgIGVsc2UKKyAgICAgICAgc3VjY2Vz
cy5hcHBlbmQoaml0LT5qdW1wKCkpOwogfQogCiBjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzRm9yQ2FsbCgpCkBAIC0xMjYsMTAgKzEyOCwxMSBA
QCBhdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFj
a0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJTZQogICAgIH07CiB9CiAKLWF1dG8gQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNl
cHRpb25zKCkgLT4gU3BpbGxTdGF0ZQorYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVn
aXN0ZXJTZXQmIGV4dHJhKSAtPiBTcGlsbFN0YXRlCiB7CiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJl
Z2lzdGVycyA9IGFsbG9jYXRvci0+dXNlZFJlZ2lzdGVycygpOwogICAgIGxpdmVSZWdpc3RlcnMu
ZXhjbHVkZShjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGxpdmVSZWdpc3RlcnMubWVyZ2Uo
ZXh0cmEpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGV4dHJhU3RhY2tQYWRkaW5nID0gMDsK
ICAgICB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRp
b24gPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGwoKmppdCwgbGl2ZVJlZ2lzdGVycywgZXh0cmFTdGFja1BhZGRpbmcpOwpAQCAtMjUyLDcg
KzI1NSw3IEBAIFBvbHltb3JwaGljQWNjZXNzOjp+UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIAog
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAg
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCisgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQogewogICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKQEAgLTI2OCw5
ICsyNzEsOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRD
YXNlcygKICAgICAvLyAgIGFkZCBtb3JlIHRoaW5ncyBhZnRlciBmYWlsdXJlLgogICAgIAogICAg
IC8vIEZpcnN0IGVuc3VyZSB0aGF0IHRoZSBvcmlnaW5hbENhc2VzVG9BZGQgZG9lc24ndCBjb250
YWluIGR1cGxpY2F0ZXMuCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPj4g
Y2FzZXNUb0FkZDsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmlnaW5hbENhc2VzVG9BZGQuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG15Q2FzZSA9IFdURk1v
dmUob3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKKyAgICAgICAgYXV0byBteUNhc2UgPSBXVEZNb3Zl
KG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYgaXQg
aXMgbm90IHJlcGxhY2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0LgogICAg
ICAgICBib29sIGZvdW5kID0gZmFsc2U7CkBAIC0zNDYsOSArMzQ5LDkgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiB9CiAKIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UoCi0gICAgY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IG5ld0FjY2VzcykKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
Vk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBSZWY8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4sIDI+IG5ld0FjY2Vzc2VzOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4sIDI+IG5ld0FjY2Vzc2VzOwogICAgIG5ld0FjY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5l
d0FjY2VzcykpOwogICAgIHJldHVybiBhZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLCBXVEZNb3ZlKG5ld0FjY2Vzc2VzKSk7CiB9CkBAIC0zNTksOSArMzYyLDE1IEBAIGJv
b2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CiAgICAgICAgIGlm
ICghYXQoaSkudmlzaXRXZWFrKHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5jZSA6IG1f
d2Vha1JlZmVyZW5jZXMpIHsKLSAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdlYWtSZWZl
cmVuY2UuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3N0dWJS
b3V0aW5lKSB7CisgICAgICAgIGF1dG8qIHdlYWtSZWZlcmVuY2VzID0gbV9zdHViUm91dGluZS0+
d2Vha1JlZmVyZW5jZXMoKTsKKyAgICAgICAgaWYgKHdlYWtSZWZlcmVuY2VzKSB7CisgICAgICAg
ICAgICBmb3IgKFN0cnVjdHVyZUlEIHdlYWtSZWZlcmVuY2UgOiAqd2Vha1JlZmVyZW5jZXMpIHsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZSh3
ZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDQwLDcgKzQ0OSw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUo
Y29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWduZWQgc3JjSW5kZXggPSAwOwog
ICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAoc3JjSW5kZXggPCBtX2xpc3Qu
c2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9
IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+
IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10pOwogICAgICAgICAKICAgICAg
ICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0aGVuIHdlIGhhdmUgdG8ga2Vl
cCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAgICAgICAgLy8gZmFpbCB0byBy
ZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIHVz
ZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzUwMCw4IEBAIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRoaXNUYWdHUFIpOwogI2VuZGlm
CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAKICAgICBzdGF0ZS5z
Y3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC01MDAsMTIg
KzUxMSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2Vu
ZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7Ci0g
ICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVy
U3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hp
bmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRy
YVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2RlID0gZmFsc2U7CiAKQEAgLTUy
MSwxMiArNTI2LDMwIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAKICAgICBpZiAoUG9seW1v
cnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiT3B0aW1pemVk
IGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwotICAgIAorCisgICAgYm9vbCBkb2Vz
Q2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gZmFsc2U7
CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVjdG9yPEpTQ2VsbCo+IGNlbGxz
VG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4ga2V5cyhjYXNlcy5z
aXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDog
Y2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxs
c1RvTWFyayk7CisgICAgICAgIGlmIChlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRl
ciB8fCBlbnRyeS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRlcikKKyAgICAgICAgICAgIGRv
ZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAga2V5c1tpbmRleF0gPSBlbnRy
eTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUubV9kb2VzQ2FsbHMgPSBkb2Vz
Q2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGRvZXNKU0dldHRl
clNldHRlckNhbGxzOworICAgIC8vIEdldHRlciAvIFNldHRlciByZWxpZXMgb24gc3RhY2stcG9p
bnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBsaW5rZWQgQ29kZUJsb2NrLCB3
aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAgaWYgKGRvZXNKU0dldHRlclNl
dHRlckNhbGxzKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNvbnRhaW5zIHRoZSBjYXNlcyB0
aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3b24ndCBjaGFuZ2UgdGhhdCBz
ZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrID0g
dHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IGZhbHNlOwogICAgIGJvb2wg
bmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3RyaW5nUHJv
cGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrID0g
ZmFsc2U7CkBAIC01NDIsMTAgKzU2NSw0OCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHlt
b3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAg
ICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0ZS53YXRjaHBvaW50cywgY29k
ZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBhbGxHdWFyZGVkQnlTdHJ1Y3R1
cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayhzdHViSW5mbyk7Ci0g
ICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyIHx8IG5ld0Nh
c2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAgICAgICAgICBoYXNKU0dldHRl
clNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2FzZS0+dXNlc1BvbHlQcm90bygp
KQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5lZWRz
U3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgfHwgbmVlZHNJ
bnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisKKyAgICBh
dXRvIGZpbmlzaENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxKSVRTdHViUm91dGluZT4mJiBz
dHViKSB7CisgICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZNb3ZlKHN0dWIpOworICAgICAgICBt
X3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CisgICAgICAgIGlmIChQ
b2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygi
UmV0dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCksICJcbiIpOworCisgICAgICAgIG1f
bGlzdCA9IFdURk1vdmUoY2FzZXMpOworICAgICAgICBtX2xpc3Quc2hyaW5rVG9GaXQoKTsKKwor
ICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5kIHJlc3VsdEtpbmQ7CisgICAgICAg
IGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgp
IHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdD
b2RlOworCisgICAgICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQs
IG1fc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgIH07CisKKyAgICBDQ2FsbEhlbHBl
cnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmppdDsKKworICAgIGlmIChjb2Rl
QmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlLm1fZG9lc0pTR2V0dGVy
U2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQg
c3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0g
aWYgd2UgYXJlIG5vdCBoYXZpbmcgSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNr
LXBvaW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGNhbGxlZS1zYXZlIHJlZ2lzdGVyIGFuZCBpdCBp
cyBrZXB0IGJleW9uZCBjYWxscy4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1dGFibGUgY2FsbCBkb2Vz
IG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rpbmcgc3RhY2stcG9pbnRl
ciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzLiBCdXQgdGhp
cyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFjay1wb2ludGVyLCBhbmQg
bWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8gVG8gZW5zdXJlIFBBQy10
YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVyIHRvIHRoZSBhcHByb3By
aWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogICAgIH0KIAorICAgIHN0
YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJl
c2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAKICAgICBpZiAoY2FzZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5saWtlbHksIGJ1dCB3ZSBt
YWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5k
KGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc1MSw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMgPSBu
dWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JFeGNl
cHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4
Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAgIGlmIChzdGF0ZS5uZWVk
c1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgICAgIC8v
IE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hlbiBkb2luZyBnZW5lcmlj
VW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAgICAgICAvLyBOb3RlIGFs
c28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20gZ2V0dGVyL3NldHRlci4g
Q3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw2ICs3OTEsMzIgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICAg
fQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBmYWlsdXJl
LmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGlu
ZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8g
dGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNhbGxlZCAobm90IGp1bXBl
ZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxsIHRvIHRoZSB0aHVuayB3
aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAgICAvLyBBbmQgd2Ugc2hv
dWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBCYXNlbGluZUpJVC4KKyAg
ICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigp
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKworICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4gc3R1YjsKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXMo
V1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNo
YXJlZElDKCkgJiYgY2FuQmVTaGFyZWQpIHsKKyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6U2Vh
cmNoZXIgc2VhcmNoZXIgeworICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAgICAg
ICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BS
LAorICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0dWJJ
bmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBrZXlzLAorICAgICAgICAgICAgd2Vha1Jl
ZmVyZW5jZXMsCisgICAgICAgIH07CisgICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJz
LT5maW5kKHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKHN0dWIpCisgICAgICAgICAgICByZXR1cm4g
ZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CisgICAgfQorCiAgICAgTGlua0J1
ZmZlciBsaW5rQnVmZmVyKGppdCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxp
bmVDYWNoZSwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci5kaWRG
YWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFs
Ojp2ZXJib3NlKQpAQCAtNzM5LDkgKzgyNiwxMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc3VjY2Vzc0xhYmVsID0g
c3R1YkluZm8uZG9uZUxvY2F0aW9uOwogCi0gICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nl
c3MsIHN1Y2Nlc3NMYWJlbCk7Ci0KLSAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJ
QygpKQorICAgICAgICBBU1NFUlQoc3RhdGUuc3VjY2Vzcy5lbXB0eSgpKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NMYWJlbCk7Cisg
ICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworICAgIH0KICAgICAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJ
bmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZv
ciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOwpAQCAtNzQ5LDI5ICs4MzksMTUgQEAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2MKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+IGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKICAgICAgICAgY29kZUJsb2NrLCBs
aW5rQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIiVzIiwgdG9DU3RyaW5n
KCJBY2Nlc3Mgc3R1YiBmb3IgIiwgKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3JpZ2lu
LCAiIHdpdGggcmV0dXJuIHBvaW50ICIsIHN1Y2Nlc3NMYWJlbCwgIjogIiwgbGlzdER1bXAoY2Fz
ZXMpKS5kYXRhKCkpOwotCi0gICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKLSAgICBWZWN0b3I8
SlNDZWxsKj4gY2VsbHNUb01hcms7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKQotICAg
ICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9NYXJrKTsKLSAg
ICAKLSAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIGNv
ZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxMaW5r
SW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4
Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwotICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRl
LndhdGNocG9pbnRzKTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkK
LSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgaWYgKFBvbHltb3JwaGlj
QWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwg
Y29kZS5jb2RlKCksICJcbiIpOwogICAgIAotICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOwot
ICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwotICAgIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQ6OktpbmQgcmVzdWx0S2luZDsKLSAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjpt
YXhBY2Nlc3NWYXJpYW50TGlzdFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCi0gICAgICAg
IHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7
Ci0gICAgZWxzZQotICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6
R2VuZXJhdGVkTmV3Q29kZTsKLSAgICAKLSAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dChyZXN1bHRLaW5kLCBjb2RlLmNvZGUoKSk7CisgICAgc3R1YiA9IGNyZWF0ZUlDSklUU3R1YlJv
dXRpbmUoY29kZSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIHZtLCBj
b2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlu
a0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKKworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElD
KCkpIHsKKyAgICAgICAgaWYgKGNhbkJlU2hhcmVkKQorICAgICAgICAgICAgdm0ubV9zaGFyZWRK
SVRTdHVicy0+YWRkKFNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleShzdHViSW5mby5iYXNlR1BS
LCBzdHViSW5mby52YWx1ZUdQUiwgc3R1YkluZm8ucmVncy50aGlzR1BSLCBzdHViSW5mby5tX3N0
dWJJbmZvR1BSLCBzdHViSW5mby51c2VkUmVnaXN0ZXJzLCBzdHViLmdldCgpKSk7CisgICAgfQor
CisgICAgcmV0dXJuIGZpbmlzaENvZGVHZW5lcmF0aW9uKFdURk1vdmUoc3R1YikpOwogfQogCiB2
b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjkyMDMyNmRjYzkx
NTQ3NGIzZjFlZWI3ZjcyNWU2YWIzNGFlY2I0MS4uNDU5YmIwYmZhYzU3ZWRlMmIxYzQzNWEwYmZl
N2QxNjk3NDdmZDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmgKQEAgLTE0MSwxMCArMTQxLDEwIEBAIGNsYXNzIFBvbHltb3Jw
aGljQWNjZXNzIHsKICAgICAvLyBXaGVuIHRoaXMgZmFpbHMgKHJldHVybnMgR2F2ZVVwKSwgdGhp
cyB3aWxsIGxlYXZlIHRoZSBvbGQgc3R1YiBpbnRhY3QgYnV0IHlvdSBzaG91bGQgbm90IHRyeQog
ICAgIC8vIHRvIGNhbGwgdGhpcyBtZXRob2QgYWdhaW4gZm9yIHRoYXQgUG9seW1vcnBoaWNBY2Nl
c3MgaW5zdGFuY2UuCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlcygKLSAgICAg
ICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+KTsK
KyAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+KTsKIAog
ICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZSgKLSAgICAgICAgY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPik7CisgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBSZWY8
QWNjZXNzQ2FzZT4pOwogICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVnZW5lcmF0
ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgRUNNQU1vZGUsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgCkBAIC0xNzks
NyArMTc5LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBD
b2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAg
Ci0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0
VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBl
OwogICAgIAogICAgIHZvaWQgY29tbWl0KAogICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1
YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLApAQCAtMTg4LDcgKzE4OCw2
IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBMaXN0VHlwZSBtX2xpc3Q7CiAgICAg
UmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IG1fd2F0Y2hwb2ludHM7Ci0gICAgRml4
ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBz
dHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKQEAgLTE5Niw2ICsxOTUsOCBAQCBzdHJ1Y3Qg
QWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAKICAgICAgICAgLCBt
X2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNlKQorICAgICAgICAs
IG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNh
bGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3Jl
UmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNp
dGVJbmRleChmYWxzZSkKQEAgLTIyMywxMCArMjI0LDEyIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUgewogICAgIEZQUlJlZyBzY3JhdGNoRlBSIHsgSW52YWxpZEZQUlJlZyB9OwogICAg
IEVDTUFNb2RlIG1fZWNtYU1vZGUgeyBFQ01BTW9kZTo6c2xvcHB5KCkgfTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKLSAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOworICAgIFZlY3Rv
cjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9j
YWxsTGlua0luZm9zOworICAgIGJvb2wgbV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA6IDE7Cisg
ICAgYm9vbCBtX2RvZXNDYWxscyA6IDE7CiAKLSAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CisgICAgdm9pZCBpbnN0YWxsV2F0Y2hwb2lu
dChDb2RlQmxvY2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOwogCiAgICAgdm9p
ZCByZXN0b3JlU2NyYXRjaCgpOwogICAgIHZvaWQgc3VjY2VlZCgpOwpAQCAtMjQ4LDcgKzI1MSw3
IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIGNvbnN0IFJlZ2lzdGVyU2V0
JiBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAK
ICAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0
IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7Ci0gICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVS
ZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCk7CisgICAgU3BpbGxTdGF0
ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGNv
bnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7CiAKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oY29uc3QgU3BpbGxTdGF0
ZSYpOwogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGNvbnN0
IFNwaWxsU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYgZG9udFJlc3RvcmUgPSB7IH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nh
c2UuY3BwCmluZGV4IGNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1MGVlYTZhM2IzNGU3NWZhOWQuLjRi
Zjc4MGVkMzE3NjZlZGU2YmNjNTYwNDQ2YTUwNzlhY2JjYzEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKQEAg
LTM4LDE5ICszOCwxOSBAQCBQcm94eWFibGVBY2Nlc3NDYXNlOjpQcm94eWFibGVBY2Nlc3NDYXNl
KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2NlcwogICAgIG1fdmlhUHJveHkg
PSB2aWFQcm94eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8
QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBBU1NFUlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0g
TWlzcyB8fCB0eXBlID09IEdldEdldHRlciB8fCB0eXBlID09IFJlcGxhY2UpOwotICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0
LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9
CiAKIFByb3h5YWJsZUFjY2Vzc0Nhc2U6On5Qcm94eWFibGVBY2Nlc3NDYXNlKCkKIHsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkg
Y29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0
CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByb3h5YWJsZUFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcg
UHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRl
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCmluZGV4IGRjMzllMjZjYTJmNGIyYjdh
YmExMmI1YTU1ZjMyNjY0NDEwZWZhNWMuLmU4NDM4NWNhNzVjOWY3NTJlOGU4ZTE2Y2RkZTBhYmNh
YzdiY2M0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b3h5YWJsZUFjY2Vzc0Nhc2UuaApAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIFByb3h5YWJsZUFj
Y2Vzc0Nhc2UgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAKICAgICBXYXRjaHBvaW50U2V0KiBhZGRp
dGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0LmdldCgp
OyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYs
IEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCgpLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRl
KFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAgIGJvb2wgdmlhUHJveHkgPSBmYWxz
ZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0
cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgflByb3h5YWJsZUFjY2Vzc0Nhc2UoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYzhlNmJjNjNhMzZhMzliODQ1OGI5MDBjYjJhNTJlZjRm
MTUxMTIwZi4uOGRmNTgxZTQ2NGYwZTAyZTM0Nzc1NWZjNzkwZDI3Y2I4OTQyNWE0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC01Miw2ICs1Miw3IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5m
byhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpCiAgICAgLCBwcm9w
ZXJ0eUlzSW50MzIoZmFsc2UpCiAgICAgLCBwcm9wZXJ0eUlzU3ltYm9sKGZhbHNlKQogeworICAg
IHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiB9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjp+
U3RydWN0dXJlU3R1YkluZm8oKQpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVy
ZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENh
Y2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxv
Y2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRo
aXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAs
OSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vz
cz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAg
ICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
dm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nh
c2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXND
YXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldElu
c3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAg
ICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLjk1ZTdkYmI4
NjM4YWI5MmY3NzEzMzg3MWY2ZmE0NmQ5MzVmY2ZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04Nyw3ICs4Nyw3IEBA
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShj
b25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNl
T2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwg
Q2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFj
Y2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nh
c2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+
KTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVC
bG9jayopOwogCkBAIC0zNDQsMTkgKzM0NCwzMCBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7
CiBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHN0
YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBJQyBmb3IgKmJ5
SWQgY2FjaGVzLiBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hhYmxlIGp1bXAgZm9yICdpbnN0YW5j
ZW9mJyBjYWNoZXMuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9u
ZUxvY2F0aW9uOwotICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1Bh
dGhDYWxsTG9jYXRpb247CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIAorICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxv
Y2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbExvY2F0aW9uOworICAg
ICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKyAgICB9
OworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2Nv
ZGVQdHI7CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZVB0cigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9jb2RlUHRyKTsgfQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIHNsb3dQYXRoU3RhcnRMb2NhdGlvbik7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJhdGlvbigpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQor
CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKIAotICAgIEdQUlJlZyBiYXNlR1BSOwot
ICAgIEdQUlJlZyB2YWx1ZUdQUjsKKyAgICBHUFJSZWcgYmFzZUdQUiB7IEludmFsaWRHUFJSZWcg
fTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAgdW5pb24gewog
ICAgICAgICBHUFJSZWcgdGhpc0dQUjsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUjsKICAg
ICAgICAgR1BSUmVnIHByb3BlcnR5R1BSOwogICAgICAgICBHUFJSZWcgYnJhbmRHUFI7CiAgICAg
fSByZWdzOworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSOwogICAgIC8vIEZJWE1F
OiBbMzItYml0c10gQ2hlY2sgaWYgU3RydWN0dXJlU3R1YkluZm86OmJhc2VUYWdHUFIgaXMgdXNl
ZCBzb21ld2hlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
aW5kZXggOGFkZWFkNTBmNDU1NmNmZjI1ZTdjN2M5OTc4MzA0ZDQxNzcwOTc0Ny4uNDc2NTRhNzZk
YjVhMTEzZjBmY2I2YmY2OGEzZDIyYWNiYzZhMDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMTU0LDYgKzE1NCwxMSBAQCBjbGFzcyBKSVRDb21w
aWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxs
TGlua1JlY29yZChmdW5jdGlvbkNhbGwsIGZ1bmN0aW9uKSk7CiAgICAgICAgIHJldHVybiBmdW5j
dGlvbkNhbGw7CiAgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgY2FsbChhZGRyZXNzLCBPcGVyYXRpb25QdHJU
YWcpOworICAgIH0KICAgICAKICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCAyNWEx
MjE5ZmRkNDNiZGZlM2MwN2I4YTI3NGRmOGUwZTU3ODhkMmI1Li5iYTM5ZmZhYzdkYmYzODllYmZi
OGJjNTA2ZDQwOWUxNzUwMGFkMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xODksNiArMTg5LDggQEAgY2xhc3MgQ2FsbFJl
c3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93
UGF0aEdlbmVyYXQKICAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7CiB9
OwogCisKKwogdGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlw
ZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIEp1bXBU
eXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKQEAg
LTI2NCw2ICsyNjYsNjcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGhNb3ZlKAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNv
dXJjZUFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgor
Y2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRUeXBlPiB7CitwdWJs
aWM6CisgICAgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3IoCisgICAg
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xv
d1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVx
dWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAg
ICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4oZnJvbSwg
aml0LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCisgICAgICAgICwgbV9zdHViSW5m
b0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgLCBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcyhz
bG93UGF0aE9wZXJhdGlvbkFkZHJlc3MpCisgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikK
KyAgICAgICAgLCBtX2FyZ3VtZW50cyhzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMp
Li4uKQorICAgICAgICAsIG1fc3R1YkluZm8oc3R1YkluZm8pCisgICAgeworICAgIH0KKworcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+CisgICAgdm9pZCB1
bnBhY2tBbmRHZW5lcmF0ZShTcGVjdWxhdGl2ZUpJVCogaml0LCBzdGQ6OmluZGV4X3NlcXVlbmNl
PEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKTsKKyAgICAgICAgdGhpcy0+c2V0VXAoaml0KTsKKyAg
ICAgICAgbV9zdHViSW5mby0+bV9zbG93T3BlcmF0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAg
aml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPFJlc3Vs
dFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUpCisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRp
b248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgc3RkOjpnZXQ8QXJn
dW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRy
ZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5k
ZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIHRoaXMtPnRlYXJEb3duKGppdCk7CisgICAg
fQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIGZpbmFs
CisgICAgeworICAgICAgICB1bnBhY2tBbmRHZW5lcmF0ZShqaXQsIHN0ZDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+Pjo6dmFsdWU+
KCkpOworICAgIH0KKworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzczsKKyAgICBGdW5jdGlvblR5cGUg
bV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7Cisg
ICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87Cit9OworCisKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlw
ZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAorICAgIFJlc3VsdFR5cGUgcmVzdWx0
LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5
cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KGZyb20sIGppdCwgc3R1YkluZm8sIHN0dWJJ
bmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJl
cXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklU
KiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5
cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVu
dHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKGZyb20sIGppdCwgc3R1YkluZm8sIHN0
dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsIHJlc3VsdCwgYXJndW1l
bnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5B
QkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDBhZjVkZDk4MzljODAyMTZlZjhiY2YwZGU2M2RlM2JjODk1YjNhOGEu
LjkyNDgwMjk3MDUwZmViNWE5ODdlZDlkZjVjOTI3MWI3NjA4MjgyMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDQ1LDI0ICsx
MDQ1LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
SklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpK
dW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKQEAgLTEw
NzAsNyArMTA4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUq
IG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vz
c1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDg2LDI3ICsxMDk4LDM5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7
CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IElu
dmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAg
ICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAg
ICAgIGJhc2UudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNw
aWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdz
KCk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJ
bmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJh
c2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTExMTUsNyArMTEzOSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERv
bnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTEzMCwxNCArMTE1NCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAorICAgICAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOwor
ICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwotCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CkBAIC0xMTQ3LDIwICsxMTc2LDM1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAKICAgICAgICAg
SklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
cmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAK
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBt
X2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTE4OSwyMiArMTIzMywy
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiB7CiAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwotCiAgICAgICAgIEpT
VmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5KTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVl
UmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2so
bm9kZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTIxMywyMCArMTI2MiwzNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAg
ICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsK
IAogICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJl
Z3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3Ms
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkg
eworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwpAQCAtMTI1NSw5ICsxMzE5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwg
UGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMjY3LDE0ICsxMzM3
LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdK
SVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
cmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIGdlbi5zbG93
UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCi0gICAgICAgIE5lZWRU
b1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJ
Q0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwK
KyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVj
a05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsK
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNTg5LDkg
KzM2NzAsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlW
YWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKIHsKICAgICBERkdfQVNTRVJUKG1f
aml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gR2V0UHJpdmF0ZU5hbWUpOwogICAgIERG
R19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9ncmFwaC5jaGlsZChub2RlLCAxKS51c2VL
aW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFwaC5jaGlsZChu
b2RlLCAxKSk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CisgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFw
aC5jaGlsZChub2RlLCAxKSk7CisKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5v
cmlnaW4uc2VtYW50aWM7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29y
ZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2Rl
T3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJz
ID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMzYwMiwxNCArMzY5MywyMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1Zh
bHVlUmVncyBiYXNlLCBKUwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlKSk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0
UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1
bHQucmVncygpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIp
OwogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAg
ICBhdXRvIG1ha2VTbG93UGF0aENhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgYXV0byBtYWtl
U2xvd1BhdGhJQ0NhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICByZXR1cm4gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8o
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIGJhc2UsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKHByb3BlcnR5LnBheWxvYWRHUFIoKSkpOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsCiAgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLApAQCAtMzYxNyw4ICszNzE0LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlMKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IGJhc2VJc0tub3duQ2VsbAotICAgICAgICA/IG1ha2VTbG93
UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXlsb2FkR1BSKCkpKQotICAg
ICAgICA6IG1ha2VTbG93UGF0aENhbGwoYmFzZSk7CisgICAgICAgID8gbWFrZVNsb3dQYXRoSUND
YWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKKyAgICAgICAg
OiBtYWtlU2xvd1BhdGhJQ0NhbGwoYmFzZSk7CiAKICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4s
IHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQ
YXRoKSk7CkBAIC0zNjMwLDI4ICszNzI3LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG1fZ3JhcGgu
Y2hpbGQobm9kZSwgMCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8u
ZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJp
dmF0ZU5hbWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0
YUZvcm1hdEpTKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNl
OiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAor
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5q
c1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNo
SWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAg
YnJlYWs7CkBAIC0zNzUwLDI5ICszODU5LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwotCi0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgLy8gV2UgZW1pdCBwcm9w
ZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKICAgICAv
LyB0byBjaGVjayBpdCBoZXJlLgogICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVs
ZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5l
IDogUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OwotICAgIGNhY2hlZFB1dEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBw
dXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2Rl
KQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVS
ZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgR1BSUmVnIGJyYW5kR1BS
ID0gYnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIo
KSwgYnJhbmRHUFIpOwpAQCAtMzc4NiwxNiArMzkwNiwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKIAogICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRS
ZWdpc3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJh
bmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5k
R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1i
b2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAg
ICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4s
IHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQ
YXRoKSk7CkBAIC0zODA2LDkgKzM5MzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BS
UmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzgyMCwxNiArMzk1NCwyNCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUp
CiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJp
dmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZv
R1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJh
bmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVz
dWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5k
R1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xv
d1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKQEAgLTM5NDcsMjIgKzQwODksMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92
ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIs
IEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFs
dWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3Vs
dEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0
Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVn
aXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJv
dG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAorICAgICAgICB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRlLmZvck5vZGUo
bm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAg
IHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdz
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVS
ZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VP
ZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CkBAIC0zOTczLDYgKzQxMjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAgICYmIG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90
b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTM5ODAsMTMgKzQxMjks
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAg
R1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVH
UFIgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgIAotICAgICAg
ICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
SlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNo
MkdQUik7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHN0dWJJ
bmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIAogICAgICAgICBibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0z
OTk2LDEyICs0MTUwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
KE5vZGUqIG5vZGUpCiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAg
ICAgCisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFu
ZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgCisg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1Zh
bHVlUmVncyBwcm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBA
IC00MDE3LDcgKzQxNzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZihOb2RlKiBub2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0
YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIs
IHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFu
Y2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBz
dHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAog
ICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CkBAIC0xMzA0Nyw0NiArMTMyMDcsNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVRvSW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcg
c3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+
ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChO
b2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1v
ZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERp
cmVjdChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHVi
SW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsK
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNt
YU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ3MTgsMTggKzE0ODk2LDIwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNj
cmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5k
LCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFN
b2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CiAgICAgICAg
IC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24n
dCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BS
LCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVlUmVncywgZmFsc2UpOwor
ICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCisgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNjcmF0Y2hHUFIs
IGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
QEAgLTE0NzM5LDkgKzE0OTE5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5
SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1
bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKLSAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5z
dHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1Bh
dGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFs
dWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlk
ZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVl
UmVncywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlJZChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5k
ZXggNzRjMTVlNjk3ZTJjYzMyZjZlOWIyZTdjMjVhNmUxOGMxM2Q0MGQ2Yi4uODY4YmZmNzBmOTRm
OGUyMTExYTQ2OGRkZWE0OTUzMjE3NDVmYjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTksMTYgQEAgY2xhc3MgU3Bl
Y3VsYXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRhY2hlZChOb2RlKik7CiAK
LSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lk
IGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZh
bHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQs
IEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVy
OjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwor
ICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUg
PSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlz
R1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21w
aWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkp
OworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nl
c3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0
JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdH
UFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBl
KTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9y
Tm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcg
cmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6
Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUs
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3Vs
dFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNz
VHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdH
UFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BS
UmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENv
bXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJ
ZChOb2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
IHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVy
dCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9kZSosIGJvb2wg
aW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwg
R1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICB2
b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BS
LCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CkBAIC05
NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6
QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9u
VHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSwg
cmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICFGdW5jdGlv
blRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZvaWQ+CisgICAgY2FsbE9w
ZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9u
VHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgfQor
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFj
a09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiAgICAgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBh
IHdlYWstcG9pbnRlci4KQEAgLTk4OCw2ICsxMDA4LDEzIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklU
IHsKICAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgIH0KIAor
ICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1pdFN0
b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBt
X2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBm
dW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKQEAgLTEw
MTAsNiArMTAzNywyOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBj
YWxsOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGFwcGVuZENh
bGwoYWRkcmVzcyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAg
fQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBh
ZGRyZXNzLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCisgICAgeworICAgICAgICBh
cHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBtX2ppdC5zZXR1cFJlc3VsdHMocmVzdWx0MSwg
cmVzdWx0Mik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzKQorICAgIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJl
c3VsdFJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChhZGRy
ZXNzLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisjZW5k
aWYKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQp
CiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAppbmRleCBmMTJmODZmMGQ2ODljNTQ2MDNlZjBkZjNjMDc3YTIxNGJlMWY5
MzAzLi41MjY0NmE5NjFmZmI4NWJjNDlkY2ExMmY0Zjk1MDAxNzc1M2Y3NDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
QEAgLTE2OCwxNSArMTY4LDE2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVk
Z2UgZWRnZSwgR1BSUmVnJiB0YWdHUFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0
ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9k
ZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJh
c2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5w
YXlsb2FkR1BSKCksIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAg
ICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCks
IHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlkZW50
aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdH
UFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJl
c3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwK
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5
cGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlzIGEg
aGFja3kgZml4IGZvciB3aGVuIHRoZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlh
cyB0aGUgYmFzZSBwYXlsb2FkIHdpdGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5z
CiAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwg
d2hpY2ggaGFzIGEgcmVsYXRpdmVseSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9y
eSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92ZXIg
b25lIG1vdmUgaW5zdHJ1Y3Rpb24uCkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0g
bV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElm
TmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VU
YWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlm
aWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQ
UiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFsaWRH
UFJSZWcsIHR5cGUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAg
ICAKQEAgLTIyOCwxNSArMjI5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQoCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKLSAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIs
IEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5
bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVn
IHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQ
UiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVy
OjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZv
R1BSKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVy
cygpOwogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdp
biwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5
bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25l
LCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BS
KSwgSW52YWxpZEdQUlJlZyk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwogICAgIApAQCAtMjM0MSw4ICsyMzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAg
ICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BS
UmVnKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMzQwNSw3ICszNDA3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52
YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAg
ICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxp
ZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQ
UiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI1LDcg
KzM0MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNW
YWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbCh0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
VGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhp
c1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJl
Zywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWY4YmEzODY4ZTg1ODdjMTRjMzc0MDJiOGJj
Mzg0MzA5YzgxMjBhMC4uMjkzMDMwZmQxZTQyYzAzOTRjZjI2YzM4YjVhNWQzNjA1OTFmMjFlYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0xNDcsMTIgKzE0NywxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1Zh
bHVlKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJl
c3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUp
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0g
ICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRp
Zmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3Jp
Z2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBz
bG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNz
VHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1
YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5
cGUgdHlwZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2Fs
bFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0
aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEdQUlJlZwogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRv
IHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJl
Z2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChy
ZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwog
ICAgIH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAot
ICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlw
ZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJn
ZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1
bmN0aW9uKHR5cGUpLAotICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNo
ZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlv
bih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAg
ICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRo
VGFyZ2V0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcg
cmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CkBAIC0xODcsMjAgKzE5NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUgogICAg
IHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNl
dCh0aGlzR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxz
ZSk7CisgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQ
UikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNH
UFIpLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAg
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRl
bnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKQEAgLTI2ODEsMTYgKzI3MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KSk7Ci0KKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMsIFJldXNlLCBwcm9wZXJ0eSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAg
ICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKKyAgICAgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKwogICAgICAgICAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CkBAIC0yNzAwLDggKzI3MjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUikpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlH
UFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAg
ICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDEx
ICsyNzM5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAog
ICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRC
eVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAg
ICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5ODQsOSArNDAx
OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBj
YXNlIEdldEJ5SWRXaXRoVGhpczogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IENlbGxVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsK
KyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAg
ICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0
aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTM5OTQsMTQgKzQwMzYsMjEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlk
V2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJl
c3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcExp
c3QoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTQwMTMsNyArNDA2Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFz
ZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBu
b3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9H
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCA4MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZmYmNmZDYyM2NhNWM1YzdkLi4zMjk4NmE3NzAzZTgx
NDA3ZDM0YzkzMTVlOWE3NmNhNTE2YWQ2NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYgKzM5NzgsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAt
NDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RD
ZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhK
dW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVz
dWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00
MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcs
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTQxMzAsMTAgKzQxNDUsMTEgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJh
bXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3By
KCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7
CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKLSAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRl
eCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgc3R1Yklu
Zm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAg
ICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMgKzQxNzUsMjUgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAg
ICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
Ci0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBl
KSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9H
UFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpOwor
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSks
IEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhD
YWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBtaWdodCB3YW50IHRvIGxhdGUtY2xv
YmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1MzgsMTAgKzQ1NjcsMTIgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBKUyBzZXR0ZXIgY2FsbCBJQ3MgZ2Vu
ZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0aGlzLgogICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBj
YWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94
PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBd
LmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIHN0dWJJbmZvR1BSLCBH
UFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQ
UlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkp
LCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBd
LmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdl
bmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtU
byhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBv
cnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyMzksNiAr
NTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC01MjU5LDEw
ICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlH
UFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0
Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0
eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVl
UmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsK
IAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmlu
ZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50MzI7CkBAIC01MjgwLDEzICs1MzI1
LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
dENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0
KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRo
SnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhC
ZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5Myw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMiA6IDE7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2lu
dCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAg
ICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwpAQCAtNTg3NCw3ICs1
OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29u
c3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdC
aXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBwYXJhbXNbMl0uZ3ByKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigp
KTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJz
Y3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BS
KSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZh
c3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAgICAgICAgICAgICAgICBwYXJhbXMu
YWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0
LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rp
b247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0
KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENh
bGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyMjQyLDggKzEyMzE0LDggQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+
IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2Vw
dGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIzMzIsMTIgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhj
ZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBw
YXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1
dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwxMiArMTIzNDgsMjQgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93
UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFy
YW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbklu
QnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRp
Zmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9w
dGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEy
NDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsg
VmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgCkBAIC0x
MjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1wOwogICAgICAg
ICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEyNTIzLDEwICsxMjYxMCwxMiBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUt
PnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5zdGFuY2VPZkdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90
b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1
bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLAog
ICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmplY3QpOwogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAgICAg
ICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwo
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgo
CkBAIC0xMjUzNywxMiArMTI2MjYsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmso
JmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQ
YXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mb0dQUiwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv
dHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJl
c3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9y
dFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTM5ODYsNiAr
MTQwODcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENl
bGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgR2V0QnlJZEZsdXNo
L0dldEJ5SWREaXJlY3RGbHVzaCwgd2UgbWlnaHQgZ2V0IHNvbWUgcGVyZm9ybWFuY2UgYm9vc3Qg
aWYgd2UgY2xhaW0gdGhhdCBpdAogICAgICAgICAvLyBjbG9iYmVycyB2b2xhdGlsZSByZWdpc3Rl
cnMgbGF0ZS4gSXQncyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgdGhvdWdoLCBzaW5j
ZSB0aGUKQEAgLTE0MDE0LDEwICsxNDExNiwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAgICAgICBleGNl
cHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNp
dGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IElu
dmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRH
ZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5
cGUpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBz
dHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUg
PSBqaXQubGFiZWwoKTsKQEAgLTE0MDMwLDEyICsxNDEzNCwyNCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFy
YW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENh
bGwpOwpAQCAtMTQwNjAsOCArMTQxNzYsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwot
CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAg
ICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAt
MTQwODMsMTAgKzE0MTk5LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRs
ZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsK
IAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJl
ZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkp
LAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1Zh
bHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1Yklu
Zm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGpp
dCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVs
KCk7CkBAIC0xNDA5OSwxMiArMTQyMTcsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJl
Z2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0
aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtU
byhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBv
cnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRleCAyYWRkNDk0YzUzMmFh
ZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRmLi5iNGU0NzU4ZTU4ZmIxZTc5MjZjNmEwNzE4Mzcz
MTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0
aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHdvcmRTaXplID0gODsKIAogU2xvd1BhdGhDYWxs
Q29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKLSAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0
ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJl
Z2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0
LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVj
dENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6IG1faml0KGppdCkKICAgICAsIG1fbnVtQXJncyhu
dW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdpc3RlcihyZXR1cm5SZWdpc3RlcikKQEAgLTYzLDYg
KzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKICAgICBt
X2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm1lcmdlKG1fYXJndW1lbnRSZWdpc3RlcnMpOwog
ICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBtX2NhbGxp
bmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAg
aWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
IG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lz
dGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLmZpbHRlcih1c2VkUmVnaXN0
ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxsaW5nQ29udmVudGlvblJl
Z2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEyIEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6On5TbG93
UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6
OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBj
b25zdAogewotICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxU
YXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0KTsKKyAgICByZXR1cm4gU2xvd1Bh
dGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJz
LCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENhbGxDb250ZXh0
OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKSBjb25zdAorewor
ICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIG51bGxwdHIsIG1fYXJn
dW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBhZGRyZXNzLm9mZnNldCk7CiB9CiAKIFNsb3dQYXRo
Q2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKQEAgLTEzMyw2ICsxNDAsMjIgQEAgU2xvd1BhdGhD
YWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Nsb3dQYXRoQ2FsbCBTbG93
UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyBj
YWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXkgPSBrZXlXaXRoVGFyZ2V0KGNh
bGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCByZXN1bHQgPSBTbG93UGF0aENhbGwobV9qaXQu
Y2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7CisKKyAgICBtX2ppdC5hZGRMaW5rVGFzaygKKyAg
ICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHVuayA9CisgICAgICAg
ICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwgcmVzdWx0Lmtl
eSgpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxsKCksIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih0aHVuay5jb2RlKCkpKTsKKyAgICAgICAgfSk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhG
b3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAg
IGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4MWYyNzdmNmI4MjE3YWM5ZjNmYTgwYzEyYS4uZDZm
Mjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBmNDgyYTgzMWQ0YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCkBAIC01NCwxNSArNTQsMTcgQEAgY2xhc3Mg
U2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2lsbCBiZSBhbiBSQUlJIHRoaW5neSB0aGF0IHdpbGwg
c2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sgc2l6ZXMgYW5kIG9mZnNldHMgYW5kIHN1Y2guCiBj
bGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBTbG93UGF0aENhbGxDb250
ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51
bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlcik7CisgICAgU2xvd1BhdGhDYWxsQ29udGV4dChS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25lZCBudW1Bcmdz
LCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rl
cik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRleHQoKTsKIAogICAgIC8vIE5PVEU6IFRoZSBjYWxs
IHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVhZHkgZ29pbmcgdG8gYmUgbGlua2VkIGJ5IHRoZSBK
SVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAgICAvLyBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB5
b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAgICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2Fs
bCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CiAKIHByaXZhdGU6CiAgICAg
U2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0OwogICAgIAogICAgIFJlZ2lzdGVyU2V0IG1fYXJn
dW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lz
dGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiB7CiAg
ICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAgewotICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0
IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAx
LCByZXN1bHRHUFIpOworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJl
Z2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIElu
dmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8dm9pZChBcmd1bWVudFR5
cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAgICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwo
dm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0xMTcsNiArMTE5LDQ4IEBAIFNsb3dQYXRoQ2FsbCBj
YWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlv
bigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhl
bHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LAorICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgQXJndW1l
bnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgU2xvd1BhdGhDYWxsIGNhbGw7CisgICAgewor
ICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBz
aXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8dm9pZChBcmd1
bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFyZ3VtZW50cy4uLik7CisgICAgICAgIGNhbGwgPSBj
b250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7CisgICAgfQorICAgIGlmIChleGNlcHRpb25UYXJnZXQp
CisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+YXBwZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2so
dm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9u
VGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRHUFIs
CisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgaWYgKGNhbGxTaXRlSW5k
ZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKHZtLCB1c2Vk
UmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sIHJlc3VsdEdQUiwgYXJn
dW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdp
bihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5
cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0YXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGVPcmln
aW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJn
ZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdCwgQXJndW1l
bnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24oCisgICAg
ICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3RlcnMsIGppdCwgY2FsbFNpdGVJbmRleEZvckNvZGVP
cmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLAorICAg
ICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpG
VEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCmluZGV4IDJkMzA2YzYyMDMzYTgzOTA4ZTZm
Y2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdlODI2MWZkNDczNmIxZDMzNzJiZWY1NTEzZWZlNWFh
MzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewotICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIs
IG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9pbnRlcihtX2Nh
bGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0ZXJzID0gIiwg
bV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKKyAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJz
ID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgaW5kaXJl
Y3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9p
bnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0
ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxs
S2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJjN2NlODNkNzA1MjBlNzYxMzg0MmJkZDMzZC4uMGNl
NjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0MWFlMTAwMGQxMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCkBAIC01MSwxMSArNTEsMTIgQEAg
Y2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoCiAgICAg
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
Y2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzLAotICAgICAg
ICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0LCBpbnQzMl90IGlu
ZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhzZXQpCiAgICAgICAgICwg
bV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKQogICAg
ICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMoYXJndW1lbnRSZWdpc3RlcnMpCiAgICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1faW5kaXJlY3RPZmZzZXQoaW5kaXJlY3RPZmZz
ZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYzLDEwICs2NCwxMSBAQCBjbGFzcyBTbG93UGF0
aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY2FsbFRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBh
cmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRSZWdpc3RlcnM7IH0K
ICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBp
bnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpcmVjdE9mZnNldDsg
fQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSB3aXRoQ2FsbFRhcmdldChGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gU2xvd1Bh
dGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMo
KSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3Rl
cnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCksIGluZGlyZWN0
T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAg
IFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVy
cyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsK
ICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KERlbGV0ZWRWYWx1ZVRhZykKICAgICAg
ICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkKLSAgICAgICAg
LCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05MywxOCArOTMsMjAgQEAgY2xh
c3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7CiAgICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3Rl
cnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJzCiAgICAgICAgICAgICAmJiBtX2NhbGxUYXJnZXQg
PT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5t
X29mZnNldDsKKyAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0CisgICAg
ICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0ID09IG90aGVyLm1faW5kaXJlY3RPZmZzZXQ7CiAg
ICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
dXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fdXNlZFJl
Z2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJnZXQuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCArIG1faW5kaXJlY3RPZmZzZXQ7CiAgICAgfQogCiBw
cml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRhcmdldDsKICAgICBSZWdpc3RlclNldCBtX2FyZ3Vt
ZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZfdCBtX29mZnNldDsKKyAgICBwdHJkaWZmX3QgbV9v
ZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBtX2luZGlyZWN0T2Zmc2V0IHsgMCB9OwogfTsKIAog
c3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExU
aHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWExMmFhZGRkMjc2YTkzMzEzM2MwYjM2Yzg2NjEzYWQu
LmQ5MjAyYTNkNDE5ZTVjYjJhNTllMzFmYmU4NWE0YWQ1M2JlNDk0MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRpb25UaHVua0dl
bmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKICAgICAKICAgICAv
LyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGlzIGFj
dGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5v
bkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1
ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAg
ICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3Jh
dGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwogCiAgICAgaml0
LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAsMTMgKzIwMCwyMCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwg
Y29uc3QgUwogICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUpOwogICAgIH0K
ICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBr
ZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQ
UkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIx
LCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3VtZW50UmVnaXN0
ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyID0ga2V5LmFyZ3VtZW50UmVnaXN0
ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBkb250Q2xvYmJlci5z
ZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBX
VEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAgICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbCA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNh
bGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5pbmRpcmVjdE9mZnNldCgpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSksIEdQ
UkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0LnJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CkBA
IC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICBqaXQucmV0KCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBr
ZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJGVEwgc2xvdyBwYXRoIGNhbGwg
dGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDM1NGY5NTQ3YjRhYmYz
Mjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2QuLjZlYTY1NDU0YjhiMjVmODdkOWI2YzdhNDlhNzdj
Y2Y2NTAzMTJjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRl
ICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKQEAgLTY1
Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICBhdXRvIGNhbGxM
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpJVENvbXBpbGF0aW9uUHRy
VGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1ZmZlci5hZGRNYWluVGhyZWFkRmluYWxpemF0aW9u
VGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgKmlu
Zm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0
dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9LCB7
IH0pKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExv
Y2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRo
dW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcyZDg5
ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4OTdlYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3LDcgKzIwNyw3IEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogCiAgICAgLy8g
ZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3Nl
ZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBleHRyYVBva2Ug
aXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFj
ay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewog
ICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIxOSw4IEBAIGNs
YXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAg
Y3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVk
IGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAgIEFyZ0NvbGxl
Y3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCisgICAgICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQs
IHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+CisgICAgICAg
IEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYgb3Ro
ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2Vz
OwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwpA
QCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVz
dGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
ICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFy
Z3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNo
UmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsg
MSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJT
b3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tu
dW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBS
UmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJS
ZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwg
bnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0
aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBh
cmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNl
c10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
IAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5h
dGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50
LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQo
KnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAg
ICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50
OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3NzU291cmNlc10g
PSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAot
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEs
IGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3Rp
bmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMg
KyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBh
cmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4g
cmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMp
OwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3Vt
ZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9
IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0g
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJnKEdQ
UlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhp
cyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJn
dW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNd
ID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4
dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsg
MSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3Vy
cmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Up
CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVk
IGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xhbmcgY2xhaW1z
IHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBzdGQ6
Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1
bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQUnMp
OworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CiAgICAgICAg
IGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIElHTk9SRV9X
QVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEsMTUgQEAgY2xhc3Mg
Q0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFy
Z3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVk
IGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tl
T2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9m
ZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBS
QXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWdu
ZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQog
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQo
Y3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0g
Y2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVu
dCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7
CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAgLTM3Niw4ICsz
ODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRpb24gdGltZSBl
eHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRlbXBs
YXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFy
Z3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lk
IG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9U
eXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJ
bmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSArNDAzLDMxIEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2Up
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1
ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAg
ICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BS
UmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJl
Z2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3Mg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0LDggKzQzNSw4
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2Vsc2Ug
Ly8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJS
ZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxk
IG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2OSwyNSArNDgw
LDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3Vt
ZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJh
UG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgp
LCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCiAKICAg
ICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0gICAgICAgIGlm
IChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsK
KyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAx
KTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVO
VF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBh
cmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwog
ICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50
KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUg
QXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVk
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcy
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWdu
ZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0Nv
dW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAg
aWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJF
eHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAyKTsKKyAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7
CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSAr
IDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdV
TUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFy
Z3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIoKSk7CkBAIC01
NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyks
IGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJy
ZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIoKSk7CkBAIC01
NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElO
RSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwg
QXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJ
bW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBp
dCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5n
IHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25z
IHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZlciBuZWVkZWQg
dG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdlIHdvdWxkIG5l
ZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNoIHNvdW5kcwpA
QCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJn
LCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwK
ICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUK
ICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1
ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFy
ZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8
CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVl
CiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFs
dWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBB
cmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90
PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUK
ICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252
ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+Pios
IENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19z
YW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBU
cnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2Fz
ZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0
byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3Nh
bWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNjM5
LDggKzY1MCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0aGUgYXJn
dW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5v
bkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQ
UkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJjZXMs
IEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJj
ZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBG
UFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVibGljOgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdXNpbmcgRmly
c3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
c2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJp
dCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxB
cml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNl
bmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAg
fSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJl
YWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBm
b3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9w
ZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2Fu
aXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQorICAgIH0KIAot
I2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlT
X0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBF
LCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQogICAgIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2
NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAg
ICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxB
cml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNl
bmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwg
MCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50
cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+
IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFs
bHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9y
IDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUs
IDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4o
KSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5
cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGZ1
bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAgfQogCi0jdW5k
ZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsK
KyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVj
dGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVzcy5iYXNlLCBH
UFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJl
c3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IGY3YWEz
MjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLmFiMzRhMTQ1MDVlYTE5NzVlMTEy
ODM2MWUzMDA4ZjQ1NWVmN2NmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTM4
LDkgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1HQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCitHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6OkdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNl
cykKICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQorICAgICwgbV9r
ZXlzKFdURk1vdmUoa2V5cykpCisgICAgLCBtX3dlYWtSZWZlcmVuY2VzKFdURk1vdmUod2Vha1Jl
ZmVyZW5jZXMpKQogewogICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0aGlzKTsK
IH0KQEAgLTQ5LDYgKzUyLDkgQEAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NBd2FyZUpJVFN0
dWJSb3V0aW5lKCkgeyB9CiAKIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVy
b1JlZkNvdW50KCkKIHsKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQorICAgICAgICBt
X3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKwogICAgIGlmIChtX2lzSmV0dGlz
b25lZCkgewogICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVlZGVkIGZvciB3aGVuIHRoZSBzeXN0
ZW0gc2h1dHMgZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAgICAgLy8gdGhlIEpJVCBzdHViIHJv
dXRpbmUgc2V0IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0IGFyb3VuZCB0byBkZWxldGluZwpA
QCAtNzUsOSArODEsOSBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6ZGVsZXRlRnJvbUdD
KCkKIH0KIAogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRT
dHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsCisgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZt
LCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgRml4ZWRWZWN0b3I8U3Ry
dWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgY29u
c3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0lu
Zm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAgIDogR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZl
cmVuY2VzKSkKICAgICAsIG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlua0lu
Zm9zKFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiB7CkBAIC0xMDYsOSArMTEyLDkgQEAgdm9pZCBN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwo
U2xvdFZpc2l0b3ImIHZpc2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAotICAg
IGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUs
IFZNJiB2bSwgIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2Vs
bHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVk
VmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4mJiB3ZWFrUmVmZXJlbmNlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpT
Q2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0
ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5r
SW5mb3MpKQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RG
TW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXIo
Y29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
LCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyLT5jb2Rl
T3JpZ2lucygpKQpAQCAtMTUyLDggKzE1OCwxMCBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGlu
ZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIH0KIAogCi1SZWY8
SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorUmVmPEpJVFN0dWJSb3V0aW5l
PiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmIGtleXMsCisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1Jl
ZmVyZW5jZXMsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgYm9v
bCBtYWtlc0NhbGxzLApAQCAtMTY1LDE4ICsxNzMsMTggQEAgUmVmPEpJVFN0dWJSb3V0aW5lPiBj
cmVhdGVKSVRTdHViUm91dGluZSgKICAgICBpZiAoIW1ha2VzQ2FsbHMpIHsKICAgICAgICAgLy8g
QWxsb2NhdGluZyBDYWxsTGlua0luZm9zIG1lYW5zIHdlIHNob3VsZCBoYXZlIGNhbGxzLgogICAg
ICAgICBBU1NFUlQoY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKHZtLCBjb2RlLCBXVEZNb3ZlKGtleXMpLCBX
VEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoY29kZUJsb2Nr
Rm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkp
KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlu
a0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJD
YWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBX
VEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5m
b3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxT
aXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5r
SW5mb3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpj
cmVhdGUoY29kZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpj
cmVhdGUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKTsK
ICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUs
IHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3duZXIsIGNlbGxz
LCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5k
ZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFjYTlmZC4uMDVhOGE2ZmM2YjQ2
NTk3MDdiODYwMjI5ZWY3NjhkZDYzNzA1NTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7
CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIApAQCAtNTQs
MTIgKzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2Vz
IG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91
dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmKTsKICAgICB+R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0
aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0
ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2Rl
LCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZl
Y3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcykKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdU
Rk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKSk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDkgQEAgY2xhc3MgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAgbWFya1JlcXVp
cmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAKKyAgICBjb25zdCBGaXhl
ZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Jm1fa2V5czsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiogd2Vha1JlZmVy
ZW5jZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV93ZWFrUmVmZXJlbmNlczsgfQorCiAgICAg
dm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTgxLDYgKzg1LDkgQEAg
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIAog
ICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSmV0dGlz
b25lZCB7IGZhbHNlIH07CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiBtX2tleXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+IG1fd2Vha1Jl
ZmVyZW5jZXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRp
dGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3ICs5NSw3IEBAIGNs
YXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBjbGFz
cyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91
dGluZSB7CiBwdWJsaWM6CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICAg
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZN
JiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxM
aW5rSW5mbz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwg
Rml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZl
Y3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJraW5nR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0xMDksNyAr
MTE2LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIg
ZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdD
QXdhcmVKSVRTdHViUm91dGluZSBCYXNlOwogCi0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2Vs
bCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRl
SW5kZXgpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxs
TGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKICAgICB+
R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAogICAg
IHZvaWQgYWJvdXRUb0RpZSgpIGZpbmFsOwpAQCAtMTI5LDkgKzEzNiwxMCBAQCBjbGFzcyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJr
aW5nR0NBd2FyZUpJVAogLy8gYXBwcm9wcmlhdGUuIEdlbmVyYWxseSB5b3Ugb25seSBuZWVkIHRv
IHBhc3MgcG9pbnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQKIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxs
IHRvIEMrKyBvciBKUy4KIC8vIAotLy8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHVi
Um91dGluZSgKKy8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgK
IC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
IGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBib29sIG1ha2Vz
Q2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQyLDggKzE1MCw4IEBAIGNsYXNzIEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3
YXJlSklUCiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQgdXAgd2l0aCBt
b3JlIGNvZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1SZWY8SklUU3R1YlJvdXRpbmU+
IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFr
ZXNDYWxscywKK1JlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgKKyAg
ICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgRml4
ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiYmIHdlYWtSZWZlcmVuY2VzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFr
ZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYm
IGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5k
bGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUlu
ZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2
YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgwMDc3YjBj
NGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDYwLDYg
KzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFy
Z3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJl
Z1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFy
Z0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6
ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblBy
ZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQg
b24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6eDY7IC8v
IHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0gQVJNNjRS
ZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFy
Z0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4
MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIg
PSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGVlMWE0ZTM3ZmZjMjc3ZGNkOTZkNGIwMjJiNzcyN2M1
YmJmNzQyM2QuLjliODIzZWM4NDIzYTJlZjNmY2U5YjNiMzBhMDBiNjMxM2MzNjkxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkzMSwxMiArOTMxLDEyIEBAIHZvaWQgSklUOjps
aW5rKCkKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29tcGlsYXRpb25JbmZvIDog
bV9ieVZhbENvbXBpbGF0aW9uSW5mbykgewogICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRj
aGFibGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5ub3RJbmRleEp1bXA7Ci0g
ICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gbm90SW5kZXhKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhK
dW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKIAogICAgICAgICAgICAgUGF0Y2hhYmxl
SnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVK
dW1wOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4gYmFkVHlwZUp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRU
eXBlSnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2Nh
dGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVy
bmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwogCkBAIC05NDUs
MTQgKzk0NSwxOSBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIHNsb3dQYXRo
VGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0
aFRhcmdldCkpOwogCiAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8t
PnNldFVwKAotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCwKLSAgICAgICAgICAgICAgICBi
YWRUeXBlSnVtcCwKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLAogICAgICAgICAg
ICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKICAgICAgICAgICAgICAgICBi
eVZhbENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCiAgICAgICAgICAgICAgICAgZG9uZVRh
cmdldCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwKICAgICAgICAgICAgICAg
ICBzbG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlv
bkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJl
dGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgICAgIGJ5VmFsQ29t
cGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IHNsb3dQYXRoVGFy
Z2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90
SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRp
b25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3NWM5
Y2I5NmIxMzY1MzJmMDg2MWYyZjBhODA1OGVmYzZiMDU2YjI0Li45ZjMxNjVkNTViOGJkZmRmMTAy
YmZhZjhhZDEzOGU2ODFhYWRjZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI5NCw2
ICsyOTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25D
YWxsOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsKEFkZHJlc3MgZnVuY3Rp
b24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24sIE9wZXJhdGlvblB0clRh
Zyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAg
IENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk1LDM5ICs0MDAsMzkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFu
ZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAgICAgLy8gU3RydWN0
dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2FzZXMuIEZhbGwtdGhy
b3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdUMCwgYW5kIGl0IGlz
IG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKSB7IHJldHVy
biBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMyU2hhcGUpOyB9
Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlw
ZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1p
dEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOworICAgICAgICBK
dW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsgcmV0dXJuIGVtaXRD
b250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBl
KTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbios
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOworICAgICAgICBKdW1wTGlzdCBl
bWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNT
aGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CisgICAgICAgIEp1
bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlN
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKIAogICAgICAgICAvLyBQ
cm9wZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29udGFpbnMgaW5k
ZWNpbmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5vdCB5ZXQgbG9h
ZGVkLiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVyby1leHRlbmRl
ZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLgog
ICAgICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFs
SW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91
c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlW
YWxJbmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlW
YWxJbmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1
b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbElu
Zm8pOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBK
dW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwor
ICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUg
PSBDb250aWd1b3VzU2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3As
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
QnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgogICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CkBAIC04NzAsMTMgKzg3NSwxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPik7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRy
ZXNzKTsKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5U
eXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlmCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4
Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCk7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1l
dGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorICAgICAg
ICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFBy
b2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAg
ICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBAIC04ODYsNiArODk1LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAg
fQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRh
cmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0
YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFy
Z2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAgICAgIHN0cnVj
dCBpczY0Qml0VHlwZSB7CkBAIC05MDYsNiArOTIzLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNs
b3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9p
ZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+
KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBjYW5ub3QgdXNl
IHN0YW5kYXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRoYW4gNjQgYml0
cy4KKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5hbWUgRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgICAg
ICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoQWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbHNl
IC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFyZ3MuLi4gYXJn
cykKQEAgLTkxMyw2ICs5NDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykK
KyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3Bl
cmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0
KSk7CisgICAgICAgIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtOTIzLDYgKzk1OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAg
IH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBN
ZXRhZGF0YSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIHRhcmdldCwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQs
IGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChPcGVyYXRp
b25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4uLiBhcmdzKQog
ICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAxYjQ5ZDQ4
OWRhYTJiNzg2YWI3OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMwYzdmNzY3MTM3OTQ3MGU0
ZGQ5ZDRkYTgzNjVkYTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
QEAgLTM5OCw4ICszOTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNv
ZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgp
KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxLCBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4p
OwpAQCAtNDMyLDggKzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Bl
bihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdl
bi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0
cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwor
CiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CkBA
IC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJl
Z3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgICAgIHBy
ZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSks
IHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBK
U1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5
cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIp
LCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAg
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00
OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBi
cmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCku
cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1Zh
bHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNTI4LDE2
ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAgICBub3RPYmpl
Y3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAgICAgIG5vdE9i
amVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwogCiAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBs
KCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRC
eUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRv
bmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBub3RPYmplY3Qu
YXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAgICAgICBDYWxs
IGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
Z2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZG9uZVZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRv
bmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
anVtcCgpKTsKQEAgLTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAog
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5z
dHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7Cisg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwog
ICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGVj
YzRlNWYzZmY2ZDA3Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFmZGNhYzc4MmFj
OWM4NzRlNTUwYWZmYjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBKSVRUeXBl
OjpCYXNlbGluZUpJVCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAg
ICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
KSksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihp
ZGVudC0+aW1wbCgpKSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxv
YWRJdGVyYXRvckdQUiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZhbGlkR1BSUmVn
LAogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgcHJl
c2VydmVkUmVncy5hZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6
OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAog
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKSkpLAogICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0
eU5hbWVzLT5kb25lLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVz
dWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25lUmVncywKKyAg
ICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAK
ICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9j
aywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMt
PnZhbHVlLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BS
LCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdzLAorICAgICAg
ICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4
IDRjZTc3ZjViMGNlODk5NTBhZmMxZTUyZjQzNTY1MTQ1NjUxYzdiOTguLjE1YzFkN2UwOTg4ZDgz
ZTE0MGQ0MzE5ZjQ2MjM0MTA4ODJiNWJmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiBjbGFzcyBW
TTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBIb3N0
Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVKSVQsCi0gICAg
REZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0Q2FsbFRodW5r
ID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJhc2VsaW5lSklU
ID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIxMDEsCiB9Owor
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7CitzdGF0aWNfYXNz
ZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9mSklUVHlwZSk7
CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4g
ewogcHVibGljOgpAQCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0g
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6OkJhc2VsaW5l
SklUOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElDKEpJVFR5cGUgaml0VHlw
ZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGpp
dFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBPcHRpb25z
Ojp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwogICAgIHZpcnR1YWwgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhfdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNkZTY0NjIyY2UuLjJmZThi
OWI4ZTMxYzhiZGJhMzcxNDJhNmY2MDg3ODRiZGI0M2ZkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC00Myw5
ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHViSW5mbygpCiB9
CiAKIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBt
X2ppdFR5cGUoaml0VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9jb2RlQmxvY2sgPyBtX2Nv
ZGVCbG9jay0+YWRkU3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdpbikgOiBnYXJiYWdlU3R1
YkluZm8oKTsKICAgICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNpdGU7CkBAIC02
MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCiAK
ICAgICBtX3N0dWJJbmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5zbG93UGF0aENhbGxMb2Nh
dGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENh
bGwpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAg
bV9zdHViSW5mby0+bV9zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8
SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOwogICAgIG1fc3R1YkluZm8tPnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc2xvd1BhdGhCZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5l
cmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAotICAgIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2Vk
UmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQogewog
ICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJ
bmZvLT52YWx1ZUdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdz
LnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIg
PSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJh
c2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0g
dmFsdWUudGFnR1BSKCk7CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklU
QnlJZEdlbmVyYXRvcigKIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3Rh
cnQuaXNTZXQoKSk7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAg
ICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxp
emUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRo
U3RhcnRMb2NhdGlvbjsKIH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RD
b21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2l6ZSkKIHsKKyAgICAv
LyBXZSBnZW5lcmF0ZSB0aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBTaGFyZWRJ
QyBpcyBlbmFibGVkIGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2UgSW5saW5lQWNjZXNzCisg
ICAgLy8gZm9yIHRoZSBwZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9zdGFydCA9IGppdC5sYWJl
bCgpOwogICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29k
ZVNpemUoKTsKICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7CkBAIC0xMDEsOSArMTA2
LDkgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3Nl
bWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0QnlJZEdlbmVyYXRvcjo6
SklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkK
LSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
YWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQor
ICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9H
UFIpCiAgICAgLCBtX2lzTGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51aWQoKSA9PSBjb2RlQmxv
Y2stPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7CkBAIC0xMTUsOSArMTIw
LDkgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVl
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykKLSAgICA6IEpJVEJ5SWRH
ZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0
QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAg
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJ
ZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHVi
SW5mb0dQUikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2FkR1BSKCkgIT0g
dGhpc1JlZ3MudGFnR1BSKCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBAQCB2b2lkIEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogfQogCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVu
dGlmaWVyLAotICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcg
c2NyYXRjaCwgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2Ny
YXRjaCwgCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICAgICAg
OiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vz
c1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAgIDogSklUQnlJ
ZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nl
c3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAg
ICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5k
KQogewpAQCAtMTcxLDE0ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNo
KQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlWYWxHZW5lcmF0b3I6
OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5
cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykK
IHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICBB
U1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9z
dHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJl
Z3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChi
YXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzMCBAQCBKSVREZWxCeVZhbEdl
bmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVP
cmlnaW4gY29kZQogdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBt
X3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAg
ICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0
Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERl
bEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlu
a0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShM
aW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJU
KG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAg
ICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQ
YXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1
YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0K
IAotSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQot
ICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVRE
ZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAg
bV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICBBU1NFUlQoYmFz
ZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVy
dHlHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0
LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSBy
ZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQ
UigpOwpAQCAtMjIzLDIyICsyMzMsMjUgQEAgSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJ
ZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3IKIHZvaWQg
SklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1
YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAg
IG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZp
bmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkK
K3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgs
IExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1
bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRp
b25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBt
X3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIEpJVEluQnlJZEdlbmVyYXRv
cjo6SklUSW5CeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW4sIHVzZWRS
ZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBl
IGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBi
YXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBub3Qgc3Vw
cG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVOVVNFRF9QQVJB
TShwcm9wZXJ0eU5hbWUpOwpAQCAtMjUxLDE1ICsyNjQsMTUgQEAgdm9pZCBKSVRJbkJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUSW5z
dGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1
YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIGJvb2wgcHJv
dG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAg
ICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Oklu
c3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6
Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9
IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OwogICAgIG1fc3R1Yklu
Zm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBlOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTI3OSwyMSArMjkyLDI0IEBAIEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAKIHZvaWQgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewotICAg
IG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9zdGFydCA9IGppdC5sYWJlbCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVz
cyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZD
b2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFi
ZWwoKTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVm
ZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsCi0gICAg
ICAgIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fanVtcCkpOwot
ICAgIAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgubG9jYXRpb25P
ZjxOb1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUR2V0QnlWYWxHZW5lcmF0
b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGpp
dFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwg
Y29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAg
ICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQocmVzdWx0KQogewpAQCAtMzAyLDYgKzMx
OCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9
IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBw
cm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQu
cGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQ
UjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBi
YXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQ
UigpOwpAQCAtMzEyLDIwICszMjksMjMgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQg
SklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGpp
dCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBq
aXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5
cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0
dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKEND
YWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAg
fSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAg
ICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRo
KQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBh
dGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkp
OwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQ
YXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNl
OjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
bV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+
c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2Nr
LCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVn
aXN0ZXJzKQogewogICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkNoZWNrUHJp
dmF0ZUJyYW5kIHx8IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kKTsK
ICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKQEAgLTMzMyw2
ICszNTMsNyBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogICAgIG1fc3R1YkluZm8tPmJhc2VH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLmJyYW5kR1BSID0g
YnJhbmQucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKICAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7CkBA
IC0zNDMsMTYgKzM2NCwxOSBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogdm9pZCBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAg
PSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2pp
dFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxs
KENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
ICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVm
ZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5h
bGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAg
QVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZh
c3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRh
Zz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFz
dFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5t
X2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2IyNTUxOTU1NDhi
MGYyZWI2NTEuLmI2OTA4Nzg1NzY0MzhkOTdkOTk0MzBhYzYzZDkxN2JjMmVjOTNmNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51bSBjbGFzcyBK
SVRUeXBlIDogdWludDhfdDsKIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHJv
dGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKKyAg
ICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycyk7CiAgICAgCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKiBt
X2NvZGVCbG9jazsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5m
byogbV9zdHViSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBAIC03
Nyw4ICs3OCw4IEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IgewogICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEJ5SWRH
ZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayos
IEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVibGljOgogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CkBAIC0xMDEsMTMgKzEwMiwxMyBA
QCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNz
IEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBK
SVRHZXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVi
bGljOgogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSk7Cisg
ICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIApAQCAtMTE1LDI2ICsxMTYsMjYgQEAgY2xhc3MgSklUR2V0QnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBib29sIG1faXNMZW5ndGhBY2Nl
c3M7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBwdWJsaWMgSklU
QnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRo
aXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVi
bGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKICAgICB7IH0K
IAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgQ29kZUJs
b2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2Us
CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsMTQgKzE0NiwxNCBAQCBjbGFzcyBK
SVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIFB1dEtp
bmQgbV9wdXRLaW5kOwogfTsKIAotY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVREZWxCeVZhbEdlbmVyYXRv
cigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayosIEpJ
VFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0
eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNo
KTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAg
ewpAQCAtMTcwLDE0ICsxNzEsMTQgQEAgY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVREZWxCeUlkR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBC
YXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklURGVsQnlJZEdl
bmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBDb2RlQmxvY2sq
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAg
ICAgewpAQCAtMTk1LDQyICsxOTYsNTAgQEAgY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2Vu
ZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6IHB1
YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHB1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiAgICAgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvcigpIHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0gICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAgICBHUFJSZWcgdmFsdWUs
IEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAorICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKKyAgICAgICAgR1BS
UmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHByb3RvdHlwZUlzS25vd25P
YmplY3QgPSBmYWxzZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJik7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKICAgICB2b2lk
IGZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xv
d1BhdGhMaW5rQnVmZmVyKTsKIAogcHJpdmF0ZToKLSAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBtX2p1bXA7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFz
cyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CitjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwog
cHVibGljOgogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1
bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJl
c3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNs
b3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjUxLDE0ICsyNjAsMTQgQEAgY2xhc3MgSklU
R2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAg
IE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xh
c3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcigpIHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAotICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQs
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0
aEp1bXAoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
aW5kZXggZTc5Y2QzNmVmNTdkN2JkY2VjZTE3NjhkMDU4OGFmZWVkODg4NTAxNS4uMjhhNjQzMzdl
MmYwOGY1ZjIwYWRhNzM3YmI3NmJjYjQ3MzYyMjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFy
cmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBzd2l0Y2gg
KGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHJldHVybiBlbWl0SW50
MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0
SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBj
YXNlIEpJVERvdWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRDb250aWd1b3Vz
OgotICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwg
YmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3Ry
dWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgot
ICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xMjgsNiArMTI4LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0CiAg
ICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRhdGVUb3BDYWxs
RnJhbWUoKTsKKyAgICBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICBleGNlcHRpb25DaGVjaygp
OworfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xv
d1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rp
b24pCiB7CkBAIC0xNTcsNiArMTY0LDE2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAg
cmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxS
ZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlv
bik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
cmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQ
UjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRh
ZGF0YT4KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBt
ZXRhZGF0YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgVmly
dHVhbFJlZ2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxODgsMTkgQEAgQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRh
dGE+CitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgQWRkcmVzcyBm
dW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZh
bHVlR1BSKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1
ZUdQUik7CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNl
SWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmlydHVh
bFJlZ2lzdGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYmQ1NWEzZDA1
MTZkNDZiNjdhZTU5N2I2YzNhNGY1ODdiNWZkZDczMC4uNDVhMDc1MWM5NmM2YTJhY2U4YjY0ZmYw
NGYzNDkwM2NkZDFmNzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xNjQsMTMgKzE2NCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIs
IC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdUNSwKICAgICAg
ICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAg
ICAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0xODYsNyArMTkxLDE0IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2Vu
ID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsK
KworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3Bl
cmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+KEFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAgIH0gZWxzZQorICAg
ICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJl
c3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2Vu
LnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzMxLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVy
IHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwg
YmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUo
Y3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1v
dmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDAp
OwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsxNzQ2LDEzIEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5m
bywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklU
U3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0
eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jayku
ZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2Rl
KCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlv
bkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFk
ZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
YnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hh
c19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTE3NjksMTEgKzE3ODYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFz
X2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBl
ZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9y
QXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBt
b2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIAogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nh
c2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNl
KHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC0xNzk5LDcg
KzE4MTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRf
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHlEZWZhdWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnlWYWxJbmZv
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUo
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRzdCwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIEdQUklu
Zm86Om5vbkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOwog
CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uc2xv
d1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlW
YWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA4ZGIzNTllYmQ4Y2QwNTY2
OTczYjg2M2M0ODY3NDFhN2ZhZTIyNDVlLi40ZDc0MTI2YmUxZTNkZTQzMGQzYTZkOWNiN2ZkZGI2
ZGM4NmY3ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCkBAIC0xNjIsMTMgKzE2MiwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIs
IC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICBJbnZhbGlkR1BSUmVn
LAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0U3RvcmVCb29sKGRzdCwg
cmVnVDApOwpAQCAtMTE4Myw3ICsxMTg1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFz
SW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAg
ICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRB
cnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFy
cmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7CisgICAgSnVt
cExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9u
LCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xMTk4LDcgKzEyMDAsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZm
ZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2luZGV4ZWRf
cHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIAotICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZh
bEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRh
Zz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJl
c3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHlHZW5lcmljKSk7CiB9CiAKQEAgLTEyMzQsNyArMTIzNiw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxp
a2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0
TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUpOworICAg
IEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVj
dGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigx
KSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNjAzZjkzYTlhZmYyMWQ5ZGQ0YjFi
YjQ5Nzk5YzljMmEzYWNmYzU3Li4xNmJkYTA5MWIwNTNjMTAzOWRkMzVlY2E3NTExYTRhYjc5OGVi
NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTEwMDIsNyArMTAwMiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0
QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIGlmIChyZXN1
bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZl
ciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIo
T1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKKyAgICAgICAg
aWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZh
bHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CkBAIC0xMDk0
LDcgKzEwOTcsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAocmVzdWx0ID09
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5
IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0g
ICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAg
IGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmlj
KTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFs
KGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFN
b2RlKSk7CkBAIC0xMjc4LDcgKzEyODQsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAg
ICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7
CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbElu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkp
CisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxs
QnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxlYXNl
KCk7CkBAIC0yNTY3LDcgKzI1NzYsMTEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlMKICAgICAg
ICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAgICAgICB8fCBv
YmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAvLyBE
b24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9j
ay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
R2VuZXJpYyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjQ0NjdlOWEyNWUxNDc3ZTFlYzA2MzVk
NDA5NzU0ZDhlNzUzOTJlZi4uZDE3MmVkZjExN2Y3YTgzMWFlYzczZTllNGRkMGY0YTYzMzQ1ZmU0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTY5LDEyICs2OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRC
eVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3VsdFJlZ3MpOwor
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZXN1
bHRSZWdzLCByZWdUMik7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0
eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsK
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAg
ICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAg
LTkzLDggKzk2LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsK
KyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlW
YWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAog
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTExOCw3ICsxMjEsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUpLCBw
cm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzOCw3
ICsxNDUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7CkBAIC0xNTcsOSArMTY1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0
IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8g
Y2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxs
Iik7CkBAIC0xODIsMTAgKzE5MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRS
ZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3Bl
cnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
KTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTIw
MSw4ICsyMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCkBAIC0yMjYsNyArMjM3LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBw
ZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwg
cmV0dXJuVmFsdWVHUFIpOwpAQCAtMjQ1LDcgKzI2MCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAot
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIz
OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5ICsyNzksMTAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRp
cmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5y
ZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3h4
eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKQEAgLTI4NSwxMCArMzAyLDEzIEBAIHZvaWQg
SklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VHUFIsIGJh
c2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRT
bG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiAKICAg
ICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Ygc2VxdWVuY2Ug
c2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCkBAIC0zMDIsOCArMzIyLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdl
biA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsK
ICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKQEAgLTMyOCw5ICszNDcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Nl
dF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlv
blRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3Vt
ZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblNl
dFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplOwor
ICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYKKwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAg
LTM0NiwxMCArMzcwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVj
a1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNr
UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
ZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMu
YXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1Nyw4ICszODQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudAogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nl
c3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzgzLDcg
KzQwOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJy
YW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGlt
aXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgZWxzZQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCkBAIC00MTUsOCArNDQ1LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogICAgIFBhdGNoYWJsZUp1bXAgbm90
SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0ludGVnZXJDb25zdGFudCkgewotICAgICAg
ICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOwotICAgICAgICBh
ZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGF1dG8gaXNJbnQzMiA9IGJyYW5j
aElmSW50MzIocmVnVDEpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOworICAgICAg
ICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICB9CiAgICAgICAgIC8vIFNlZSBj
b21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChyZWdU
MSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwyMyArNDY4LDI0IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBK
SVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2gg
KG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50
MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJ
bnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJs
ZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1
b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZh
bEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAg
ICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC00NTcsNyArNDk0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkK
IHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNDY1LDcg
KzUwMiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogICAgIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVn
VDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7
CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJ
bW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIG91dE9mQm91
bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MTUsNyArNTYxLDcgQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTUy
Myw3ICs1NjksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAKICAgICBKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAo
YnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihF
cXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAg
ICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdl
dCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGlu
ayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJl
c3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKQEAgLTU2
OCw4ICs2MjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENh
Y2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdUMSk7CiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCByZWdU
MiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0
ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRp
b25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBz
aXplLgpAQCAtNTgwLDcgKzYzNSwxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1
dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmso
dGhpcyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgQ2Fs
bCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8o
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBl
KGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDEs
IHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1Qw
LCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAt
NjM4LDggKzY5OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBhdXRvKiBvcGVyYXRpb24gPSBp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoaXNEaXJlY3QgPyBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcyMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5ICs3NDAsMTAgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlH
UFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMg
YSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAg
IC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAg
IGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsKQEAgLTY5Niw4ICs3NjIsMTMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsK
IAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7Ci0gICAg
YWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXA7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBU
YXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAgICAgIGZhc3RQ
YXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEpt
cCk7CisgICAgfQogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAgIApAQCAtNzQz
LDcgKzgxNCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcgKzgzNiw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTc3
OSw5ICs4NTUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgcHV0
S2luZEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFy
Z2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQg
dG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1
bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFy
ZUNhbGwiKTsKQEAgLTg0NiwxMSArOTIzLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMSwgYmFzZSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZGVsQnlJ
ZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdU
MCkpOwpAQCAtODk4LDE1ICs5NzgsMTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQ
Uik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAg
IENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKICNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVl
UmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTkxOCw3ICsxMDAx
LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwpAQCAtOTM1LDkgKzEwMTksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2Rl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6
IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQg
b3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBj
YWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIp
OwpAQCAtOTU2LDEwICsxMDQxLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwog
ICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKQEAgLTEwMDgsMTUgKzEwOTYsMTggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVl
KCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAg
ICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1
ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94
Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCkBAIC0xMDI4LDcgKzExMTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkgKzExMzcsMTAgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBk
aXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJu
aW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
cmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9k
ZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xMDY4LDggKzExNjEsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAog
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6
OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdU
MSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKQEAgLTExMTAsNyArMTIwMywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRy
eUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2
YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0
dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsxMjMwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
RGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMu
YXBwZW5kKGdlbik7CkBAIC0xMTc2LDcgKzEyNzMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6
dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
LSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFk
YXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMDgsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4p
OwpAQCAtMTIzMyw4ICsxMzM0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
KSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQo
Z2VuKTsKQEAgLTEyNzUsNyArMTM3NiwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1
ZUdQUik7CkBAIC0xMjk0LDcgKzEzOTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAg
IC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzExLDkgKzE0MTcsMTAgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwg
cHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAv
LyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhl
IHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xp
ZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsIik7CkBAIC0xMzU0LDcgKzE0NjEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSks
IHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0
QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemU7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXNPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzNzMsNyAr
MTQ4NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKQEAgLTEzOTIsOSArMTUwNCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRp
bWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHBy
b3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8g
RklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0
YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVu
dCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1MzEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwK
KyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCBy
ZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRLaW5kOjpEaXJl
Y3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHV0
QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNDY1LDcgKzE1NzcsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhG
dW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC0x
NDgxLDcgKzE1OTcsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFt
ZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MTcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmlj
dE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0g
ICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRv
IHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhl
IGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9w
cmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjM5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5f
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVEluQnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU2NCw3ICsxNjgyLDExIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
Pjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVl
R1BSKTsKQEAgLTI3NTQsOCArMjg3Niw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBl
bWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUo
Ynl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9w
ZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1QxLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBk
b25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI3NjUsNyArMjg4NywxMyBAQCBKSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHByZXNlcnZl
IHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0aGUg
dGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0
aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5
TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yODE3LDI5ICsy
OTQ1LDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAgICBzd2l0Y2ggKGFycmF5TW9k
ZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMy
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3Vv
dXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlu
a0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJy
YXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdl
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBuZWVkc0xpbmtG
b3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5cGVGb3JKSVRBcnJheU1vZGUo
YXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQotICAgICAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7
CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVj
b2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5IGluIElD
CiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJh
eSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAgQVNTRVJUKGlzRmxvYXQodHlw
ZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRG
bG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg2Niw4ICsyOTk0LDE0IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hC
dWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAgICAgIkJhc2VsaW5lIHB1dF9i
eV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1f
Y29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICB9
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxs
KENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVy
aWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9w
ZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMg
b25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9u
cy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlv
bnMgaW4gYWR2YW5jZS4KQEAgLTI5MDYsOCArMzA0MCwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQQogICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9w
ZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFt
ZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBy
ZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9
IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFs
SW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNz
KSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICB9CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA4MywyMCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywg
UmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVk
IHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtp
bmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlk
KCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJu
QWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4u
c3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
Pm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5
VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmlj
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkg
eworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IHB1dEtpbmQg
PT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0
aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJu
QWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0ZSB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsRGlyZWN0PihC
eVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
KTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RG91Ymxl
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNl
ID0gcmVnVDA7CkBAIC0yOTY4LDcgKzMxMTIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRE
b3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIAog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
aWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNo
MzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICAgICAg
ICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJn
ZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxp
bmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7
CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworCiAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVz
cyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9h
ZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCBmcFJlZ1Qw
KTsKQEAgLTI5NzcsNyArMzEzMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9h
ZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJu
IHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBl
eHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk5NSw3ICszMTQ4LDE2IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0
byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBU
cnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBl
ID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhw
ZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJbmRleChzY3JhdGNoLCBw
cm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDA0LDcgKzMxNjYsNyBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVt
cExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9
IHJlZ1QwOwpAQCAtMzAyMyw3ICszMTg1LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJy
YXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJheVN0
b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7Cisg
ICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihCZWxvd09yRXF1YWwsIHNj
cmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3Jh
Z2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5m
by0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAg
ICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0z
MihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0g
ZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gs
IFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFw
ZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0
aE9mZnNldCgpKSkpOwpAQCAtMzAzNSw3ICszMjA2LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
VHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMDYwLDcgKzMyMzEsMTcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAg
bG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlT
Y3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBi
cmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJy
YXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlW
YWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAg
ICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNo
LCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3Jh
dGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBs
b2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSks
IGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9w
ZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVj
aWFsQ2FzZShwcm9maWxlKTsKQEAgLTMxMTEsNyArMzI5Miw3IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRU
eXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmls
ZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMxMzYsNyArMzMxNywx
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAg
ICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0
VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9y
VHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRy
ZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJs
eVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBl
YXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsK
KwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVs
b3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJv
dW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIyYzc3MDQyODlhYmIwODJm
OWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMGUzYmU2YWY4NDJjZTlkMDI2MjEzNWRlZDU2YzliMGFl
YmRlMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsK
ICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBi
YXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVn
cywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZGVsQnlJZHMu
YXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpKTsKIAog
ICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdz
LCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTI1Nyw4ICsyNTcsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJl
Z3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgICAg
ICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CkBAIC0zOTMsOCAr
MzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQ
cml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRS
ZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFj
Y2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BS
KCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVncywgYnJhbmRS
ZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsK
QEAgLTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9
IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNl
IEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVj
b2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERv
dWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRp
Z3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAtNTExLDcgKzUxMSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3Qg
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGlu
Z1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAt
NTIwLDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5mbyk7CiAgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKENvbnRp
Z3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNTcyLDcgKzU3Myw3IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTU4MSw2
ICs1ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbEluZm8pOwogICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihBcnJheVN0b3Jh
Z2VTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNjYwLDggKzY2Miw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1
bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OlRy
eUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBA
IC03MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5
SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2Nv
ZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0
UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc0OCw4ICs3NTAsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBA
IC03OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpLCBJbnZhbGlkR1BSUmVn
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBA
IC04MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsCiAgICAgICAg
IHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRp
cmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAg
ICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChn
ZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGlu
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCmluZGV4IDg4
MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2Y2RmYWIuLjVhNTcyOGJiZTg3M2ZmNDY5
MmJlNDc4NjhiYjVjNzAyOGJiZTRiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
SklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCit1c2lu
ZyBTdHJ1Y3R1cmVJRCA9IHVpbnQzMl90OworI2Vsc2UKK3VzaW5nIFN0cnVjdHVyZUlEID0gU3Ry
dWN0dXJlKjsKKyNlbmRpZgorCitjbGFzcyBBY2Nlc3NDYXNlOworCiAvLyBUaGlzIGlzIGEgYmFz
ZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFuZCBhbHNvIHRoZSBjbGFzcyB5b3Ugd2Fu
dAogLy8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkgaWYgeW91IGhhdmUgYSByb3V0aW5lIHRoYXQg
ZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJvbSB0aGUgR0MuIElmIGluIGRvdWJ0LCB1c2Ug
b25lIG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVzLiBCdXQKQEAgLTk4LDYgKzEwNiw5IEBAIGNs
YXNzIEpJVFN0dWJSb3V0aW5lIHsKICAgICAvLyBkZXN0cm95ZWQuCiAgICAgdmlydHVhbCBib29s
IHZpc2l0V2VhayhWTSYpOwogCisgICAgdmlydHVhbCBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1
YWwgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+KiB3ZWFrUmVmZXJlbmNlcygpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBvYnNl
cnZlWmVyb1JlZkNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2ODYyNzNkZGE4
MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4uNDRjZTZmM2JiNDU0NjMwNDk2NmM1YWQ0N2ViYjRj
NWYwMzg5ODM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJ
bmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENvZGVPcmlnaW4u
aCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZl
Y3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8dWludDMy
X3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2
bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSwgeyB9LCB7IH0pCiAg
ICAgLCBtX3ZhcmlhbnRzKGNhc2VzLnNpemUoKSkKICAgICAsIG1fZmFzdENvdW50cyhXVEZNb3Zl
KGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXgg
OTA1ZjhkN2YyYWZiZjViMDA2MWVmM2Q3NWY3ZjY2NmViZDFkY2EwNC4uNzUxYjczZGRlMTc0NTlk
MDdhZjU2ZmJlZWIzZTc0MTM0MjJhYTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCkBAIC03MSw4ICs3MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsKQorc3Rh
dGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogeworICAgIGlm
IChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJldHVybiBzdHViSW5mby5tX3Ns
b3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFnPigpOworICAgIENvZGVMb2NhdGlv
bkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCA9IHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9j
YXRpb247CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgp
ID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAgICBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRh
Zz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PEpJVFRodW5rUHRyVGFn
PihjYWxsKTsKQEAgLTEwNSw2ICsxMDgsMTUgQEAgdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFAKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24ucmV0
YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0KIAorc3RhdGljIHZvaWQgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKQoreworICAg
IGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9zbG93
T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9jYXRpb24sIG5ld0NhbGxlZUZ1bmN0
aW9uKTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7CiAgICAgR2l2ZVVwT25DYWNoZSwK
ICAgICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMDksNyArMjIxLDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKgogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwog
ICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRl
TmFtZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCi0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNz
Q2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlQ2VsbCkpIHsK
QEAgLTIxOSw3ICsyMzEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0
ZUFycmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxsKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihr
aW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEFycmF5TGVuZ3RoKGxvY2tl
cik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOSwxMSBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZt
LCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VDZWxsKSkgewotICAgICAgICAgICAg
ICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0ICYmIElubGlu
ZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5zZXQKKyAgICAg
ICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChz
dHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5l
ID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChzdHViSW5mbyk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5k
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTUsMTEgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKgogICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQogICAgICAgICAg
ICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAg
ICAgICAgICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAgICAgICAgICAg
ICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlBy
b3BlcnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwog
ICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJl
LT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRCeUlk
U2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVy
OwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0MzcsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1w
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
cHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAg
ICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAg
ICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywg
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NTEsNyBAQCB2b2lkIHJl
cGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNWYWx1ZSBiYQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBraW5kKSA9PSBH
aXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9u
KGtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOwogfQogCiAKQEAgLTUyOSw3ICs1NDEs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElk
ZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTU0MCw3ICs1NTIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogdm9p
ZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHRyeUNhY2hlQXJyYXlHZXRCeVZhbChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZSwgaW5kZXgsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNh
Y2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsKKyAgICAg
ICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25HZXRC
eVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlk
RnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQpIC0+
IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2LDcgKzY0OCw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5ICYmIChwdXRL
aW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsK
KyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNsb3Qu
YmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKICAgICAgICAg
ICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5nUHJvcGVydHkp
IHsKQEAgLTY1OCw3ICs2NzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQ
dXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVy
YXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hl
ZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFNlbGZQ
YXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJh
c2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJv
cHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UobG9ja2VyLCBjb2Rl
QmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
awogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgp
KTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29k
ZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODE1LDcgKzgyNyw3IEBA
IHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBs
ZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc2xv
dCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAg
ICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRl
R2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFs
dWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kLCBF
Q01BTW9kZSBlY21hTW9kZSkKQEAgLTg0Niw3ICs4NTgsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvYwogICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
ICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwog
CiAgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKICAgICAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG5ld09mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC04NzQsNyArODg2LDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21lQ29k
ZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKICAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSkpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5m
bywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkp
KTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90
VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTg5MSw5ICs5MDMsOSBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAgIGlmICh0cnlD
YWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9s
ZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09IEdp
dmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRo
R2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlm
IChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKICAgICB9CiB9CiAKQEAgLTkzNyw3ICs5NDks
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAg
ICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlk
ZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0
dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTk4NCw3
ICs5OTYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAKICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorICAg
ICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAg
ICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nl
c3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQgPyBzbG90LmNhY2hlZE9mZnNl
dCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJv
dG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nl
c3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3Qo
KSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKQEAgLTk5Myw3ICsxMDA1LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTAwNyw3ICsxMDE5LDcgQEAgdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCoK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBp
ZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHBy
b3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWQpOwogfQogCiBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKQEAgLTEwMzIs
NyArMTA0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0
ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2
YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKKyAgICAgICAgUmVm
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFu
ZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9
IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
RUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA0
MCw3ICsxMDUyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2
YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5k
UmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJv
cGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0g
ICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5s
aW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDU0
LDcgKzEwNjYsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jawogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNoZUNoZWNrUHJp
dmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCBz
dHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0K
IAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKApAQCAt
MTA5MSw3ICsxMTAzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJp
dmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAg
TE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBvbGRTdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFBy
aXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSk7CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwg
bmV3U3RydWN0dXJlKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNl
KGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJh
bmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTEwOTksNyArMTExMSw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExP
R19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
cmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEzLDcgKzExMjUsNyBA
QCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1w
bGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBicmFuZElELCBz
dHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNl
dFByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApAQCAtMTEzMyw3ICsx
MTQ1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAg
ICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2VsbCgpOwogICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFt
aWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKICAgICAgICAgaWYgKHByb3Rv
dHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHZh
bHVlKSkgewpAQCAtMTE2OCw5ICsxMTgwLDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAotICAgICAg
ICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHJlc3VsdC5jb2RlKCk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAo
CisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKKyAgICAgICAg
ICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTEx
ODUsNyArMTIwMSw3IEBAIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoCiB7CiAgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICh0cnlDYWNoZUluc3Rh
bmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHByb3RvdHlwZVZhbHVl
LCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMpOwogfQog
CiBzdGF0aWMgdm9pZCBsaW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJ
bmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGVSZWYp
CkBAIC0xMjAyLDcgKzEyMTgsNyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSYgdm0sIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBj
YWxsTGlua0luZm8pOwogICAgIGxpbmtTbG93UGF0aFRvKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1
YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91
dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xv
d1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9
LCB7IH0pKTsKIH0KIAogc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0NlbGwqIGNh
bGxlZSkKQEAgLTEzMjAsNyArMTMzNiw3IEBAIHN0YXRpYyB2b2lkIGxpbmtWaXJ0dWFsRm9yKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJCiAKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVu
ayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZt
LCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dT
dHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAg
ICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUo
dmlydHVhbFRodW5rLCB2bSwgeyB9LCB7IH0pKTsKICAgICBjYWxsTGlua0luZm8uc2V0Q2xlYXJl
ZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0ICsxNjU3LDE0IEBAIHZvaWQgbGlua1BvbHlt
b3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsKLSAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Ci0gICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBw
cm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgSW5saW5lQWNjZXNz
OjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9p
ZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKIHsKICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTsKLSAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6
ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxs
VGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24pLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOworICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVp
bnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2Nr
LCBzdHViSW5mbykuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGlt
aXplZEZ1bmN0aW9uOwogICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdE9wdGltaXplOwpAQCAtMTY2NSw0NSArMTY4MSw0OCBAQCB2b2lkIHJlc2V0UHV0QnlJ
RChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAg
ICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RP
cHRpbWl6ZTsKICAgICB9CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1Bh
dGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wdGltaXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFz
SnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0RGVsQnko
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlL
aW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSk7CiAgICAgZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwor
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxl
SnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCitzdGF0aWMgdm9pZCByZXNldFBhdGNo
YWJsZUp1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxl
SnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxv
Y2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAgICBlbHNlCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRo
U3RhcnRMb2NhdGlvbik7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsK
KyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1
YkluZm8pOwogfQogCi12b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5m
byk7CisgICAgcmVzZXRQYXRjaGFibGVKdW1wKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2
b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRP
cHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVz
aW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFNldFBy
aXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7
Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElubGlu
ZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJs
b2NrLCBzdHViSW5mbyk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
SlNPYmplY3QqIGNhbGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggMzEz
NzlkYzRlNWE5ZGMyZGM2ZWE0OTMxNzc5NDcyNmEwMDIwMzUxYS4uM2ExOWZkMzY1NDlkMWE4NDgw
OWY5NGRhZGEyZGZiZTU3MDAwZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsK
K3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2
b2lkIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2Nh
dGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
bmV3Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKaW5kZXggYzlkZTZhOGEzOGMxMWI2OTM3NjE5YzFlNTk0YWQxNDUxYjNmMWE5OS4u
ZTdjZGNkYTM2MzM4NGQzNDVjODFiNDgyZGEyN2I3ZDFkYzJlY2Q5OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzgsNiArNTM4LDggQEAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VTaGFy
ZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNl
VG9wTGV2ZWxBd2FpdCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtleXdvcmQgYXQg
dGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS4iKSBcCiAgICAgdihCb29sLCB2ZXJib3NlRXhlY3V0
YWJsZVBvb2xBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29s
LCB1c2VTaGFyZWRJQywgaXNBUk02NCgpLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2ws
IHVzZVNoYXJlZElDSW5PcHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAK
IAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKaW5kZXggOGQwN2EyNzU3ODMzNDBiZWE0ZTEwZGRh
NDkxNjNkMTNiNDk4M2YxMi4uYjhkZDRjYmQ1ZDI4MTAxNTdmOWE5OWJkOWNiMGYwNTUxYTM2ZDlj
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURU
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFi
bGUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsK
IAogI2lmIFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIHVpbnQzMl90IFN0cnVjdHVyZUlEOwordXNp
bmcgU3RydWN0dXJlSUQgPSB1aW50MzJfdDsKIAogaW5saW5lIFN0cnVjdHVyZUlEIG51a2VkU3Ry
dWN0dXJlSURCaXQoKQogewpAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgU3RydWN0dXJlSUQgZGVj
b250YW1pbmF0ZShTdHJ1Y3R1cmVJRCBpZCkKICAgICByZXR1cm4gaWQgJiB+bnVrZWRTdHJ1Y3R1
cmVJREJpdCgpOwogfQogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIFN0cnVj
dHVyZSogU3RydWN0dXJlSUQ7Cit1c2luZyBTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZSo7CiAKIGlu
bGluZSBTdHJ1Y3R1cmVJRCBudWtlZFN0cnVjdHVyZUlEQml0KCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCBiZWFjODZlYjBlYjhjZjUxMzhlZmJmZGMzODIzNDc0MmI4
Y2JkZTExLi40YzFiZTQxODFmZDI3OTgzNDgwZmJiOTViNzNlNTQxNWM3ZjRjNmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNp
bmNsdWRlICJBZ2dyZWdhdGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRl
ICJCaWdJbnRPYmplY3QuaCIKQEAgLTU2Nyw2ICs1NjgsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2Vz
cykKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5j
dGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1
bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgbV9zaGFyZWRK
SVRTdHVicyA9IG1ha2VVbmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAgICB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKIApAQCAtNjU1LDYgKzY1NywxMCBAQCBWTTo6flZNKCkKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zY3JhdGNoQnVmZmVycy5zaXplKCk7ICsraSkKICAgICAg
ICAgVk1NYWxsb2M6OmZyZWUobV9zY3JhdGNoQnVmZmVyc1tpXSk7CiAjZW5kaWYKKworI2lmIEVO
QUJMRShKSVQpCisgICAgbV9zaGFyZWRKSVRTdHVicyA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAog
dm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrKHZvaWQqIGFyZ3VtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggOThhNzVjNmY4YjhkYjI3OWQwMjZm
MzJlYmYzYmJjYzU0MWJhYjBmOS4uNzQyMmI5ZjY3NGUzNWRjMDUxMTRkN2U0ODAzOWNlYmFmMDYx
MjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNzUsNiArMTc1LDcgQEAg
Y2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwogI2Vu
ZGlmCiBjbGFzcyBTaGFkb3dDaGlja2VuOworY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFNvdXJjZVBy
b3ZpZGVyQ2FjaGU7CkBAIC04NDYsMTEgKzg0NywxMyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewog
I2lmIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFRodW5rcz4gaml0U3R1YnM7
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRDVElTdHViKFRo
dW5rR2VuZXJhdG9yKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkSklUU3R1YlNldD4gbV9z
aGFyZWRKSVRTdHViczsKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKEZUTF9K
SVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYK
KwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwg
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMs
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430234</attachid>
            <date>2021-05-31 23:57:48 -0700</date>
            <delta_ts>2021-06-02 14:32:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210531235747.patch</filename>
            <type>text/plain</type>
            <size>429961</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
Mzc3OTI5MDRlNmFkYmExZTIwZGFkZDVjNDBiZTIyZjU3YzA4YzEwLi43YzQxZGM2MjkwYzVjMTA0
OGZmMTYyNWYyZjM4Nzg5ZTYxMWE0NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzIgQEAKKzIwMjEtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjb2xs
ZWN0SW52YXJpYW50c0ZvckNvZGVSZXVzZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OlNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJp
bmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKEpTQzo6QWNj
ZXNzQ2FzZTo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OkFjY2Vzc0Nh
c2UpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpoYXNoKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvciE9KToK
KyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChK
U0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbElu
Zm86OnNldFVwKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1c2VTaGFyZWRJQyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcik6
CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAgICAgIChKU0M6OklubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAq
IGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVz
ZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
czo6dmlzaXRXZWFrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmg6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6QWNjZXNzR2VuZXJhdGlvblN0YXRlKToK
KyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9Q
cm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUgY29u
c3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0
dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpwYXRjaGFibGVKdW1wKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRD
b21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1BhdGhJQ0NhbGwpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRQcml2YXRlTmFtZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFw
cGVuZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxs
U2V0UmVzdWx0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHJpdmF0ZUJyYW5kQWNjZXNzKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FjaGVkUHV0QnlJZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxCeSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAqIGZ0
bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbENv
bnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRo
Q2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNs
b3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhD
YWxsLmg6CisgICAgICAgIChKU0M6OkZUTDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxs
S2V5OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5Lmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpTbG93UGF0aENhbGxLZXkpOgorICAg
ICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6aW5kaXJlY3RPZmZzZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6d2l0aENhbGxUYXJnZXQpOgorICAg
ICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBm
dGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dlbmVy
YXRvcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxDYWxsKToKKyAgICAgICAgKiBqaXQvQ0NhbGxI
ZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6QXJn
Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
cHVzaFJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
cHVzaEV4dHJhUmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0
aW9uOjpwdXNoTm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0
aW9uOjphZGRHUFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rp
b246OmFkZEdQUkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjphZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRl
UG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50
KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVs
cGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1F
TlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50c0VudHJ5SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHMpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRm9ySW5kaXJl
Y3RDYWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAg
ICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgor
ICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQp
OgorICAgICAgICAoSlNDOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5nR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5l
V2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25I
YW5kbGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSUNKSVRTdHViUm91dGluZSk6CisgICAgICAg
IChKU0M6OmNyZWF0ZUpJVFN0dWJSb3V0aW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGlu
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAg
ICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRD
YWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBq
aXQvSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjp1c2VTaGFyZWRJQyk6CisgICAg
ICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
SW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6
SklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEJ5
SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0Q29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRvcjo6
SklUR2V0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
UHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6
SklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJ
ZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5
SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6
SklUSW5CeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRv
cjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9y
OjpKSVRHZXRCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAo
SlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAg
KiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJ
ZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJ
ZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9y
OjpKSVREZWxCeVZhbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5
VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0
b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJ
bnN0YW5jZU9mR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxH
ZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklUR2V0QnlWYWxHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1v
ZGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgor
ICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3Rh
bmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3Bl
cnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRf
cHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
cHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5
X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93
aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
c19wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAg
ICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVO
YW1lV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5
VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVk
QXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1
dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3Vv
dXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRTdHVi
Um91dGluZS5oOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6a2V5cyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpJVFN0dWJSb3V0aW5lOjp3ZWFrUmVmZXJlbmNlcyBjb25zdCk6CisgICAg
ICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRQdXRJQ0NhbGxU
YXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hHZXRCeSk6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hBcnJh
eUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAg
ICAgICAgKEpTQzo6cmVwYXRjaERlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5
SUQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5CeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2Fj
aGVDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAg
KEpTQzo6cmVwYXRjaFNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5z
dGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbnN0YW5jZU9mKToKKyAgICAgICAgKEpT
Qzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoSlNDOjpsaW5rVmlydHVhbEZvcik6CisgICAgICAg
IChKU0M6OnJlc2V0R2V0QnkpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAg
ICAoSlNDOjpyZXNldERlbEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRJbkJ5SUQpOgorICAgICAg
ICAoSlNDOjpyZXNldEluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpyZXNldENoZWNrUHJpdmF0
ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAo
SlNDOjpyZXNldFBhdGNoYWJsZUp1bXApOiBEZWxldGVkLgorICAgICAgICAqIGppdC9SZXBhdGNo
Lmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlSURUYWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisKIDIwMjEtMDUtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBEcm9wIFVuY2hlY2tlZENvbmRpdGlvbiAvIFVuY2hlY2tlZExvY2sKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5kZXggYTE0Mzk0ODVmZGM2
MTVhNDY1MmYwMTU0MjMwYTE1ZjI0N2QwMDM5My4uNzllZWYyYzIwNjVkZDE3MzViOGY0MjAzYjc3
M2Q4YzQ5ZjU2YTczMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmgKQEAgLTIzNCw4ICsyMzQsOCBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICAgICB0ZW1w
bGF0ZTxQdHJUYWcgdGFnPgogICAgIENvZGVMb2NhdGlvbkNhbGw8dGFnPiBsb2NhdGlvbk9mKENh
bGwgY2FsbCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5r
YWJsZSkpOwotICAgICAgICBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKKyAg
ICAgICAgLy8gQVNTRVJUKGNhbGwuaXNGbGFnU2V0KENhbGw6OkxpbmthYmxlKSk7CisgICAgICAg
IC8vIEFTU0VSVCghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOwogICAgICAgICByZXR1cm4g
Q29kZUxvY2F0aW9uQ2FsbDx0YWc+KGdldExpbmtlckFkZHJlc3M8dGFnPihhcHBseU9mZnNldChj
YWxsLm1fbGFiZWwpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggYTI0NWU3N2U0M2U3MGMw
ZWFhMjQzOTY0M2FkYTFmYzAzNGNjNzQxZC4uZTViMGIyZmY3ODkwYjRmZGIyMjAxZmE4NjFiNzQz
ZWNiMTA0YzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMjIwLDE5ICsyMjAsMTkgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAgICAg
IHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdl
dEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRy
ZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGwoQWRk
cmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRhZyAhPSBD
RnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKICAgICAgICAgQVNTRVJUKCFPcHRp
b25zOjp1c2VKSVRDYWdlKCkgfHwgY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6
OkpJVCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVy
LCB0YWcpOworICAgICAgICBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRh
ZykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRhZyAhPSBkYXRhVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7
CisgICAgICAgIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgY2FsbE9wZXJhdGlvbihjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+IG9wZXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAppbmRleCAxMmE5N2EyZDI1ZDVlYmQxZTk5YTVlNWFjMjljMjI4OTNiYTgzOGY5
Li5lMzJjZmEzZGE1YzBiMDI1NzkyMzI5NDYxMGQ0NWYxZjkxNDQyM2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IEFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
IHR5cGUsIENhY2hlYWJsZUlkZW50aWZpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25kaXRpb25T
ZXQuaXNWYWxpZCgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9u
U2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4p
CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIEluSGl0OgpAQCAtMTA1LDEwICsxMDUsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAorUmVm
UHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25T
ZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikK
IHsKQEAgLTEyMiwzNCArMTIyLDM0IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nl
c3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUs
IGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5
cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmNyZWF0ZURlbGV0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVE
ZWxldGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVj
dHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CiAgICAgQVNTRVJUKCFuZXdTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nl
c3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVy
ZSwgeyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBv
d25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0p
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNo
ZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nl
c3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBzdHJ1
Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBz
dHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNz
Q2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0
dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgU2V0UHJpdmF0ZUJy
YW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZh
dGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsg
fSkpOwogfQogCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8oCitSZWZQ
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAogICAgIFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5
cGUoKSkgewpAQCAtMTg4LDkgKzE4OCw5IEBAIEpTT2JqZWN0KiBBY2Nlc3NDYXNlOjphbHRlcm5h
dGVCYXNlKCkgY29uc3QKICAgICByZXR1cm4gY29uZGl0aW9uU2V0KCkuc2xvdEJhc2VDb25kaXRp
b24oKS5vYmplY3QoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNv
bnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgQWNjZXNz
Q2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNl
KCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTk2NCw2ICs5NjQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9z
dHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAg
ICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRj
aEdQUigpOwpAQCAtMTA2MSw2ICsxMDYzLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdp
dGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJ
bmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsK
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQ
UigpOwogCkBAIC0xMTQ0LDYgKzExNDgsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
c3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5m
b0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwog
ICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BS
KCk7CiAKQEAgLTEyMDUsNiArMTIxMSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRo
R3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZv
R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIo
KTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTMxNyw2ICsxMzI1LDggQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYg
KHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9
IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEzOTQsNiArMTQwNCw4MSBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAg
ICAgZ2VuZXJhdGVJbXBsKHN0YXRlKTsKIH0KIAordm9pZCBBY2Nlc3NDYXNlOjpjb2xsZWN0SW52
YXJpYW50c0ZvckNvZGVSZXVzZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS5tX3ZtOworCisgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIFNj
b3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6CisgICAg
Y2FzZSBJbmRleGVkU2NvcGVkQXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREaXJlY3RB
cmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlVaW50OENsYW1wZWRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxvYWQ6
CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheUludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheUZsb2F0NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9y
YWdlTG9hZDoKKyAgICBjYXNlIEluc3RhbmNlT2ZHZW5lcmljOgorICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBHZXRH
ZXR0ZXI6CisgICAgY2FzZSBHZXR0ZXI6CisgICAgY2FzZSBTZXR0ZXI6CisgICAgY2FzZSBDdXN0
b21WYWx1ZUdldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgorICAgIGNhc2Ug
Q3VzdG9tVmFsdWVTZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjogeworICAg
ICAgICBpZiAoaXNWYWxpZE9mZnNldChtX29mZnNldCkpIHsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZSogY3VyclN0cnVjdHVyZTsKKyAgICAgICAgICAgIGlmICghaGFzQWx0ZXJuYXRlQmFzZSgpKQor
ICAgICAgICAgICAgICAgIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyU3RydWN0dXJlID0gYWx0ZXJuYXRlQmFzZSgpLT5z
dHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgY3VyclN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1By
b3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBvZmZzZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbiA6IG1fY29uZGl0
aW9uU2V0KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BvbHlQcm90b0FjY2Vzc0NoYWlu
KTsKKworICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9w
ZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5z
dXJlV2F0Y2hhYmlsaXR5KSkgeworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQo
Y29kZUJsb2NrLCBjb25kaXRpb24pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFsbG93IGVxdWl2YWxlbmNlIHdoZW4gaXQn
cyB3YXRjaGFibGUuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbmRpdGlvbi5jb25kaXRpb24o
KS5raW5kKCkgIT0gUHJvcGVydHlDb25kaXRpb246OkVxdWl2YWxlbmNlKTsKKworICAgICAgICBp
ZiAoIWNvbmRpdGlvbi5zdHJ1Y3R1cmVFbnN1cmVzVmFsaWRpdHlBc3N1bWluZ0ltcHVyZVByb3Bl
cnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAgICAgICAvLyBUaGUgcmVhc29uIHdoeSB0aGlzIGNh
bm5vdCBoYXBwZW4gaXMgdGhhdCB3ZSByZXF1aXJlIHRoYXQgUG9seW1vcnBoaWNBY2Nlc3MgY2Fs
bHMKKyAgICAgICAgICAgIC8vIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlKCkgb25seSBhZnRlciBpdCBo
YXMgdmVyaWZpZWQgdGhhdAorICAgICAgICAgICAgLy8gQWNjZXNzQ2FzZTo6Y291bGRTdGlsbFN1
Y2NlZWQoKSByZXR1cm5lZCB0cnVlLgorCisgICAgICAgICAgICBkYXRhTG9nKCJUaGlzIGNvbmRp
dGlvbiBpcyBubyBsb25nZXIgbWV0OiAiLCBjb25kaXRpb24sICJcbiIpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdl
IHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2VhayByZWZlcmVuY2UgdGhhdCBpc24ndCBvdGhl
cndpc2UgbGlzdGVkIGFueXdoZXJlLgorICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNv
bmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgc3RhdGUud2Vha1JlZmVy
ZW5jZXMuYXBwZW5kKHN0cnVjdHVyZS0+aWQoKSk7CisgICAgfQorfQorCiB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogewogICAgIFN1
cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKQEAgLTE0MTcsNyArMTUw
Miw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BvbHlQcm90b0FjY2Vzc0NoYWlu
KTsKIAogICAgICAgICBpZiAoY29uZGl0aW9uLmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9w
ZXJ0eVdhdGNocG9pbnQoUHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5z
dXJlV2F0Y2hhYmlsaXR5KSkgewotICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQo
Y29uZGl0aW9uKTsKKyAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9j
aywgY29uZGl0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTE0
MzUsNyArMTUyMCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gV2Ugd2lsbCBlbWl0IGNvZGUgdGhhdCBo
YXMgYSB3ZWFrIHJlZmVyZW5jZSB0aGF0IGlzbid0IG90aGVyd2lzZSBsaXN0ZWQgYW55d2hlcmUu
CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1
Y3R1cmUodm0pOwotICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5hcHBlbmQoV3JpdGVCYXJy
aWVyPEpTQ2VsbD4odm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSk7CisgICAgICAgIHN0YXRlLndl
YWtSZWZlcmVuY2VzLmFwcGVuZChzdHJ1Y3R1cmUtPmlkKCkpOwogCiAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb25kaXRpb24ub2JqZWN0KCkpLCBzY3JhdGNo
R1BSKTsKICAgICAgICAgc3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKApAQCAtMTU4Miw3ICsx
NjY3LDEyIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSYgc3RhdGUpCiAKICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2FyeSBj
YWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhjZXB0
aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpT
cGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNr
Rm9yQ2FsbCgpOworICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7
CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQor
ICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6
bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBz
cGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVnaXN0
ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3Rh
dGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAgICBS
ZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTgwMiw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5kaWYK
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxP
YmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJbmZv
KCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBH
ZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwogICAg
ICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE4MTQsOCBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2stPnN0
YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRS
ZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51
bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAgICAg
ICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChjb2Rl
QmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5w
cmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGls
bFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsKKyAg
ICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQb2lu
dGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFsdWUg
PSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tG
b3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyArMTkz
NiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVyQnJh
bmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUucHJl
c2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOworCisg
ICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAg
ICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjps
cik7CisjZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdpc3Rl
cnNUb1ByZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKCZ2bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJh
dGlvblB0clRhZyk7CkBAIC0xODc1LDYgKzE5NzMsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsyMDMzLDEw
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNl
cnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFzZUdQ
Uik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1ZVJl
Z3MpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VT
aGFyZWRJQygpKQorICAgICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUu
c2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2
ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYgKzIx
MzUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxv
Y2soYmFzZUdQUik7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQo
KSk7CiAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9PSBU
cmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CkBAIC0yMTkxLDYgKzIyOTcsMTMgQEAg
VHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9UeXBlZEFycmF5VHlwZShBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGUpCiAgICAgfQogfQogCit2b2lkIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lOjpvYnNl
cnZlWmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQorICAg
ICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBKSVRTdHViUm91
dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIHZv
aWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCiB7CkBAIC0yMjAzLDYgKzIzMTYsMTAzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25z
aXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyhjb25zdCBBY2Nlc3ND
YXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3QgY2Fy
ZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhlbSBo
YXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0FjY2Vz
c0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1fdHlw
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhzLm1f
b2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5ICE9
IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3N0
cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobGhzLm1faWRlbnRpZmllciAhPSByaHMubV9pZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRpdGlvblNldCAhPSByaHMubV9j
b25kaXRpb25TZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAobGhzLm1f
dHlwZSkgeworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2FzZSBE
ZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxldGVN
aXNzOgorICAgIGNhc2UgUmVwbGFjZToKKyAgICBjYXNlIE1pc3M6CisgICAgY2FzZSBHZXRHZXR0
ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIEFycmF5TGVu
Z3RoOgorICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgorICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzTGVu
Z3RoOgorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgQ2hlY2tQcml2
YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBJbmRleGVkSW50
MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkQ29u
dGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9yYWdlTG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFyZ3Vt
ZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVp
bnQ4Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoKKyAg
ICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2FkOgor
ICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRU
eXBlZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAgICBj
YXNlIEluc3RhbmNlT2ZHZW5lcmljOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ug
R2V0dGVyOgorICAgIGNhc2UgU2V0dGVyOiB7CisgICAgICAgIC8vIEdldHRlciBhbmQgU2V0dGVy
IHJlbGllcyBvbiBDb2RlQmxvY2ssIHdoaWNoIG1ha2VzIHNoYXJpbmcgaW1wb3NzaWJsZS4KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0ZXI6
CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVlU2V0
dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgLy8gVGhleSBh
cmUgZW1iZWRkaW5nIEpTR2xvYmFsT2JqZWN0IHRoYXQgYXJlIG5vdCB0aWVkIHRvIHNoYXJpbmcg
SklUU3R1YlJvdXRpbmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNl
IEludHJpbnNpY0dldHRlcjogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8SW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9pbnRyaW5zaWNG
dW5jdGlvbiA9PSByaHNkLm1faW50cmluc2ljRnVuY3Rpb247CisgICAgfQorCisgICAgY2FzZSBN
b2R1bGVOYW1lc3BhY2VMb2FkOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8TW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX21vZHVsZU5h
bWVzcGFjZU9iamVjdCA9PSByaHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0CisgICAgICAgICAg
ICAmJiBsaHNkLm1fbW9kdWxlRW52aXJvbm1lbnQgPT0gcmhzZC5tX21vZHVsZUVudmlyb25tZW50
CisgICAgICAgICAgICAmJiBsaHNkLm1fc2NvcGVPZmZzZXQgPT0gcmhzZC5tX3Njb3BlT2Zmc2V0
OworICAgIH0KKworICAgIGNhc2UgSW5zdGFuY2VPZkhpdDoKKyAgICBjYXNlIEluc3RhbmNlT2ZN
aXNzOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+
KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+KCk7
CisgICAgICAgIHJldHVybiBsaHNkLm1fcHJvdG90eXBlID09IHJoc2QubV9wcm90b3R5cGU7Cisg
ICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApp
bmRleCBiZGQxYjIzN2Q2MThhMmNjZTgyNzIwZjcyY2E3NTM3ZGUzZmE3MDY4Li5mY2RmZTA5YjNl
MzY1ZTAxYzk2ZjgxODY4YzQzMjdjZDMzOWNjODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTI4LDEwICsyOCwxMyBAQAogI2lmIEVOQUJMRShK
SVQpCiAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSklUU3R1
YlJvdXRpbmUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCiAjaW5jbHVkZSAiUG9seVByb3RvQWNjZXNzQ2hh
aW4uaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JIYXNoLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC03OSw3ICs4Miw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEFj
Y2Vzc0Nhc2UpOwogLy8gV2Ugd2lsbCBzb21ldGltZXMgYnVmZmVyIGNvbW1pdHRlZCBBY2Nlc3ND
YXNlcyBpbiB0aGUgUG9seW1vcnBoaWNBY2Nlc3Mgb2JqZWN0IGJlZm9yZSBnZW5lcmF0aW5nCiAv
LyBjb2RlLiBUaGlzIGFsbG93cyB1cyB0byBvbmx5IHJlZ2VuZXJhdGUgb25jZSB3ZSd2ZSBhY2N1
bXVsYXRlZCAoaG9wZWZ1bGx5KSBtb3JlIHRoYW4gb25lIG5ldwogLy8gQWNjZXNzQ2FzZS4KLWNs
YXNzIEFjY2Vzc0Nhc2UgeworY2xhc3MgQWNjZXNzQ2FzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxBY2Nlc3NDYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9I
RUFQX0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiBwdWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBl
IDogdWludDhfdCB7CkBAIC0xNDcsMTkgKzE1MCwxOSBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlVHlwZT4obmV3IEFjY2Vzc0Nh
c2VUeXBlKGFyZ3VtZW50cy4uLikpOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAorICAgIHN0
YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlw
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAog
ICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgUmVmUHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiYmID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAg
c3RhdGljIFJlZlB0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0m
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVE
ZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRl
Q2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7Cisg
ICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYsIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSopOworICAgIHN0YXRp
YyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3RhdGljIFJlZlB0cjxBY2Nl
c3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCiAgICAgQWNjZXNzVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlOyB9CkBAIC0yNTMsMTEgKzI1Niw0MyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsK
ICNlbHNlCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJl
U3R1YkluZm8mKSB7IH0KICNlbmRpZgotICAgIAorCisgICAgdm9pZCBjb2xsZWN0SW52YXJpYW50
c0ZvckNvZGVSZXVzZShBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBDb2RlQmxvY2sqKTsKKworICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gSXQgaXMgcG9zc2libGUg
dGhhdCBtX3N0cnVjdHVyZSBpcyBhbHJlYWR5IGRlc3Ryb3llZC4gV2UgYXJlIGRlc3Ryb3lpbmcg
SklUU3R1YlJvdXRpbmUsIGFuZCB0aGlzIGRlc3RydWN0aW9uIGlzIGRyaXZlbgorICAgICAgICAv
LyBieSBDb2RlQmxvY2sncyBkZXN0cnVjdG9yICh0eXBpY2FsbHkpLiBBbmQgYXQgdGhhdCB0aW1l
LCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFscmVhZHkgZGVzdHJveWVk
IGJlZm9yZQorICAgICAgICAvLyBDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuIEJ1dCBoZXJlLCB3
ZSBkbyBub3QgY2FyZSBhYm91dCB0aGUgbGl2ZW5lc3Mgb2YgdGhpcyBzdHJ1Y3R1cmUgc2luY2Ug
dGhlIG93bmVyIHNob3VsZCBrZWVwIGl0LAorICAgICAgICAvLyBhbmQgaWYgaXQgaXMgZGVhZCwg
aXQgaXMgb25seSBwb3NzaWJsZSBpbiB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3duZXIuIFdlIGp1
c3QgZ2V0IGEgcG9pbnRlciB2YWx1ZSB2aWEgdW52YWxpZGF0ZWRHZXQoKS4KKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVIYXNoKG1fY29uZGl0aW9uU2V0Lmhhc2goKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fdHlwZSksIG1fdmlhUHJveHksIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCksIG1f
b2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbEluU2hhcmluZyhjb25zdCBB
Y2Nlc3NDYXNlJiwgY29uc3QgQWNjZXNzQ2FzZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNz
Q2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7Ci0gICAgQWNjZXNzQ2FzZShB
Y2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsKLSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2Um
IG90aGVyKSA9IGRlZmF1bHQ7CisgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYgb3RoZXIpCisg
ICAgICAgIDogbV90eXBlKFdURk1vdmUob3RoZXIubV90eXBlKSkKKyAgICAgICAgLCBtX3N0YXRl
KFdURk1vdmUob3RoZXIubV9zdGF0ZSkpCisgICAgICAgICwgbV92aWFQcm94eShXVEZNb3ZlKG90
aGVyLm1fdmlhUHJveHkpKQorICAgICAgICAsIG1fb2Zmc2V0KFdURk1vdmUob3RoZXIubV9vZmZz
ZXQpKQorICAgICAgICAsIG1fc3RydWN0dXJlKFdURk1vdmUob3RoZXIubV9zdHJ1Y3R1cmUpKQor
ICAgICAgICAsIG1fY29uZGl0aW9uU2V0KFdURk1vdmUob3RoZXIubV9jb25kaXRpb25TZXQpKQor
ICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShvdGhlci5tX3BvbHlQcm90
b0FjY2Vzc0NoYWluKSkKKyAgICAgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShvdGhlci5tX2lk
ZW50aWZpZXIpKQorICAgIHsgfQorCisgICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBv
dGhlcikKKyAgICAgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICAgICAsIG1fc3RhdGUo
b3RoZXIubV9zdGF0ZSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KG90aGVyLm1fdmlhUHJveHkpCisg
ICAgICAgICwgbV9vZmZzZXQob3RoZXIubV9vZmZzZXQpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUo
b3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQob3RoZXIubV9jb25k
aXRpb25TZXQpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihvdGhlci5tX3BvbHlQ
cm90b0FjY2Vzc0NoYWluKQorICAgICAgICAsIG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZp
ZXIpCisgICAgeyB9CiAKICAgICBBY2Nlc3NDYXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNzQ2Fz
ZSYpID0gZGVsZXRlOwogICAgIHZvaWQgcmVzZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1vcmRp
YWw7IH0KQEAgLTI3NSw3ICszMTAsNyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2Ugb2YgaG93IEFjY2Vzc0Nhc2UgcHV0cyBwb3N0
LWdlbmVyYXRpb24gdGhpbmdzIGludG8gaXRzZWxmLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0NTYKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmPEFjY2Vzc0Nhc2U+
IGNsb25lKCkgY29uc3Q7CiAKICAgICAvLyBQZXJmb3JtIGFueSBhY3Rpb24gdGhhdCBtdXN0IGJl
IHBlcmZvcm1lZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXBvY2ggaW4gd2hpY2ggdGhlIGNhc2UK
ICAgICAvLyB3YXMgY3JlYXRlZC4gUmV0dXJucyBhIHNldCBvZiB3YXRjaHBvaW50IHNldHMgdGhh
dCB3aWxsIG5lZWQgdG8gYmUgd2F0Y2hlZC4KQEAgLTMxNSw2ICszNTAsMTgwIEBAIGNsYXNzIEFj
Y2Vzc0Nhc2UgewogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAor
Y2xhc3MgU2hhcmVhYmxlSklUU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMgSklUU3R1YlJvdXRp
bmUgeworcHVibGljOgorICAgIFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKFZNJiB2bSwgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlE
PiYmIHdlYWtSZWZlcmVuY2VzKQorICAgICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCisgICAg
ICAgICwgbV92bSh2bSkKKyAgICAgICAgLCBtX2tleXMoV1RGTW92ZShrZXlzKSkKKyAgICAgICAg
LCBtX3dlYWtSZWZlcmVuY2VzKFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gJm1fa2V5czsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVj
dHVyZUlEPiogd2Vha1JlZmVyZW5jZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV93ZWFrUmVm
ZXJlbmNlczsgfQorCisgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmluYWw7CisKK3By
aXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+
PiBtX2tleXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+IG1fd2Vha1JlZmVyZW5jZXM7
Cit9OworCitjbGFzcyBTaGFyZWRKSVRTdHViU2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRChTaGFyZWRKSVRTdHViU2V0KTsKK3B1YmxpYzoKKyAgICBTaGFyZWRKSVRTdHViU2V0KCkg
PSBkZWZhdWx0OworCisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiYga2V5cykKKyAgICB7CisgICAgICAgIEhhc2hlciBoYXNoZXI7
CisgICAgICAgIGZvciAoYXV0byYga2V5IDoga2V5cykKKyAgICAgICAgICAgIFdURjo6YWRkKGhh
c2hlciwga2V5LT5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAgICB9
CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0cnVjdCBLZXkgeworICAgICAgICAgICAg
S2V5KCkgPSBkZWZhdWx0OworCisgICAgICAgICAgICBLZXkoR1BSUmVnIGJhc2VHUFIsIEdQUlJl
ZyB2YWx1ZUdQUiwgR1BSUmVnIGV4dHJhR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMsIEpJVFN0dWJSb3V0aW5lKiB3cmFwcGVkKQorICAgICAgICAgICAg
ICAgIDogbV93cmFwcGVkKHdyYXBwZWQpCisgICAgICAgICAgICAgICAgLCBtX2Jhc2VHUFIoYmFz
ZUdQUikKKyAgICAgICAgICAgICAgICAsIG1fdmFsdWVHUFIodmFsdWVHUFIpCisgICAgICAgICAg
ICAgICAgLCBtX2V4dHJhR1BSKGV4dHJhR1BSKQorICAgICAgICAgICAgICAgICwgbV9zdHViSW5m
b0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2Vk
UmVnaXN0ZXJzKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAgICAgIEtleShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQoYml0d2lz
ZV9jYXN0PEpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpCisgICAg
ICAgICAgICB7IH0KKworICAgICAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nhc3Q8SklUU3R1YlJvdXRpbmUq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorCisgICAgICAgICAgICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBhLm1fd3JhcHBlZCA9PSBiLm1fd3JhcHBlZAorICAgICAg
ICAgICAgICAgICAgICAmJiBhLm1fYmFzZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAg
ICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAg
ICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAg
JiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9zdHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAg
ICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXkmIGEsIGNv
bnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dy
YXBwZWQgIT0gYi5tX3dyYXBwZWQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpJVFN0
dWJSb3V0aW5lKiBtX3dyYXBwZWQgeyBudWxscHRyIH07CisgICAgICAgICAgICBHUFJSZWcgbV9i
YXNlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fdmFsdWVHUFI7CisgICAgICAgICAgICBHUFJS
ZWcgbV9leHRyYUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAg
ICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAgICAgICB9OworCisgICAgICAg
IHVzaW5nIEtleVRyYWl0cyA9IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxLZXk+OworCisgICAgICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYgcCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFwLm1fd3JhcHBlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAg
ICAgIHJldHVybiBTaGFyZWRKSVRTdHViU2V0OjpoYXNoKCpwLm1fd3JhcHBlZC0+a2V5cygpKTsK
KyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29u
c3QgS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0cnVjdCBTZWFyY2hlciB7CisgICAg
ICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU2hhcmVkSklUU3R1YlNldDo6aGFzaChzZWFyY2hlci5tX2tleXMpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkg
YSwgY29uc3QgU2VhcmNoZXImIGIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV92
YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJh
R1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9H
UFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV91c2VkUmVn
aXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGF2ZWMgPSAqYS5tX3dyYXBwZWQtPmtleXMoKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYXV0byYgYnZlYyA9IGIubV9rZXlzOworICAgICAgICAgICAgICAgICAgICBpZiAoYXZl
Yy5zaXplKCkgIT0gYnZlYy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IGJ2ZWMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYXdlYWsgPSAqYS5tX3dy
YXBwZWQtPndlYWtSZWZlcmVuY2VzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGJ3ZWFrID0gYi5tX3dlYWtSZWZlcmVuY2VzOworICAgICAgICAgICAgICAgICAgICBpZiAoYXdl
YWsuc2l6ZSgpICE9IGJ3ZWFrLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9
IGF3ZWFrLnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGF3ZWFrW2ldICE9IGJ3ZWFrW2ldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jhc2VH
UFI7CisgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRyYUdQ
UjsKKyAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0IG1f
dXNlZFJlZ2lzdGVyczsKKyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+PiYgbV9rZXlzOworICAgICAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mIG1f
d2Vha1JlZmVyZW5jZXM7CisgICAgfTsKKworICAgIHN0cnVjdCBQb2ludGVyVHJhbnNsYXRvciB7
CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gU2hhcmVkSklUU3R1YlNldDo6aGFzaCgqc3R1Yi0+
a2V5cygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhh
c2g6OktleSBrZXksIEpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4ga2V5Lm1fd3JhcHBlZCA9PSBzdHViOworICAgICAgICB9CisgICAgfTsKKworICAg
IHZvaWQgYWRkKEhhc2g6OktleSYmIGtleSkKKyAgICB7CisgICAgICAgIG1fc3R1YnMuYWRkKGtl
eSk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmUoSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAg
eworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0dWJzLmZpbmQ8UG9pbnRlclRyYW5zbGF0b3I+KHN0
dWIpOworICAgICAgICBpZiAoaXRlciAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAgICAgICAgbV9z
dHVicy5yZW1vdmUoaXRlcik7CisgICAgfQorCisgICAgSklUU3R1YlJvdXRpbmUqIGZpbmQoY29u
c3QgU2VhcmNoZXImIHNlYXJjaGVyKQorICAgIHsKKyAgICAgICAgYXV0byBlbnRyeSA9IG1fc3R1
YnMuZmluZDxTaGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcj4oc2VhcmNoZXIp
OworICAgICAgICBpZiAoZW50cnkgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biBlbnRyeS0+bV93cmFwcGVkOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgSGFzaFNldDxIYXNoOjpLZXksIEhhc2gsIEhhc2g6OktleVRyYWl0cz4gbV9z
dHViczsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAppbmRleCBmYzk4ZjRlNDAwYjhmYzZjY2I4OGRm
MGNhYTRjNWE1NTUzNjc5Yzg0Li5iMjI2ZmIxNmY1ZGI3NDRmN2ZlNTU2YmVjNzU4ZDdjZWEwNGU0
YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCkBAIC0y
NDQsMTAgKzI0NCw4IEBAIHN0cnVjdCBCeVZhbEluZm8gewogICAgIHsKICAgICB9CiAKLSAgICB2
b2lkIHNldFVwKENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbm90SW5kZXhKdW1w
LCBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wLCBDb2RlTG9j
YXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRB
cnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0
aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKKyAgICB2b2lkIHNldFVwKENv
ZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXIs
IEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBDb2Rl
TG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQsIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQogICAgIHsKLSAgICAg
ICAgdGhpcy0+bm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOwotICAgICAgICB0aGlzLT5iYWRU
eXBlSnVtcCA9IGJhZFR5cGVKdW1wOwogICAgICAgICB0aGlzLT5leGNlcHRpb25IYW5kbGVyID0g
ZXhjZXB0aW9uSGFuZGxlcjsKICAgICAgICAgdGhpcy0+ZG9uZVRhcmdldCA9IGRvbmVUYXJnZXQ7
CiAgICAgICAgIHRoaXMtPmJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCA9IGJhZFR5cGVOZXh0SG90
UGF0aFRhcmdldDsKQEAgLTI2Miw4ICsyNjAsMjEgQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAKICAg
ICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsKIAotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4gbm90SW5kZXhKdW1wOwotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4gYmFkVHlwZUp1bXA7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dPcGVy
YXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1wVGFy
Z2V0KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJnZXQp
OyB9CisKKyAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsK
KworICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+IG1fbm90SW5kZXhKdW1wVGFyZ2V0OworICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpT
SW50ZXJuYWxQdHJUYWc+IG1fbm90SW5kZXhKdW1wOworICAgIH07CisgICAgdW5pb24geworICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gbV9iYWRUeXBlSnVt
cFRhcmdldDsKKyAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX2Jh
ZFR5cGVKdW1wOworICAgIH07CisKICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50
ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQ7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGEzNjllMTEwMDkxMGE3NmIzZTJkY2I4OGM3OTI1
MDZmYzAwNzRlNTQuLjYyZjczZGQ4OWVhZTU2NWI5ZWFiZmFiZTY4M2VlOTc3ZjllZDg5ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMCw2ICs0
MjAsMTEgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAg
ICByZXR1cm4gaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKworICAg
IGJvb2wgdXNlU2hhcmVkSUMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEpJVENvZGU6
OnVzZVNoYXJlZElDKGppdFR5cGUoKSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDBjM2M0
MTIxZDU4NjYyN2VhOTUwNDFiZjcxNzBkYzdjOWQ1MGFiYmEuLjRlYTBiOWNkY2M3MTYyZmU5M2Ji
Njc0OWMyODYwNzU2MzcxYTNiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1heUJl
TnVsbCh2bSwgb3duZXIsIGN1c3RvbVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNl
PiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBXYXRj
aHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRh
Zz4gY3VzdG9tR2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgc3RkOjpvcHRp
b25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKQEAgLTYxLDE4ICs2MSwxOCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBjdXN0b21TbG90QmFzZSwg
V1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZp
ZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFs
U2V0LCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKICAg
ICByZXN1bHQtPm1fZG9tQXR0cmlidXRlID0gZG9tQXR0cmlidXRlOwogICAgIHJlc3VsdC0+bV9j
dXN0b21BY2Nlc3NvciA9IGN1c3RvbUdldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29y
UHRyVGFnPihjdXN0b21HZXR0ZXIpIDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQsCitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
CiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluLCBib29sIHZp
YVByb3h5LCAKICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0
dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UpCiB7CiAgICAgQVNTRVJUKHR5cGUgPT0gU2V0
dGVyIHx8IHR5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21BY2Nlc3Nv
clNldHRlcik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJl
c3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZp
ZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBudWxscHRyLCBj
dXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVBy
b3h5LCBudWxscHRyLCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFp
bikpKTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21TZXR0ZXIgPyBGdW5j
dGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tU2V0dGVyKSA6IG51bGxwdHI7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTkxLDkgKzkxLDkgQEAgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShjb25zdCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
JiBvdGgKICAgICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmlidXRlOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUo
KSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkg
Y29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVz
dWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQg
PSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1
bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTM5LDYgKzEzOSw4
IEBAIHZvaWQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zCiAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
IGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5iYXNlUmVncygpKTsKICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOworICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIGFsbG9jYXRvci5sb2Nr
KHNjcmF0Y2hHUFIpOwogCiAgICAgR1BSUmVnIHBhcmFtQmFzZUdQUiA9IEludmFsaWRHUFJSZWc7
CkBAIC0yMjMsNiArMjI1LDExIEBAIHZvaWQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERP
TUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zCiAgICAgZm9yIChG
UFJSZWcgcmVnIDogZnBTY3JhdGNoKQogICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwu
c2V0KHJlZyk7CiAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckNDYWxsKCkpOworI2lmIENQVShBUk02NCkKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKKyAgICBpZiAoY29kZUJsb2Nr
LT51c2VTaGFyZWRJQygpKQorICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KEFS
TTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKIAogICAgIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1z
IHBhcmFtcyhzdGF0ZS5tX3ZtLCBXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdU
Rk1vdmUoZnBTY3JhdGNoKSk7CiAgICAgc25pcHBldC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIHBh
cmFtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuaAppbmRleCBhODQ4ODQ1OGY0YWJkMmFhZDJlYmFmNjJiMjhhMzNj
NDE4NjA0MDg3Li5jMzY3M2E0ZjE0YmYwNzg1NjYwYzU2NGI3ODMyYTVkYjQ0NmI3MjkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmgKQEAgLTUzLDE3ICs1MywxNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlIGZpbmFsIDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogCiAgICAgdm9pZCBlbWl0
RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IERPTUpJVDo6R2V0dGVy
U2V0dGVyKiwgR1BSUmVnIGJhc2VGb3JHZXRHUFIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVh
dGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosCiAgICAgICAgIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRk
aXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRl
ciwKICAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBzdGQ6Om9wdGlvbmFsPERPTUF0
dHJpYnV0ZUFubm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2Vs
bCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYs
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94eSA9IGZhbHNlLAog
ICAgICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0dGVyID0g
bnVsbHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7CiAKICAgICB2b2lk
IGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVm
PEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+R2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuY3BwCmluZGV4IDgzMmNkMGI4ZmFmZDk4ZDBiMjg1OTNjYmJiMDU3YmFlOTZm
YjMyMWEuLjIxOTQyYzQzNWJlZWMxNGMxNTg2Mzk1ZTNkNjQxMTM2ZTIyODg4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0yMTYs
NiArMjE2LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNjcmF0Y2hSZWdpc3Rl
cihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8uYmFzZVRhZ0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udmFsdWVUYWdHUFIp
OwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAg
R1BSUmVnIHNjcmF0Y2ggPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAgaWYg
KGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gSW52YWxpZEdQ
UlJlZzsKQEAgLTM3OSw4ICszODEsNTQgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2Vs
ZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKgogICAgIHJl
dHVybiBsaW5rZWRDb2RlSW5saW5lOwogfQogCi12b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiB0YXJnZXQpCiB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkg
eworICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgYXV0byBqdW1wID0gaml0Lmp1
bXAoKTsKKworICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9i
b2R5IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KKyAgICBib29s
IG5lZWRzQnJhbmNoQ29tcGFjdGlvbiA9IGZhbHNlOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZl
cihqaXQsIHN0dWJJbmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUo
KSwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1
Y2NlZWQsIG5lZWRzQnJhbmNoQ29tcGFjdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1
ZmZlci5pc1ZhbGlkKCkpOworICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQpOworCisg
ICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlu
a2luZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkK
K3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIC8vIElmIGl0
IGlzIG5vdCBHZXRCeUlkLWxpa2UtdGhpbmcsIHdlIGRvIG5vdCBlbWl0IG5vcCBzbGVkIChlLmcu
IEdldEJ5VmFsKS4KKyAgICAgICAgLy8gVGhlIGNvZGUgaXMgYWxyZWFkeSBhbiBpbmRpcmVjdCBq
dW1wLCBhbmQgb25seSB0aGluZyB3ZSBzaG91bGQgZG8gaXMgcmVwbGFjaW5nIG1fY29kZVB0ci4K
KyAgICAgICAgaWYgKHN0dWJJbmZvLmhhc0NvbnN0YW50SWRlbnRpZmllcikgeworICAgICAgICAg
ICAgLy8gSWYgbV9jb2RlUHRyIGlzIHBvaW50aW5nIHRvIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbiwgdGhpcyBtZWFucyB0aGF0IElubGluZUFjY2VzcyBjb2RlIGlzIG5vdCBhIHN0dWIg
b25lLgorICAgICAgICAgICAgLy8gV2UgcmV3cml0ZSB0aGlzIHdpdGggdGhlIHN0dWItYmFzZWQg
ZGlzcGF0Y2hpbmcgY29kZSBvbmNlLCBhbmQgY29udGludWUgdXNpbmcgaXQgdW50aWwgd2UgcmVz
ZXQgdGhlIGNvZGUuCisgICAgICAgICAgICBpZiAoc3R1YkluZm8ubV9jb2RlUHRyLmV4ZWN1dGFi
bGVBZGRyZXNzKCkgPT0gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZzdHViSW5mbyks
IHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgIGppdC5jYWxsKENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAg
ICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKworICAgICAgICAgICAgICAgIGJvb2wgbmVl
ZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRp
b25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisKKyAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uZG9uZUxvY2F0aW9uKTsKKworICAgICAgICAg
ICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6
IGxpbmtpbmcgc3R1YiBjYWxsIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
c3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CkBAIC0z
OTQsNiArNDQyLDI2IEBAIHZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiCiAgICAgRklOQUxJWkVfQ09E
RShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBq
dW1wIik7CiB9CiAKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKKworICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisKKyAgICAvLyBXZSBkb24n
dCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBp
bnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24g
PSBmYWxzZTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwg
aml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6
OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBh
Y3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKyAgICBs
aW5rQnVmZmVyLmxpbmsoanVtcCwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKwor
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJbmxpbmVBY2Nlc3M6IGxp
bmtpbmcgY29uc3RhbnQganVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHVi
QXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICByZXdpcmVTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1Bh
dGhTdGFydExvY2F0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUFjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vz
cy5oCmluZGV4IGY0OWIzNWI4ZjIyNjQwNmM3ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQuLmViNzZm
ZjM5NmQyODhlY2RiZTNhZjEwMTdmMzI0M2FhYTc0NDBhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKQEAgLTEwNCwxMCArMTA0LDE0IEBAIGNs
YXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVBcnJheUxlbmd0
aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMgYm9vbCBpc0NhY2hl
YWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdl
bmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7Ci0gICAgc3Rh
dGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVT
ZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMg
Ym9vbCBnZW5lcmF0ZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCisgICAgc3Rh
dGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90
VXNpbmdJbmxpbmVDb2RlKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3Rh
dGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mKTsKKwogICAgIC8vIFRoaXMgaXMgaGVscGZ1bCB3aGVuIGRldGVybWluaW5nIHRoZSBz
aXplIG9mIGFuIElDIG9uCiAgICAgLy8gdmFyaW91cyBwbGF0Zm9ybXMuIFdoZW4gYWRkaW5nIGEg
bmV3IHR5cGUgb2YgSUMsIGltcGxlbWVudAogICAgIC8vIGl0cyBwbGFjZWhvbGRlciBjb2RlIGhl
cmUsIGFuZCBsb2cgdGhlIHNpemUuIFRoYXQgd2F5IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAppbmRleCAyMWYy
NDUzYmFjN2FmYWU3NzI0MWNiMDRhMjVkMjBmZGQ5OTNiYzM0Li45OTQ5MDhkNjhiNjJiYmUwNmUw
OWFhMGIzN2U3N2MxMTBjNjY5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKQEAgLTMyLDExICszMiwxMSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCitSZWY8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vz
c0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNPYmplY3QqIHByb3RvdHlwZSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBwcm90b3R5
cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIGFjY2Vzc1R5cGUsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBwcm90b3R5cGUpKTsK
IH0KIAogdm9pZCBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6ZHVtcEltcGwoUHJpbnRTdHJlYW0mIG91
dCwgQ29tbWFQcmludGVyJiBjb21tYSkgY29uc3QKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJbnN0
YW5jZU9mQWNjZXNzQ2FzZTo6ZHVtcEltcGwoUHJpbnRTdHJlYW0mIG91dCwgQ29tbWFQcmludGVy
JiBjb21tYSkgY29uc3QKICAgICBvdXQucHJpbnQoY29tbWEsICJwcm90b3R5cGUgPSAiLCBKU1Zh
bHVlKHByb3RvdHlwZSgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0
YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNl
T2ZBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKCp0aGlzKSk7
CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKCp0
aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nl
c3NDYXNlLmgKaW5kZXggNjllMmIzMWFhOTRhNTlkMzBkZmI0Y2FmMjI0NDk5ZDYwMjc3ODQ3Yy4u
YWQ3MWU2OTQyZjQ0OTJmYThhYmRlYWFjN2VhMGZjNDZiNzA3OWU3YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKQEAg
LTM0LDE1ICszNCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEluc3RhbmNlT2ZBY2Nlc3ND
YXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2UgewogcHVibGljOgogICAgIHVzaW5nIEJhc2Ug
PSBBY2Nlc3NDYXNlOworICAgIGZyaWVuZCBjbGFzcyBBY2Nlc3NDYXNlOwogICAgIAotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8
QWNjZXNzQ2FzZT4gY3JlYXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIFN0
cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwKICAgICAgICAgSlNP
YmplY3QqIHByb3RvdHlwZSk7CiAgICAgCiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBkdW1wSW1wbChQ
cmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIH5JbnN0YW5jZU9mQWNjZXNzQ2FzZSgp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50
cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggNjMwMWRjMjMzNjkzM2Q2NzZj
M2JlOWU5MGM2MDE4OWExMzE3MzgxNy4uMzRiMWE4MDI3ODg5NWY3MWFiZmU2ODI5NjljZGU0MzBm
MzJlN2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtMzksMTggKzM5LDE4IEBAIElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAgbV9pbnRyaW5zaWNGdW5jdGlvbi5zZXQodm0sIG93
bmVyLCBpbnRyaW5zaWNGdW5jdGlvbik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBj
b25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4g
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRy
aW5zaWNGdW5jdGlvbiwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRl
bnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rp
b24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKIEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6On5JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkg
Y29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgp
IGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+
IHJlc3VsdChuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7
CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZS5oCmluZGV4IDYyODcwMDQxNTg3MzFkNWI4ZmViNTA2MzUzZGU1NTliNjQ0NzY0
NDYuLjQ3YWYxYTJiZjFkZDZjYjkxMzYyNjMyMTAxOTNiNDdhM2ZmMmFiNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlIGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2UgewogICAgIHN0YXRpYyBib29sIGNhbkVtaXRJ
bnRyaW5zaWNHZXR0ZXIoSlNGdW5jdGlvbiosIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZW1pdElu
dHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmKTsKIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUo
Vk0mLCBKU0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0
dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRy
aW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxB
Y2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IDI5NTZkZDBj
ZDVkMGVhZTYxYTA4ZTNkYzc2NWJmNzQzNDQxYzVmOGQuLmMyOWMxZGRmYWY0ODE1NTY2MTUxNzA4
NWE4OGUxOWEwNzNhYmU3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKQEAgLTQ1LDE4ICs0
NSwxOCBAQCBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3ND
YXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1fbW9kdWxlRW52aXJvbm1lbnQu
c2V0KHZtLCBvd25lciwgbW9kdWxlRW52aXJvbm1lbnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBt
b2R1bGVFbnZpcm9ubWVudCwgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQpCitSZWY8QWNjZXNzQ2Fz
ZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCogbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZp
cm9ubWVudCwgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIGlkZW50aWZpZXIsIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQs
IHNjb3BlT2Zmc2V0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwg
bW9kdWxlRW52aXJvbm1lbnQsIHNjb3BlT2Zmc2V0KSk7CiB9CiAKIE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2U6On5Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29u
c3QKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNv
bnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+IHJl
c3VsdChuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVz
dWx0ID0gYWRvcHRSZWYoKm5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CiAg
ICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3ND
YXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZS5oCmluZGV4IDkyYTBiOGEzNWI1NDcxNjI0MTMwZDY1MDY1M2QwNWJmNWQ3OTMzNzcu
LmQ0Mzk1MGJmMDYzMTM3Y2Y3NzNiODRjNGFhZTQ5NDRiMDRjOWEzYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuaApAQCAtNDQsOSArNDQsOSBAQCBjbGFzcyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
IGZpbmFsIDogcHVibGljIEFjY2Vzc0Nhc2UgewogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1v
ZHVsZUVudmlyb25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQo
KTsgfQogICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZU9mZnNldDsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBTY29wZU9mZnNldCk7CisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQq
LCBTY29wZU9mZnNldCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUo
KSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsK
IAogICAgIHZvaWQgZW1pdChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QmIGZhbGxUaHJvdWdoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAppbmRleCAzZDIz
M2ZhZDEzMzkyZGUwMmJmM2IzYzk3ZmQwNjQ3ZjBkMWFhZmYzLi5iZTczZmRiNWU1YTdhOWZmMWI3
NTI3MjAyNTI5M2NiNjJhNTg0NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTg5LDYgKzkwLDMyIEBAIGNsYXNzIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbV9kYXRhLT5tX3Zl
Y3Rvci5lbmQoKTsKICAgICB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEhhc2hlciBoYXNoZXI7CisgICAgICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogKnRo
aXMpCisgICAgICAgICAgICBhZGQoaGFzaGVyLCBjb25kaXRpb24uaGFzaCgpKTsKKyAgICAgICAg
cmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhzLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsKKyAgICAgICAgaWYgKGxocy5zaXplKCkgIT0g
cmhzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byBsaXRl
ciA9IGxocy5iZWdpbigpOworICAgICAgICBhdXRvIHJpdGVyID0gcmhzLmJlZ2luKCk7CisgICAg
ICAgIGZvciAoOyBsaXRlciAhPSBsaHMuZW5kKCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAg
ICAgICAgIGlmICghKCpsaXRlciA9PSAqcml0ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmcmll
bmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBsaHMs
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiByaHMpCisgICAgeworICAgICAgICBy
ZXR1cm4gIShsaHMgPT0gcmhzKTsKKyAgICB9CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gZm9yT2JqZWN0KEpTT2JqZWN0KikgY29uc3Q7CiAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gZm9yQ29uZGl0aW9uS2luZChQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcAppbmRleCAwM2EyZjY3MWY3NDQ2ZTRhY2FkY2Q3NGI5Yzg3ZTg5YTdkMDlhMDE1Li5iZDBh
MjFmY2U3MGE2ZDc4YTgyMzVhODM3YmJiZTMyMGVjODJiYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTU5LDEw
ICs1OSw5IEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICBvdXQucHJpbnQoIjoiLCBtX2NvZGUpOwogfQogCi12b2lkIEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24mIGNvbmRpdGlvbikKK3ZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0
YWxsV2F0Y2hwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mIGNvbmRpdGlvbikKIHsKLSAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1Yklu
Zm86OmVuc3VyZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KAotICAgICAgICB3YXRjaHBv
aW50cywgaml0LT5jb2RlQmxvY2soKSwgc3R1YkluZm8sIGNvbmRpdGlvbik7CisgICAgV2F0Y2hw
b2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hw
b2ludCh3YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgY29uZGl0aW9uKTsKIH0KIAog
dm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkKQEAgLTczLDcgKzcy
LDEwIEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCiB2b2lk
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6c3VjY2VlZCgpCiB7CiAgICAgcmVzdG9yZVNjcmF0Y2go
KTsKLSAgICBzdWNjZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CisgICAgaWYgKGppdC0+Y29kZUJs
b2NrKCktPnVzZVNoYXJlZElDKCkpCisgICAgICAgIGppdC0+cmV0KCk7CisgICAgZWxzZQorICAg
ICAgICBzdWNjZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CiB9CiAKIGNvbnN0IFJlZ2lzdGVyU2V0
JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmxpdmVSZWdpc3RlcnNGb3JDYWxsKCkKQEAgLTEyNiwx
MCArMTI4LDExIEBAIGF1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdp
c3RlcnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNlCiAgICAgfTsKIH0KIAotYXV0byBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxs
V2l0aG91dEV4Y2VwdGlvbnMoKSAtPiBTcGlsbFN0YXRlCithdXRvIEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9u
cyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEpIC0+IFNwaWxsU3RhdGUKIHsKICAgICBSZWdpc3Rl
clNldCBsaXZlUmVnaXN0ZXJzID0gYWxsb2NhdG9yLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgbGl2
ZVJlZ2lzdGVycy5leGNsdWRlKGNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgbGl2ZVJlZ2lz
dGVycy5tZXJnZShleHRyYSk7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQgZXh0cmFTdGFja1Bh
ZGRpbmcgPSAwOwogICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbiA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbCgqaml0LCBsaXZlUmVnaXN0ZXJzLCBleHRyYVN0YWNrUGFkZGluZyk7
CkBAIC0yNTIsNyArMjU1LDcgQEAgUG9seW1vcnBoaWNBY2Nlc3M6On5Qb2x5bW9ycGhpY0FjY2Vz
cygpIHsgfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRD
YXNlcygKICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLAotICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2FzZXNUb0Fk
ZCkKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQp
CiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAg
IApAQCAtMjY4LDkgKzI3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNB
Y2Nlc3M6OmFkZENhc2VzKAogICAgIC8vICAgYWRkIG1vcmUgdGhpbmdzIGFmdGVyIGZhaWx1cmUu
CiAgICAgCiAgICAgLy8gRmlyc3QgZW5zdXJlIHRoYXQgdGhlIG9yaWdpbmFsQ2FzZXNUb0FkZCBk
b2Vzbid0IGNvbnRhaW4gZHVwbGljYXRlcy4KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGNh
c2VzVG9BZGQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdpbmFsQ2FzZXNUb0Fk
ZC5zaXplKCk7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbXlD
YXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOworICAgICAgICBhdXRvIG15Q2Fz
ZSA9IFdURk1vdmUob3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKIAogICAgICAgICAvLyBBZGQgaXQg
b25seSBpZiBpdCBpcyBub3QgcmVwbGFjZWQgYnkgdGhlIHN1YnNlcXVlbnQgY2FzZXMgaW4gdGhl
IGxpc3QuCiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTM0Niw5ICszNDksOSBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKIH0KIAog
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSgKLSAgICBj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tl
ciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIFJlZjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCiB7Ci0gICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CisgICAgVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CiAgICAgbmV3QWNjZXNzZXMuYXBwZW5k
KFdURk1vdmUobmV3QWNjZXNzKSk7CiAgICAgcmV0dXJuIGFkZENhc2VzKGxvY2tlciwgdm0sIGNv
ZGVCbG9jaywgc3R1YkluZm8sIFdURk1vdmUobmV3QWNjZXNzZXMpKTsKIH0KQEAgLTM1OSw5ICsz
NjIsMTUgQEAgYm9vbCBQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRXZWFrKFZNJiB2bSkgY29uc3QK
ICAgICAgICAgaWYgKCFhdChpKS52aXNpdFdlYWsodm0pKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICBmb3IgKGNvbnN0IFdyaXRlQmFycmllcjxKU0NlbGw+JiB3ZWFrUmVm
ZXJlbmNlIDogbV93ZWFrUmVmZXJlbmNlcykgewotICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJr
ZWQod2Vha1JlZmVyZW5jZS5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1fc3R1YlJvdXRpbmUpIHsKKyAgICAgICAgYXV0byogd2Vha1JlZmVyZW5jZXMgPSBtX3N0
dWJSb3V0aW5lLT53ZWFrUmVmZXJlbmNlcygpOworICAgICAgICBpZiAod2Vha1JlZmVyZW5jZXMp
IHsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlSUQgd2Vha1JlZmVyZW5jZSA6ICp3ZWFrUmVm
ZXJlbmNlcykgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uZ2V0
U3RydWN0dXJlKHdlYWtSZWZlcmVuY2UpOworICAgICAgICAgICAgICAgIGlmICghdm0uaGVhcC5p
c01hcmtlZChzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00
NDAsNyArNDQ5LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6
cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICB1bnNpZ25lZCBzcmNJ
bmRleCA9IDA7CiAgICAgdW5zaWduZWQgZHN0SW5kZXggPSAwOwogICAgIHdoaWxlIChzcmNJbmRl
eCA8IG1fbGlzdC5zaXplKCkpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10pOworICAgICAgICBSZWZQdHI8
QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBJZiB0aGUgY2FzZSBoYWQgYmVlbiBnZW5lcmF0ZWQsIHRoZW4gd2Ug
aGF2ZSB0byBrZWVwIHRoZSBvcmlnaW5hbCBpbiBtX2xpc3QgaW4gY2FzZSB3ZQogICAgICAgICAv
LyBmYWlsIHRvIHJlZ2VuZXJhdGUuIFRoYXQgY2FzZSBtYXkgaGF2ZSBkYXRhIHN0cnVjdHVyZXMg
dGhhdCBhcmUgdXNlZCBieSB0aGUgY29kZSB0aGF0IGl0CkBAIC00OTEsNiArNTAwLDggQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2MKICAgICBpZiAoc3R1YkluZm8udi50aGlzVGFnR1BSICE9IElu
dmFsaWRHUFJSZWcpCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnYudGhpc1RhZ0dQ
Uik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BS
UmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKIAog
ICAgIHN0YXRlLnNjcmF0Y2hHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAK
QEAgLTUwMCwxMiArNTExLDYgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0Fj
Y2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIENDYWxsSGVscGVycyBqaXQoY29k
ZUJsb2NrKTsKLSAgICBzdGF0ZS5qaXQgPSAmaml0OwotCi0gICAgc3RhdGUucHJlc2VydmVkUmV1
c2VkUmVnaXN0ZXJTdGF0ZSA9Ci0gICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lz
dGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1Nw
YWNlOjpOb0V4dHJhU3BhY2UpOwogCiAgICAgYm9vbCBnZW5lcmF0ZWRGaW5hbENvZGUgPSBmYWxz
ZTsKIApAQCAtNTIxLDEyICs1MjYsMzAgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKIAogICAg
IGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
KCJPcHRpbWl6ZWQgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7Ci0gICAgCisKKyAg
ICBib29sIGRvZXNDYWxscyA9IGZhbHNlOworICAgIGJvb2wgZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHMgPSBmYWxzZTsKKyAgICBib29sIGNhbkJlU2hhcmVkID0gdHJ1ZTsKKyAgICBWZWN0b3I8SlND
ZWxsKj4gY2VsbHNUb01hcms7CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBr
ZXlzKGNhc2VzLnNpemUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0
byYgZW50cnkgOiBjYXNlcykgeworICAgICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxs
cyh2bSwgJmNlbGxzVG9NYXJrKTsKKyAgICAgICAgaWYgKGVudHJ5LT50eXBlKCkgPT0gQWNjZXNz
Q2FzZTo6R2V0dGVyIHx8IGVudHJ5LT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQorICAg
ICAgICAgICAgZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSB0cnVlOworICAgICAgICBrZXlzW2lu
ZGV4XSA9IGVudHJ5OworICAgICAgICArK2luZGV4OworICAgIH0KKyAgICBzdGF0ZS5tX2RvZXND
YWxscyA9IGRvZXNDYWxsczsKKyAgICBzdGF0ZS5tX2RvZXNKU0dldHRlclNldHRlckNhbGxzID0g
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHM7CisgICAgLy8gR2V0dGVyIC8gU2V0dGVyIHJlbGllcyBv
biBzdGFjay1wb2ludGVyIGFkanVzdG1lbnQsIHdoaWNoIGlzIHRpZWQgdG8gdGhlIGxpbmtlZCBD
b2RlQmxvY2ssIHdoaWNoIG1ha2VzIHRoaXMgY29kZSB1bnNoYXJlYWJsZS4KKyAgICBpZiAoZG9l
c0pTR2V0dGVyU2V0dGVyQ2FsbHMpCisgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisKICAg
ICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycgY29udGFpbnMg
dGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQogICAgIC8vIHdvbid0IGNo
YW5nZSB0aGF0IHNldCBhbnltb3JlLgogICAgIAogICAgIGJvb2wgYWxsR3VhcmRlZEJ5U3RydWN0
dXJlQ2hlY2sgPSB0cnVlOwotICAgIGJvb2wgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsID0gZmFsc2U7
CiAgICAgYm9vbCBuZWVkc0ludDMyUHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVl
ZHNTdHJpbmdQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N5bWJvbFByb3Bl
cnR5Q2hlY2sgPSBmYWxzZTsKQEAgLTU0MiwxMCArNTY1LDQ4IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9jCiAgICAgICAgIH0KICAgICAgICAgY29tbWl0KGxvY2tlciwgdm0sIHN0YXRlLndhdGNo
cG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCAqbmV3Q2FzZSk7CiAgICAgICAgIGFsbEd1YXJk
ZWRCeVN0cnVjdHVyZUNoZWNrICY9IG5ld0Nhc2UtPmd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrKHN0
dWJJbmZvKTsKLSAgICAgICAgaWYgKG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0
ZXIgfHwgbmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRlcikKLSAgICAgICAgICAg
IGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IHRydWU7CisgICAgICAgIGlmIChuZXdDYXNlLT51c2Vz
UG9seVByb3RvKCkpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworICAgIH0KKyAg
ICBpZiAobmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzU3RyaW5nUHJvcGVydHlDaGVj
ayB8fCBuZWVkc0ludDMyUHJvcGVydHlDaGVjaykKKyAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxz
ZTsKKworICAgIGF1dG8gZmluaXNoQ29kZUdlbmVyYXRpb24gPSBbJl0oUmVmUHRyPEpJVFN0dWJS
b3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9zdHViUm91dGluZSA9IFdURk1vdmUoc3R1Yik7
CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAg
ICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAg
ICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSwgIlxuIik7CisK
KyAgICAgICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtU
b0ZpdCgpOworCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2lu
ZDsKKyAgICAgICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFu
dExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2lu
ZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6Okdl
bmVyYXRlZE5ld0NvZGU7CisKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQo
cmVzdWx0S2luZCwgbV9zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfTsKKworICAg
IENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKKyAgICBzdGF0ZS5qaXQgPSAmaml0OworCisg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoc3RhdGUubV9k
b2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBubyBndWFy
YW50ZWUgdGhhdCBzdGFjay1wb2ludGVyIGlzIHRoZSBleHBlY3RlZCBvbmUuIFRoaXMgaXMgbm90
IGEgcHJvYmxlbSBpZiB3ZSBhcmUgbm90IGhhdmluZyBKUyBnZXR0ZXIgLyBzZXR0ZXIgY2FsbHMg
c2luY2Ugc3RhY2stcG9pbnRlciBpcworICAgICAgICAgICAgLy8gY2FsbGVlLXNhdmUgcmVnaXN0
ZXIgYW5kIGl0IGlzIGtlcHQgYmV5b25kIGNhbGxzLiBIb3dldmVyLCBvdXIgSlMgZXhlY3V0YWJs
ZSBjYWxsIGRvZXMgbm90IHNhdmUgc3RhY2stcG9pbnRlci4gU28gd2UgYXJlIGFkanVzdGluZyBz
dGFjay1wb2ludGVyIGFmdGVyCisgICAgICAgICAgICAvLyBKUyBnZXR0ZXIgLyBzZXR0ZXIgY2Fs
bHMuIEJ1dCB0aGlzIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBpbml0aWFsIHN0YWNrLXBv
aW50ZXIsIGFuZCBtYWtlcyBQQUMgdGFnZ2luZyBicm9rZW4uCisgICAgICAgICAgICAvLyBUbyBl
bnN1cmUgUEFDLXRhZ2dpbmcgd29yaywgd2UgZmlyc3QgYWRqdXN0IHN0YWNrLXBvaW50ZXIgdG8g
dGhlIGFwcHJvcHJpYXRlIG9uZS4KKyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihS
ZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAg
fQogCisgICAgc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZSA9CisgICAgICAgIGFs
bG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOworICAgIAogICAg
IGlmIChjYXNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyBzdXBlciB1bmxpa2Vs
eSwgYnV0IHdlIG1ha2UgaXQgbGVnYWwgYW55d2F5LgogICAgICAgICBzdGF0ZS5mYWlsQW5kUmVw
YXRjaC5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC02OTAsNyArNzUxLDcgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25j
dXJyZW50SlNMb2MKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25I
YW5kbGVycyA9IG51bGxwdHI7CiAgICAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nOwotICAgIGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJl
Z2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsKSB7CisgICAgaWYg
KHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBkb2VzSlNHZXR0
ZXJTZXR0ZXJDYWxscykgewogICAgICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24gaGFuZGxlci4K
ICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSB3aGVuIGRv
aW5nIGdlbmVyaWNVbndpbmQgZnJvbSBhIHB1cmUgSlMgZ2V0dGVyL3NldHRlciAuCiAgICAgICAg
IC8vIE5vdGUgYWxzbyB0aGF0IHRoaXMgaXMgbm90IHJlYWNoYWJsZSBmcm9tIGN1c3RvbSBnZXR0
ZXIvc2V0dGVyLiBDdXN0b20gZ2V0dGVyL3NldHRlcnMgd2lsbCBoYXZlIApAQCAtNzMwLDYgKzc5
MSwzMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVy
YXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICBjYWxsU2l0ZUluZGV4Rm9y
RXhjZXB0aW9uSGFuZGxpbmcgPSBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxp
bmcoKTsKICAgICB9CiAKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAg
ICAgIGZhaWx1cmUubGluaygmaml0KTsKKyAgICAgICAgLy8gSW4gQVJNNjQsIHdlIGRvIG5vdCBw
dXNoIGFueXRoaW5nIG9uIHN0YWNrIHNwZWNpYWxseS4KKyAgICAgICAgLy8gU28gd2UgY2FuIGp1
c3QganVtcCB0byB0aGUgc2xvdy1wYXRoIGV2ZW4gdGhvdWdoIHRoaXMgdGh1bmsgaXMgY2FsbGVk
IChub3QganVtcGVkKS4KKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0YWlsIGNhbGwgdG8g
dGhlIHRodW5rIHdoaWNoIGNhbGxzIHRoZSBzbG93IHBhdGggZnVuY3Rpb24uCisgICAgICAgIC8v
IEFuZCB3ZSBzaG91bGQgZWxpbWluYXRlIElDIHNsb3ctcGF0aCBnZW5lcmF0aW9uIGluIEJhc2Vs
aW5lSklULgorICAgICAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhTdGFy
dExvY2F0aW9uKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfQorCisgICAgUmVmUHRy
PEpJVFN0dWJSb3V0aW5lPiBzdHViOworICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiB3ZWFr
UmVmZXJlbmNlcyhXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7CisgICAgaWYgKGNvZGVC
bG9jay0+dXNlU2hhcmVkSUMoKSAmJiBjYW5CZVNoYXJlZCkgeworICAgICAgICBTaGFyZWRKSVRT
dHViU2V0OjpTZWFyY2hlciBzZWFyY2hlciB7CisgICAgICAgICAgICBzdHViSW5mby5iYXNlR1BS
LAorICAgICAgICAgICAgc3R1YkluZm8udmFsdWVHUFIsCisgICAgICAgICAgICBzdHViSW5mby5y
ZWdzLnRoaXNHUFIsCisgICAgICAgICAgICBzdHViSW5mby5tX3N0dWJJbmZvR1BSLAorICAgICAg
ICAgICAgc3R1YkluZm8udXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIGtleXMsCisgICAgICAg
ICAgICB3ZWFrUmVmZXJlbmNlcywKKyAgICAgICAgfTsKKyAgICAgICAgc3R1YiA9IHZtLm1fc2hh
cmVkSklUU3R1YnMtPmZpbmQoc2VhcmNoZXIpOworICAgICAgICBpZiAoc3R1YikKKyAgICAgICAg
ICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKKyAgICB9CisK
ICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5r
QnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgaWYgKFBvbHltb3JwaGljQWNj
ZXNzSW50ZXJuYWw6OnZlcmJvc2UpCkBAIC03MzksOSArODI2LDEyIEBAIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9jCiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzdWNj
ZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAKLSAgICBsaW5rQnVmZmVyLmxpbmso
c3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAgIGxpbmtCdWZmZXIubGluayhmYWls
dXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxvY2st
PnVzZVNoYXJlZElDKCkpCisgICAgICAgIEFTU0VSVChzdGF0ZS5zdWNjZXNzLmVtcHR5KCkpOwor
ICAgIGVsc2UgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vz
c0xhYmVsKTsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbik7CisgICAgfQogICAgIAogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vz
c0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKEZ1bGxDb2RlT3JpZ2luKGNvZGVC
bG9jaywgc3R1YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMgYWNj
ZXNzIHN0dWIgZm9yICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CkBAIC03NDksMjkgKzgzOSwx
NSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4gY29kZSA9IEZJTkFMSVpFX0NPREVfRk9SKAogICAgICAgICBj
b2RlQmxvY2ssIGxpbmtCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiJXMi
LCB0b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZvciAiLCAqY29kZUJsb2NrLCAiICIsIHN0dWJJbmZv
LmNvZGVPcmlnaW4sICIgd2l0aCByZXR1cm4gcG9pbnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAiLCBs
aXN0RHVtcChjYXNlcykpLmRhdGEoKSk7Ci0KLSAgICBib29sIGRvZXNDYWxscyA9IGZhbHNlOwot
ICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDog
Y2FzZXMpCi0gICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNU
b01hcmspOwotICAgIAotICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShj
b2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRl
Lm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNh
bGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7Ci0gICAgbV93YXRjaHBvaW50cyA9IFdU
Rk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwotICAgIGlmICghc3RhdGUud2Vha1JlZmVyZW5jZXMu
aXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVC
YXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKLSAgICBpZiAo
UG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiUmV0
dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCi0gICAgbV9saXN0ID0gV1RGTW92
ZShjYXNlcyk7Ci0gICAgbV9saXN0LnNocmlua1RvRml0KCk7Ci0gICAgCi0gICAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5kOwotICAgIGlmIChtX2xpc3Quc2l6ZSgpID49
IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29k
ZSkKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRl
ZEZpbmFsQ29kZTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOwotICAgIAotICAgIHJldHVybiBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIGNvZGUuY29kZSgpKTsKKyAgICBzdHViID0gY3JlYXRl
SUNKSVRTdHViUm91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVu
Y2VzKSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0
ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBj
YWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworCisgICAgaWYgKGNvZGVCbG9jay0+
dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpCisgICAgICAgICAgICB2
bS5tX3NoYXJlZEpJVFN0dWJzLT5hZGQoU2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5KHN0dWJJ
bmZvLmJhc2VHUFIsIHN0dWJJbmZvLnZhbHVlR1BSLCBzdHViSW5mby5yZWdzLnRoaXNHUFIsIHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsIHN0dWIuZ2V0KCkp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHVi
KSk7CiB9CiAKIHZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCAy
OTIwMzI2ZGNjOTE1NDc0YjNmMWVlYjdmNzI1ZTZhYjM0YWVjYjQxLi40NTliYjBiZmFjNTdlZGUy
YjFjNDM1YTBiZmU3ZDE2OTc0N2ZkOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMTQxLDEwICsxNDEsMTAgQEAgY2xh
c3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIC8vIFdoZW4gdGhpcyBmYWlscyAocmV0dXJucyBH
YXZlVXApLCB0aGlzIHdpbGwgbGVhdmUgdGhlIG9sZCBzdHViIGludGFjdCBidXQgeW91IHNob3Vs
ZCBub3QgdHJ5CiAgICAgLy8gdG8gY2FsbCB0aGlzIG1ldGhvZCBhZ2FpbiBmb3IgdGhhdCBQb2x5
bW9ycGhpY0FjY2VzcyBpbnN0YW5jZS4KICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENh
c2VzKAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiwgMj4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
PiwgMj4pOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlKAotICAgICAgICBj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAgY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIFJlZjxBY2Nlc3NDYXNlPik7CiAgICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCByZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAg
ICAKQEAgLTE3OSw3ICsxNzksNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgZnJp
ZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTsKICAgICAKLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4sIDI+IExpc3RUeXBlOworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwg
Mj4gTGlzdFR5cGU7CiAgICAgCiAgICAgdm9pZCBjb21taXQoCiAgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbz4mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsCkBAIC0x
ODgsNyArMTg4LDYgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIExpc3RUeXBlIG1f
bGlzdDsKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IG1fc3R1YlJvdXRpbmU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gbV93YXRjaHBvaW50
czsKLSAgICBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gbV93ZWFrUmVmZXJlbmNl
czsKIH07CiAKIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewpAQCAtMTk2LDYgKzE5NSw4
IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICA6IG1fdm0odm0pIAog
ICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAgICAgLCBtX2VjbWFN
b2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMoZmFsc2Up
CisgICAgICAgICwgbV9kb2VzQ2FsbHMoZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkUmVn
aXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKGZhbHNlKQogICAgICAgICAsIG1fbmVl
ZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2VwdGlvbihmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1
bGF0ZWRDYWxsU2l0ZUluZGV4KGZhbHNlKQpAQCAtMjIzLDEwICsyMjQsMTIgQEAgc3RydWN0IEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgeyBJbnZhbGlkRlBS
UmVnIH07CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZSB7IEVDTUFNb2RlOjpzbG9wcHkoKSB9Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IHdhdGNo
cG9pbnRzOwotICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4gd2Vha1JlZmVyZW5jZXM7
CisgICAgVmVjdG9yPFN0cnVjdHVyZUlEPiB3ZWFrUmVmZXJlbmNlczsKICAgICBCYWc8Q2FsbExp
bmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CisgICAgYm9vbCBtX2RvZXNKU0dldHRlclNldHRlckNh
bGxzIDogMTsKKyAgICBib29sIG1fZG9lc0NhbGxzIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdh
dGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3Rh
bGxXYXRjaHBvaW50KENvZGVCbG9jayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7
CiAKICAgICB2b2lkIHJlc3RvcmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0y
NDgsNyArMjUxLDcgQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFu
ZGxpbmcoKTsKIAogICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGwoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHBy
ZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAg
ICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4
Y2VwdGlvbnMoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVz
dG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25z
dCBTcGlsbFN0YXRlJik7CiAgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0Zv
ckNhbGwoY29uc3QgU3BpbGxTdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9
IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKaW5kZXggY2MyOTczYzk0ZTExNjJhMzg5ZTJlZjUwZWVhNmEzYjM0
ZTc1ZmE5ZC4uNGJmNzgwZWQzMTc2NmVkZTZiY2M1NjA0NDZhNTA3OWFjYmNjMTJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3ND
YXNlLmNwcApAQCAtMzgsMTkgKzM4LDE5IEBAIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJs
ZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2VzCiAgICAg
bV92aWFQcm94eSA9IHZpYVByb3h5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0
aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3ND
aGFpbikKK1JlZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94
eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIEFTU0VSVCh0eXBlID09IExvYWQg
fHwgdHlwZSA9PSBNaXNzIHx8IHR5cGUgPT0gR2V0R2V0dGVyIHx8IHR5cGUgPT0gUmVwbGFjZSk7
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgUHJveHlhYmxlQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3ND
aGFpbikpKTsKIH0KIAogUHJveHlhYmxlQWNjZXNzQ2FzZTo6flByb3h5YWJsZUFjY2Vzc0Nhc2Uo
KQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNs
b25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJveHlhYmxlQWNjZXNzQ2FzZT4g
cmVzdWx0KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQg
PSBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQt
PnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKaW5kZXggZGMzOWUy
NmNhMmY0YjJiN2FiYTEyYjVhNTVmMzI2NjQ0MTBlZmE1Yy4uZTg0Mzg1Y2E3NWM5Zjc1MmU4ZThl
MTZjZGRlMGFiY2FjN2JjYzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3Mg
UHJveHlhYmxlQWNjZXNzQ2FzZSA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIAogICAgIFdhdGNocG9p
bnRTZXQqIGFkZGl0aW9uYWxTZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9u
YWxTZXQuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
Y3JlYXRlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCisgICAgc3RhdGljIFJlZjxBY2Nlc3ND
YXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgYm9vbCB2aWFQ
cm94eSA9IGZhbHNlLCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJ
bXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB+UHJveHlhYmxlQWNj
ZXNzQ2FzZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBjOGU2YmM2M2EzNmEzOWI4NDU4Yjkw
MGNiMmE1MmVmNGYxNTExMjBmLi44ZGY1ODFlNDY0ZjBlMDJlMzQ3NzU1ZmM3OTBkMjdjYjg5NDI1
YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVj
dHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kK
ICAgICAsIHByb3BlcnR5SXNJbnQzMihmYWxzZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFs
c2UpCiB7CisgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJl
U3R1YkluZm86On5TdHJ1Y3R1cmVTdHViSW5mbygpCkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBT
dHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSgpCiB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCi0gICAgY29uc3QgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBFQ01BTW9kZSBlY21hTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudCwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCisgICAgY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBFQ01BTW9kZSBlY21hTW9kZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudCwgUmVmUHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCiB7CiAg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCkBAIC0xNTUsNyArMTU2LDcgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICBpZiAobV9jYWNo
ZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB1LnN0dWIt
PmFkZENhc2UobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgV1RGTW92ZShhY2Nlc3NDYXNl
KSk7CisgICAgICAgICAgICByZXN1bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwgY29k
ZUJsb2NrLCAqdGhpcywgYWNjZXNzQ2FzZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiSGFkIHN0dWIsIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4i
KTsKQEAgLTE3MCw5ICsxNzEsOSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0
dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHlt
b3JwaGljQWNjZXNzPigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKKyAgICAgICAgICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gcHJldmlvdXNDYXNlID0gQWNjZXNz
Q2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7
CisgICAgICAgICAgICBhdXRvIHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1
cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOwogICAgICAgICAgICAgaWYg
KHByZXZpb3VzQ2FzZSkKICAgICAgICAgICAgICAgICBhY2Nlc3NDYXNlcy5hcHBlbmQoV1RGTW92
ZShwcmV2aW91c0Nhc2UpKTsKICAgICAgICAgICAgIApAQCAtMjc2LDcgKzI3Nyw3IEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxv
Y2tlciwgQ29kZUJsb2NrKiBjCiAgICAgICAgIHJlc2V0SW5CeUlEKGNvZGVCbG9jaywgKnRoaXMp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6Ci0gICAg
ICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CisgICAgICAgIHJlc2V0SW5zdGFuY2VPZihjb2Rl
QmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxl
dGVCeUlEOgogICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6
Tm9ybWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgKaW5kZXggODgyNTY4YzI2ZWFkNjJlNDBlYWU3ZjI3MDgwZjA5MjFlZGVjNzY0
NS4uYjJlNThhODk1MmQ0NWM1NGY5Y2VjNDY1ODVmYjQ1MGUyMmRkOWVlMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTg3
LDcgKzg3LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5
SWRSZXBsYWNlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVu
dGlmaWVyKTsKICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgYWRkQWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
YWRkQWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8
QWNjZXNzQ2FzZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJC
YXNlJiwgQ29kZUJsb2NrKik7CiAKQEAgLTEzMywxMiArMTMzLDYgQEAgY2xhc3MgU3RydWN0dXJl
U3R1YkluZm8gewogICAgICAgICByZXR1cm4gaW5saW5lU2l6ZTsKICAgICB9CiAKLSAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IHBhdGNoYWJsZUp1bXAoKQotICAgIHsgCi0g
ICAgICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YpOwotICAg
ICAgICByZXR1cm4gc3RhcnQuanVtcEF0T2Zmc2V0PEpTSW50ZXJuYWxQdHJUYWc+KDApOwotICAg
IH0KLQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncygpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MoCkBAIC0zNDQsMTkgKzMzOCwzMCBAQCBjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbyB7CiBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+IHN0YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBJ
QyBmb3IgKmJ5SWQgY2FjaGVzLiBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hhYmxlIGp1bXAgZm9y
ICdpbnN0YW5jZW9mJyBjYWNoZXMuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0
clRhZz4gZG9uZUxvY2F0aW9uOwotICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRh
Zz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIAorICAgIHVuaW9uIHsKKyAgICAg
ICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbExvY2F0
aW9uOworICAgICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlv
bjsKKyAgICB9OworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiBtX2NvZGVQdHI7CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZVB0cigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9jb2RlUHRyKTsg
fQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIHNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJhdGlvbigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9zbG93T3BlcmF0
aW9uKTsgfQorCiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKIAotICAgIEdQUlJlZyBi
YXNlR1BSOwotICAgIEdQUlJlZyB2YWx1ZUdQUjsKKyAgICBHUFJSZWcgYmFzZUdQUiB7IEludmFs
aWRHUFJSZWcgfTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAg
dW5pb24gewogICAgICAgICBHUFJSZWcgdGhpc0dQUjsKICAgICAgICAgR1BSUmVnIHByb3RvdHlw
ZUdQUjsKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSOwogICAgICAgICBHUFJSZWcgYnJhbmRH
UFI7CiAgICAgfSByZWdzOworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSIHsgSW52YWxpZEdQUlJl
ZyB9OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSOwogICAg
IC8vIEZJWE1FOiBbMzItYml0c10gQ2hlY2sgaWYgU3RydWN0dXJlU3R1YkluZm86OmJhc2VUYWdH
UFIgaXMgdXNlZCBzb21ld2hlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKaW5kZXggOGFkZWFkNTBmNDU1NmNmZjI1ZTdjN2M5OTc4MzA0ZDQxNzcwOTc0Ny4u
NDc2NTRhNzZkYjVhMTEzZjBmY2I2YmY2OGEzZDIyYWNiYzZhMDI2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMTU0LDYgKzE1NCwxMSBAQCBjbGFz
cyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2NhbGxzLmFw
cGVuZChDYWxsTGlua1JlY29yZChmdW5jdGlvbkNhbGwsIGZ1bmN0aW9uKSk7CiAgICAgICAgIHJl
dHVybiBmdW5jdGlvbkNhbGw7CiAgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgY2FsbChhZGRyZXNzLCBPcGVy
YXRpb25QdHJUYWcpOworICAgIH0KICAgICAKICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApp
bmRleCAyNWExMjE5ZmRkNDNiZGZlM2MwN2I4YTI3NGRmOGUwZTU3ODhkMmI1Li5iYTM5ZmZhYzdk
YmYzODllYmZiOGJjNTA2ZDQwOWUxNzUwMGFkMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xODksNiArMTg5LDggQEAgY2xh
c3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IENhbGxTbG93UGF0aEdlbmVyYXQKICAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1
bWVudHM7CiB9OwogCisKKwogdGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5j
dGlvbiwKQEAgLTI2NCw2ICsyNjYsNjcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9u
QXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgorY2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRUeXBl
PiB7CitwdWJsaWM6CisgICAgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0
b3IoCisgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisg
ICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1l
bnRzKQorICAgICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlw
ZT4oZnJvbSwgaml0LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQpCisgICAgICAgICwg
bV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgLCBtX3Nsb3dQYXRoT3BlcmF0aW9u
QWRkcmVzcyhzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MpCisgICAgICAgICwgbV9mdW5jdGlvbihm
dW5jdGlvbikKKyAgICAgICAgLCBtX2FyZ3VtZW50cyhzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihh
cmd1bWVudHMpLi4uKQorICAgICAgICAsIG1fc3R1YkluZm8oc3R1YkluZm8pCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+Cisg
ICAgdm9pZCB1bnBhY2tBbmRHZW5lcmF0ZShTcGVjdWxhdGl2ZUpJVCogaml0LCBzdGQ6OmluZGV4
X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7CisgICAgICAgIEFTU0VSVChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKTsKKyAgICAgICAgdGhpcy0+c2V0VXAo
aml0KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93T3BlcmF0aW9uID0gbV9mdW5jdGlvbjsK
KyAgICAgICAgaml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0
dWJJbmZvKSwgbV9zdHViSW5mb0dQUik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19z
YW1lPFJlc3VsdFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUpCisgICAgICAgICAgICBqaXQtPmNh
bGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgc3Rk
OjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVy
YXRpb25BZGRyZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0KSwgc3RkOjpnZXQ8QXJn
dW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIHRoaXMtPnRlYXJEb3duKGpp
dCk7CisgICAgfQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBq
aXQpIGZpbmFsCisgICAgeworICAgICAgICB1bnBhY2tBbmRHZW5lcmF0ZShqaXQsIHN0ZDo6bWFr
ZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+
Pjo6dmFsdWU+KCkpOworICAgIH0KKworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgIEND
YWxsSGVscGVyczo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzczsKKyAgICBGdW5j
dGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1
bWVudHM7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87Cit9OworCisKKwordGVt
cGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUg
UmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJl
c3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAorICAgIFJlc3VsdFR5
cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yPEp1bXBUeXBlLCBG
dW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KGZyb20sIGppdCwgc3R1Yklu
Zm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBzcGls
bE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3Vs
dFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1
bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBG
dW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4u
LiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKGZyb20sIGppdCwgc3R1
YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9uLCBO
ZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsIHJlc3Vs
dCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5k
aWYgLy8gRU5BQkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDBhZjVkZDk4MzljODAyMTZlZjhiY2YwZGU2M2RlM2Jj
ODk1YjNhOGEuLjkyNDgwMjk3MDUwZmViNWE5ODdlZDlkZjVjOTI3MWI3NjA4MjgyMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0x
MDQ1LDI0ICsxMDQ1LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5v
ZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgIHN3aXRjaCAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
LmdwcigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CiAKICAgICAgICAgYmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOwor
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENv
bXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxs
ZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVk
VXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZv
LmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIo
KTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1
ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CiAKQEAgLTEwNzAsNyArMTA4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eUlkKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAot
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3Bp
bGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDg2LDI3ICsxMDk4LDM5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwotCiAgICAgICAgIEpTVmFsdWVSZWdz
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAot
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAo
KSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFj
Y2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0
YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpz
VmFsdWVSZWdzKCk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTExMTUsNyArMTEz
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9k
ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUp
OworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3Ms
IHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5v
dENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEzMCwxNCArMTE1NCwxOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUp
CiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFs
dWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAor
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOwotCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CkBAIC0xMTQ3LDIwICsxMTc2LDM1IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAg
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAK
ICAgICAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAorICAgICAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRj
aEdQUik7CiAKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5y
YXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21h
TW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZW5kaWYKIAog
ICAgICAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTE4OSwy
MiArMTIzMywyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2Rl
KiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOwotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOwotCiAg
ICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5KTsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtl
eS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAg
ICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNU
eXBlQ2hlY2sobm9kZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTIxMywyMCAr
MTI2MiwzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSog
bm9kZSkKICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdp
c3RlcnMoKTsKIAogICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3Ms
IHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCks
IEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisg
ICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJl
c3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKQorICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlS
ZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAg
ICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSk7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwpAQCAtMTI1NSw5ICsxMzE5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVz
ZSwgYmFzZSwgUGF5bG9hZFdvcmQpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkg
eworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9
IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMjY3
LDE0ICsxMzM3LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSog
bm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAg
IGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCi0gICAg
ICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
LSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dD
YXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5SWRP
cHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQ
UiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxs
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS5yYXdCaXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQYXRo
LmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBA
IC0zNTg5LDkgKzM2NzAsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZh
dGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKIHsKICAgICBERkdf
QVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gR2V0UHJpdmF0ZU5hbWUp
OwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9ncmFwaC5jaGlsZChub2Rl
LCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFw
aC5jaGlsZChub2RlLCAxKSk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CisgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBzcGVjdWxhdGVTeW1i
b2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CisKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1f
aml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5l
ZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMzYwMiwxNCArMzY5MywyMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBu
b2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2UsIHByb3Bl
cnR5LCByZXN1bHQucmVncygpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1l
LCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0UmVncywgc3R1
YkluZm9HUFIpOwogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAo
KSk7Ci0KLSAgICBhdXRvIG1ha2VTbG93UGF0aENhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAg
YXV0byBtYWtlU2xvd1BhdGhJQ0NhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICByZXR1
cm4gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHQucmVncygpLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIGJhc2UsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5LnBheWxvYWRHUFIoKSkpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCiAgICAgICAgICAgICByZXN1bHQucmVn
cygpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLApAQCAtMzYxNyw4ICszNzE0LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSog
bm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IGJhc2VJc0tub3duQ2VsbAotICAgICAgICA/
IG1ha2VTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXlsb2FkR1BS
KCkpKQotICAgICAgICA6IG1ha2VTbG93UGF0aENhbGwoYmFzZSk7CisgICAgICAgID8gbWFrZVNs
b3dQYXRoSUNDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkK
KyAgICAgICAgOiBtYWtlU2xvd1BhdGhJQ0NhbGwoYmFzZSk7CiAKICAgICBtX2ppdC5hZGRHZXRC
eVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CkBAIC0zNjMwLDI4ICszNzI3LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2gg
KG1fZ3JhcGguY2hpbGQobm9kZSwgMCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
IAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAg
c3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1Yklu
Zm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6
OkdldFByaXZhdGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUs
IDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBi
YXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZh
dGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zNzUwLDI5ICszODU5LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpv
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKwor
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFj
ZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQog
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotCi0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCiAgICAgLy8gV2Ug
ZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5l
ZWQKICAgICAvLyB0byBjaGVjayBpdCBoZXJlLgogICAgIGF1dG8gcHV0S2luZCA9IG5vZGUtPnBy
aXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZp
ZWxkRGVmaW5lIDogUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OwotICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hH
UFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmlj
dCgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
dmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCiAgICAgbm9SZXN1bHQobm9k
ZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChO
b2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKIAorICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAg
IEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgR1BSUmVn
IGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNwZWN1bGF0ZVN5bWJvbChub2Rl
LT5jaGlsZDIoKSwgYnJhbmRHUFIpOwpAQCAtMzc4NiwxNiArMzkwNiwyNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKIAogICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJh
bmQsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRG
R0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5k
LCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3Bl
cnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwK
KyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFj
Y2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZN
b3ZlKHNsb3dQYXRoKSk7CkBAIC0zODA2LDkgKzM5MzQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQ
UlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzgyMCwxNiAr
Mzk1NCwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5v
ZGUqIG5vZGUpCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiks
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiks
IHN0dWJJbmZvR1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0g
dHJ1ZTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQ
cml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9S
ZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRH
UFIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJyYW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNz
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKQEAgLTM5NDcsMjIgKzQwODksMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5ibGVzc2VkQm9v
bGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNj
cmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2Up
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5v
ZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BS
UmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BS
UmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsKICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BS
LAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAor
ICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIo
KSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAgICBtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNwZWNDZWxsKSk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIAogICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3Ms
Ci0gICAgICAgIHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBwcm90
b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGlt
aXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8o
KSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRk
SW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTczLDYgKzQxMjEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAgICYm
IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTM5ODAs
MTMgKzQxMjksMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9k
ZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgCisgICAgICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0K
ICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBw
cm90b3R5cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIo
KTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAg
IAotICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BS
LCBzY3JhdGNoMkdQUik7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRH
UFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIAogICAg
ICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1
cm47CkBAIC0zOTk2LDEyICs0MTUwLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2Rl
LCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSk7CiAgICAgCisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1Zh
bHVlT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsK
KyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsK
ICAgICBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7
CiAgICAgCkBAIC00MDE3LDcgKzQxNzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dD
YXNlID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNv
bXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCBy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21w
aWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVz
dWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2Up
OwogICAgIAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMzA0Nyw0NiArMTMyMDcsNjQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvSW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgp
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVj
dCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsK
IAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNo
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9k
ZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsK
IAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZERpcmVjdChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBj
YWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwg
bm9kZS0+ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsK
IAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTQ3MTgsMTggKzE0ODk2LDIwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywg
R1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2lu
ZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpT
VmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFN
b2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSkKIHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7
CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNr
LCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVlUmVncywg
ZmFsc2UpOworICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRl
RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNp
emUoKSk7CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwK
LSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNj
cmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KG1faml0KTsKQEAgLTE0NzM5LDkgKzE0OTE5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1
CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNl
cy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywK
LSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNs
b3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIHZhbHVlUmVncywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggNzRjMTVlNjk3ZTJjYzMyZjZlOWIyZTdjMjVhNmUxOGMxM2Q0MGQ2Yi4uODY4
YmZmNzBmOTRmOGUyMTExYTQ2OGRkZWE0OTUzMjE3NDVmYjMwZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTksMTYgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRhY2hlZChO
b2RlKik7CiAKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsK
LSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFs
dWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJ
VENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vz
c1R5cGUpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lz
dGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3Jp
Z2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAg
dm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25z
dCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1
bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNN
b2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3Jp
Z2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6
Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyBy
ZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBB
Y2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhp
c1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BS
LCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklU
Q29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlz
dCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdH
UFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BS
UmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9k
ZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdp
biwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVn
IHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRh
Z0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21waWxl
RGVsZXRlQnlJZChOb2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVK
SVQgewogICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBi
b29sIGludmVydCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9k
ZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNl
T2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3Rv
dHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3Jh
dGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgp
KTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdz
IHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2
b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9m
Q3VzdG9tKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2Rl
Kik7CkBAIC05NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJncy4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGxTZXRS
ZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mu
b2Zmc2V0KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAg
ICFGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZvaWQ+Cisg
ICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7
CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAgICAgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJs
b2NrKiBhcyBhIHdlYWstcG9pbnRlci4KQEAgLTk4OCw2ICsxMDA4LDEzIEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwog
ICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9q
aXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwo
KTsKQEAgLTEwMTAsNiArMTAzNywyOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAg
IHJldHVybiBjYWxsOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3Vs
dCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6
QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCisgICAgewor
ICAgICAgICBhcHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBtX2ppdC5zZXR1cFJlc3VsdHMo
cmVzdWx0MSwgcmVzdWx0Mik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0
KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzKQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFk
ZHJlc3MsIHJlc3VsdFJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJl
c3VsdChhZGRyZXNzLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0UmVncy50YWdHUFIo
KSk7CisjZW5kaWYKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0
UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJl
ZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmMTJmODZmMGQ2ODljNTQ2MDNlZjBkZjNjMDc3
YTIxNGJlMWY5MzAzLi41MjY0NmE5NjFmZmI4NWJjNDlkY2ExMmY0Zjk1MDAxNzc1M2Y3NDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTE2OCwxNSArMTY4LDE2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxK
U1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdHUFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAg
ICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBv
cmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNw
aWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVn
aXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChv
cmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCks
IHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0
eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXls
b2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9H
UFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyBy
ZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwg
R1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHVi
SW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nl
c3NUeXBlIHR5cGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBU
aGlzIGlzIGEgaGFja3kgZml4IGZvciB3aGVuIHRoZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRl
cyB0byBhbGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdpdGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25s
eSBoYXBwZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJl
Y3RGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVseSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2Nh
dGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0
cmlwIG92ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24uCkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5n
T1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVS
ZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNl
UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiks
IEludmFsaWRHUFJSZWcsIHR5cGUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKICAgICAKQEAgLTIyOCwxNSArMjI5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRo
VGhpcygKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25l
LCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1Bh
eWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAor
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJl
ZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQ
UiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBz
dHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFN
KHN0dWJJbmZvR1BSKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5y
ZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQo
Y29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25l
LCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BS
KSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVl
UmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFn
R1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQ
YXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOwogICAgIApAQCAtMjM0MSw4ICsyMzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVn
aXN0ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJl
Z3MpOworICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMzQwNSw3ICsz
NDA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVz
dWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkp
OworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0
VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0zNDI1LDcgKzM0MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2UuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRH
UFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1Rh
Z0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52
YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWY4YmEzODY4ZTg1ODdjMTRj
Mzc0MDJiOGJjMzg0MzA5YzgxMjBhMC4uMjkzMDMwZmQxZTQyYzAzOTRjZjI2YzM4YjVhNWQzNjA1
OTFmMjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC0xNDcsMTIgKzE0NywxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NU
eXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
b3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5
cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIo
KSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdl
dEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVu
dGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBH
UFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQu
cmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVk
KGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdp
c3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVn
aXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0
ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwg
ZmFsc2UpOwogICAgIH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAg
ICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9H
UFIsIHR5cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xv
d1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5n
R2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9w
dGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJh
d0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5
SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsK
KyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsK
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3Qm
IHNsb3dQYXRoVGFyZ2V0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BS
LCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdl
dCkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51
c2VkUmVnaXN0ZXJzKCk7CkBAIC0xODcsMjAgKzE5NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZUdQUgogICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVn
aXN0ZXJzLnNldCh0aGlzR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0
R1BSLCBmYWxzZSk7CisgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAg
ICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCks
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAg
ICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3ModGhpc0dQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklU
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKHRoaXNHUFIpLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9q
aXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhj
ZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRp
Zmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9u
dFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhp
c0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhU
aGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1v
dmUoc2xvd1BhdGgpKTsKQEAgLTI2ODEsMTYgKzI3MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAwKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxKSk7Ci0KKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBwcm9wZXJ0eSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKICAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKKyAgICAgICAgICAg
IHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKwogICAg
ICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwog
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRl
QW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBt
X3N0cmVhbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0yNzAwLDggKzI3MjcsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUikpOwogCiAgICAgICAgICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3Mo
cmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JO
b2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAg
ICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBA
IC0yNzEyLDExICsyNzM5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKIAogICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
Ci0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIp
OworICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KQorICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aDsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBu
dWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVs
bHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAg
ICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5
ODQsOSArNDAxOSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogewogICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IENlbGxVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENl
bGxVc2UpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFs
dWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTM5OTQsMTQgKzQwMzYsMjEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNo
ZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFs
dWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxl
cjo6SnVtcExpc3QoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1Yklu
Zm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTQwMTMs
NyArNDA2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1
ZVJlZ3MoYmFzZUdQUikpKTsKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwg
c3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCA4MzBmYmI4M2VkYTBmNTg1Y2NkNjA1NzZmYmNmZDYyM2NhNWM1YzdkLi4zMjk4
NmE3NzAzZTgxNDA3ZDM0YzkzMTVlOWE3NmNhNTE2YWQ2NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOTc4LDYgKzM5NzgsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9u
SGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CiAKQEAgLTM5OTksMTAgKzQwMDAsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwog
ICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAg
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNy
ZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRM
SklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwg
SlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXND
ZWxsKQpAQCAtNDAxNiwxMyArNDAxOCwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0
aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2Fs
bCk7CkBAIC00MTEwLDYgKzQxMjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9u
dW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTQxMzAsMTAgKzQx
NDUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJh
bXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFs
aWRHUFJSZWc7CiAKICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwK
LSAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BS
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2Vs
bDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQxNTksMTMgKzQxNzUsMjUgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0
KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihh
Y2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
c3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vz
c1R5cGUpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJS
ZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNj
ZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwg
c2xvd1BhdGhDYWxsKTsKQEAgLTQ1MTYsNiArNDU0NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNoLCB3ZSBtaWdodCB3YW50IHRv
IGxhdGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAgLTQ1MzgsMTAgKzQ1NjcsMTIg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBKUyBzZXR0ZXIgY2Fs
bCBJQ3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwgbmVlZCB0aGlzLgogICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQo
cGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BT
Y3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUs
CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIHN0dWJJ
bmZvR1BSLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTQ1NTMsMTIgKzQ1ODQsMjQgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwg
SW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZh
bGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAg
LTUyMzksNiArNTI4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcikp
OwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwog
CiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBA
IC01MjU5LDEwICs1MzAzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFt
cy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBn
ZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJ
bmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVy
dHlJc1N0cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50MzI7CkBAIC01Mjgw
LDEzICs1MzI1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwu
bGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAot
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
ZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmpp
dCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwo
c2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4MzYsNyArNTg5Myw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNr
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8g
MiA6IDE7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2Vw
dGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CkBAIC01ODU2LDkgKzU5MTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
IAogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIo
KSk7CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7Cisg
ICAgICAgICAgICAgICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlkR1BSUmVnOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwpAQCAt
NTg3NCw3ICs1OTMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRW
YWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBwYXJhbXNb
Ml0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3By
KCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1z
WzJdLmdwcigpKTsKQEAgLTU4ODQsMTkgKzU5NDMsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3Jl
YXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiks
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+
OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3Mo
cmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5n
ZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAgICAgICAgICAgICAg
ICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTA1LDEyICs1OTY1LDI0IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJl
Z2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0
aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyMjQyLDggKzEy
MzE0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
U29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRj
aHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2lu
dEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xMjI2MCwxMCArMTIzMzIsMTIgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1w
TGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZU
TEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAg
ICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwxMiArMTIzNDgsMjQg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlv
bkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxs
KTsKQEAgLTEyNDg2LDcgKzEyNTcyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJh
aW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAg
ICAgCkBAIC0xMjUwMiw2ICsxMjU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKICAgICAgICAg
ICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1w
OwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEyNTIzLDEwICsxMjYx
MCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5z
dGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVl
R1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHN0dWJJbmZvR1BSLCBzY3Jh
dGNoR1BSLAogICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmpl
Y3QpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwor
ICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklU
KSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBq
aXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRk
TGF0ZVBhdGgoCkBAIC0xMjUzNywxMiArMTI2MjYsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVH
UFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mb0dQUiwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVu
Y3Rpb24sIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAt
MTM5ODYsNiArMTQwODcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgR2V0
QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2UgbWlnaHQgZ2V0IHNvbWUgcGVyZm9ybWFu
Y2UgYm9vc3QgaWYgd2UgY2xhaW0gdGhhdCBpdAogICAgICAgICAvLyBjbG9iYmVycyB2b2xhdGls
ZSByZWdpc3RlcnMgbGF0ZS4gSXQncyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgdGhv
dWdoLCBzaW5jZSB0aGUKQEAgLTE0MDE0LDEwICsxNDExNiwxMiBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAg
ICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFt
cywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFt
c1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0u
Z3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDMwLDEyICsxNDEzNCwyNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNb
MF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0uZ3ByKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0Jp
dHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBz
bG93UGF0aENhbGwpOwpAQCAtMTQwNjAsOCArMTQxNzYsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwog
CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5k
bGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9p
bnQpOwpAQCAtMTQwODMsMTAgKzE0MTk5LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0
ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52
YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3By
KCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigp
KSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZh
c3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0g
aml0LmxhYmVsKCk7CkBAIC0xNDA5OSwxMiArMTQyMTcsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFt
c1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCks
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRleCAyYWRk
NDk0YzUzMmFhZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRmLi5iNGU0NzU4ZTU4ZmIxZTc5MjZj
NmEwNzE4MzczMTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHdvcmRTaXplID0gODsKIAogU2xv
d1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKLSAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVn
IHJldHVyblJlZ2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVs
cGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJl
ZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6IG1faml0KGppdCkKICAgICAsIG1f
bnVtQXJncyhudW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdpc3RlcihyZXR1cm5SZWdpc3RlcikK
QEAgLTYzLDYgKzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4
dCgKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm1lcmdlKG1fYXJndW1lbnRSZWdp
c3RlcnMpOwogICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAg
ICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgaWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcp
CisgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KGluZGlyZWN0Q2FsbFRh
cmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLmZpbHRlcih1
c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxsaW5nQ29u
dmVudGlvblJlZ2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEyIEBAIFNsb3dQYXRoQ2FsbENvbnRl
eHQ6On5TbG93UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2Fs
bENvbnRleHQ6OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxs
VGFyZ2V0KSBjb25zdAogewotICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVT
ZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0KTsKKyAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50
UmVnaXN0ZXJzLCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKSBj
b25zdAoreworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIG51bGxw
dHIsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBhZGRyZXNzLm9mZnNldCk7CiB9CiAK
IFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKQEAgLTEzMyw2ICsxNDAsMjIgQEAg
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Nsb3dQYXRo
Q2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIENDYWxsSGVscGVyczo6
QWRkcmVzcyBjYWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXkgPSBrZXlXaXRo
VGFyZ2V0KGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCByZXN1bHQgPSBTbG93UGF0aENh
bGwobV9qaXQuY2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7CisKKyAgICBtX2ppdC5hZGRMaW5r
VGFzaygKKyAgICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHVuayA9
CisgICAgICAgICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwg
cmVzdWx0LmtleSgpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxs
KCksIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih0aHVuay5jb2RlKCkpKTsKKyAg
ICAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQogewogICAgIGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4MWYyNzdmNmI4MjE3YWM5ZjNmYTgw
YzEyYS4uZDZmMjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBmNDgyYTgzMWQ0YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCkBAIC01NCwxNSArNTQsMTcg
QEAgY2xhc3MgU2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2lsbCBiZSBhbiBSQUlJIHRoaW5neSB0
aGF0IHdpbGwgc2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sgc2l6ZXMgYW5kIG9mZnNldHMgYW5k
IHN1Y2guCiBjbGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBTbG93UGF0
aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVu
c2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlcik7CisgICAgU2xvd1BhdGhDYWxs
Q29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25l
ZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJn
ZXRSZWdpc3Rlcik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRleHQoKTsKIAogICAgIC8vIE5PVEU6
IFRoZSBjYWxsIHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVhZHkgZ29pbmcgdG8gYmUgbGlua2Vk
IGJ5IHRoZSBKSVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAgICAvLyBzbyB0aGVyZSBpcyBubyBu
ZWVkIGZvciB5b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAgICBTbG93UGF0aENhbGwgbWFrZUNh
bGwoVk0mLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpOworICAgIFNs
b3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CiAKIHByaXZh
dGU6CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0
aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0OwogICAgIAogICAgIFJlZ2lzdGVy
U2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsaW5nQ29udmVu
dGlvblJlZ2lzdGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRp
b24oCiB7CiAgICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAgewotICAgICAgICBTbG93UGF0aENh
bGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRU
eXBlcykgKyAxLCByZXN1bHRHUFIpOworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRl
eHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1
bHRHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8dm9pZChB
cmd1bWVudFR5cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAgICAgICAgY2FsbCA9IGNvbnRleHQu
bWFrZUNhbGwodm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0xMTcsNiArMTE5LDQ4IEBAIFNsb3dQ
YXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2Fs
bE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFy
Z2V0LAorICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQ
UiwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgU2xvd1BhdGhDYWxsIGNhbGw7
CisgICAgeworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVy
cywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFyZ3VtZW50cy4uLik7CisgICAgICAg
IGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7CisgICAgfQorICAgIGlmIChleGNlcHRp
b25UYXJnZXQpCisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+YXBwZW5kKGppdC5lbWl0RXhjZXB0
aW9uQ2hlY2sodm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2
bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCog
ZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyBy
ZXN1bHRHUFIsCisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgaWYgKGNh
bGxTaXRlSW5kZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAgIHJldHVybiBjYWxsT3BlcmF0aW9u
KHZtLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sIHJlc3Vs
dEdQUiwgYXJndW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9y
Q29kZU9yaWdpbihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0
YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNl
cHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIGNhbGxPcGVyYXRp
b24oCisgICAgICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3RlcnMsIGppdCwgY2FsbFNpdGVJbmRl
eEZvckNvZGVPcmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0
aW9uLAorICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCmluZGV4IDJkMzA2YzYyMDMz
YTgzOTA4ZTZmY2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdlODI2MWZkNDczNmIxZDMzNzJiZWY1
NTEzZWZlNWFhMzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewotICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdp
c3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9p
bnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0
ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKKyAgICBvdXQucHJpbnQoIjx1c2Vk
UmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwg
IiwgaW5kaXJlY3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0g
IiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3Vt
ZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJjN2NlODNkNzA1MjBlNzYxMzg0MmJk
ZDMzZC4uMGNlNjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0MWFlMTAwMGQxMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCkBAIC01MSwxMSAr
NTEsMTIgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxL
ZXkoCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQsIEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gY2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJz
LAotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0LCBp
bnQzMl90IGluZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhzZXQpCiAg
ICAgICAgICwgbV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFn
PigpKQogICAgICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMoYXJndW1lbnRSZWdpc3RlcnMpCiAg
ICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1faW5kaXJlY3RPZmZzZXQoaW5k
aXJlY3RPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYzLDEwICs2NCwxMSBAQCBjbGFz
cyBTbG93UGF0aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY2Fs
bFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIGNvbnN0IFJlZ2lz
dGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRSZWdp
c3RlcnM7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KKyAgICBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpcmVj
dE9mZnNldDsgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSB3aXRoQ2FsbFRhcmdldChGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRS
ZWdpc3RlcnMoKSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVz
ZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCks
IGluZGlyZWN0T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewog
ICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVlVGFnKQogICAgICAgICA6IG1fdXNl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgw
KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KERlbGV0ZWRWYWx1ZVRh
ZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkK
LSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05MywxOCArOTMs
MjAgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Vz
ZWRSZWdpc3RlcnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJzCiAgICAgICAgICAgICAmJiBtX2Nh
bGxUYXJnZXQgPT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAgICAgICAgICAmJiBtX29mZnNldCA9
PSBvdGhlci5tX29mZnNldDsKKyAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zm
c2V0CisgICAgICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0ID09IG90aGVyLm1faW5kaXJlY3RP
ZmZzZXQ7CiAgICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2Nh
bGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldDsKKyAgICAgICAgcmV0dXJu
IG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJn
ZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCArIG1faW5kaXJlY3RPZmZzZXQ7CiAg
ICAgfQogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRhcmdldDsKICAgICBSZWdpc3RlclNl
dCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZfdCBtX29mZnNldDsKKyAgICBwdHJk
aWZmX3QgbV9vZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBtX2luZGlyZWN0T2Zmc2V0IHsgMCB9
OwogfTsKIAogc3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWExMmFhZGRkMjc2YTkzMzEzM2MwYjM2
Yzg2NjEzYWQuLmQ5MjAyYTNkNDE5ZTVjYjJhNTllMzFmYmU4NWE0YWQ1M2JlNDk0MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRp
b25UaHVua0dlbmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKICAg
ICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVm
ZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdH
UFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVx
dWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwog
CiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAsMTMgKzIwMCwyMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9y
KFZNJiB2bSwgY29uc3QgUwogICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUp
OwogICAgIH0KICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQ
UkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIw
LCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpu
b25BcmdHUFIxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3Vt
ZW50UmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyID0ga2V5LmFyZ3Vt
ZW50UmVnaXN0ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBkb250
Q2xvYmJlci5zZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgcmVnaXN0ZXJDbG9iYmVyQ2hl
Y2soaml0LCBXVEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAgICBBc3NlbWJseUhlbHBlcnM6OkNh
bGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgQXNzZW1ibHlIZWxwZXJz
OjpDYWxsIGNhbGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGNhbGwgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5pbmRpcmVjdE9mZnNl
dCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZz
ZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0LnJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVy
bkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICBq
aXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7Ci0gICAgcGF0Y2hCdWZmZXIubGlu
ayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJGVEwgc2xvdyBw
YXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDM1NGY5
NTQ3YjRhYmYzMjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2QuLjZlYTY1NDU0YjhiMjVmODdkOWI2
YzdhNDlhNzdjY2Y2NTAzMTJjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAK
KyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxD
YWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICBh
dXRvIGNhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpJVENvbXBp
bGF0aW9uUHRyVGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1ZmZlci5hZGRNYWluVGhyZWFkRmlu
YWxpemF0aW9uVGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zv
cih2bSwgKmluZm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0
dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgICAgICAgICAgaW5mby0+
c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2
bSwgeyB9LCB7IH0pKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNh
bGwoY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
dmlydHVhbFRodW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMy
MGVhYTcyZDg5ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIxNzMxNjllNzNmYWUzNDExMTg4Njk4OTdl
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA3LDcg
KzIwNyw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewog
CiAgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5
cGVzIHBhc3NlZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBl
eHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9u
IHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxl
Y3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIx
OSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAg
fQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMs
IHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAg
IEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIp
CisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVu
c2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+
CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBn
LCBoPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5n
cHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGlu
YXRpb25zOwpAQCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGlj
IEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVy
LmNyb3NzRGVzdGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmco
R1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNl
c1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3Rp
bmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1
bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJl
Z0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsg
MSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
cmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291
cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVt
RlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJl
ZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsg
MSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVn
IGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhp
cyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9
IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3Nz
U291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMg
KyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BS
UmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJn
KEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4
dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1
bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2Vz
XSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJT
b3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNo
Tm9uQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJl
c3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJj
ZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQ
UlNvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+
IGFkZEdQUkV4dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJu
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJz
LCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQ
UlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
ICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBh
ZGRQb2tlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAg
ICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5z
aWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0
KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xh
bmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJl
Zzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3Rs
eSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUklu
Zm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5v
bkFyZ0dQUnMpOworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7
CiAgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAg
IElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjEsMTUg
QEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BS
QXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxj
dWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWdu
ZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBj
dXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQog
Ci0gICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BS
QXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVu
dCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBv
a2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tl
T2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRG
UFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSk7CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAg
LTM3Niw4ICszODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRp
b24gdGltZSBleHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJz
aXZlIHRlbXBsYXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBt
YXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRf
TVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlw
ZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSAr
NDAzLDMxIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3Vi
bGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJs
ZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxB
cmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4u
Lik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNW
YWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3Mg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0
ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0
LDggKzQzNSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMg
ewogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1J
UFMpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAi
V2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2
OSwyNSArNDgwLDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVy
T2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyAr
IDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZyku
YWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2Vu
ZGlmCiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0g
ICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJn
cy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVO
VF9BUkdVTUVOVF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdz
LmFyZ0NvdW50KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMg
OiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwg
YXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVu
dHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBl
bmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3Vt
ZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwg
QXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0g
R1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAK
ICAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0g
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4u
Lik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSArIDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2Ug
KyAyKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSArIDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4u
Lik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VS
UkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisg
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBh
eWxvYWQsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2ln
bmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIo
KSk7CkBAIC01NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2Vt
Ymx5SGVscGVycyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2Ft
ZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJl
Z3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIo
KSk7CkBAIC01NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxX
QVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1
c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcs
IFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZl
SklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9u
LWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBv
cGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZl
ciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdl
IHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNo
IHNvdW5kcwpAQCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGlj
IEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFi
bGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJn
Pjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0g
NCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFy
Zz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09
IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVu
YWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
Pjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3Rk
Ojppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJf
dDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwg
c3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykK
ICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNw
ZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBh
bm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
ICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2Ft
ZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBz
dGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAg
fQpAQCAtNjM5LDggKzY1MCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1
cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5
ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAj
aWYgVVNFKEpTVkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQ
UlNvdXJjZXMsIEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+
KGFyZ1NvdXJjZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJT
b3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVi
bGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
dXNpbmcgRmlyc3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRp
b25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3Mg
Zm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4u
LgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hl
Y2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsK
KyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhp
cyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRo
aW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9u
VHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAi
QmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQor
ICAgIH0KIAotI2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJh
aXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdV
TUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJn
cykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQog
ICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdv
cmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1i
aXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hl
Y2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwg
MCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwg
MCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUq
Pjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMg
b25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGlu
Z3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMg
c2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwg
MCwgMCwgMD4oKSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9w
ZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNo
Tm9uQXJnKGZ1bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAg
fQogCi0jdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4o
QXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVz
cy5iYXNlLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9p
ZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCmlu
ZGV4IGY3YWEzMjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLmFiMzRhMTQ1MDVl
YTE5NzVlMTEyODM2MWUzMDA4ZjQ1NWVmN2NmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKQEAgLTM4LDkgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1HQ0F3YXJlSklUU3R1
YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCitHQ0F3YXJlSklU
U3R1YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFr
UmVmZXJlbmNlcykKICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQor
ICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgLCBtX3dlYWtSZWZlcmVuY2VzKFdURk1v
dmUod2Vha1JlZmVyZW5jZXMpKQogewogICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFk
ZCh0aGlzKTsKIH0KQEAgLTQ5LDYgKzUyLDkgQEAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NB
d2FyZUpJVFN0dWJSb3V0aW5lKCkgeyB9CiAKIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpv
YnNlcnZlWmVyb1JlZkNvdW50KCkKIHsKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQor
ICAgICAgICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKwogICAgIGlmICht
X2lzSmV0dGlzb25lZCkgewogICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVlZGVkIGZvciB3aGVu
IHRoZSBzeXN0ZW0gc2h1dHMgZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAgICAgLy8gdGhlIEpJ
VCBzdHViIHJvdXRpbmUgc2V0IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0IGFyb3VuZCB0byBk
ZWxldGluZwpAQCAtNzUsOSArODEsOSBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6ZGVs
ZXRlRnJvbUdDKCkKIH0KIAogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsCisg
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29k
ZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgRml4ZWRW
ZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIs
CiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBj
YWxsTGlua0luZm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAg
IDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3Zl
KHdlYWtSZWZlcmVuY2VzKSkKICAgICAsIG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9j
YWxsTGlua0luZm9zKFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiB7CkBAIC0xMDYsOSArMTEyLDkg
QEAgdm9pZCBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3Rz
SW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZpc2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0
aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5k
bGVyKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4mIGNvZGUsIFZNJiB2bSwgIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0Nl
bGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYg
dm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxT
dHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3Qg
VmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9z
LAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2Fi
bGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFy
a2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3Zl
KGNhbGxMaW5rSW5mb3MpKQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2Rl
LCB2bSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIG93bmVyLCBjZWxs
cywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlv
bkhhbmRsZXIoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgLCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5k
bGVyLT5jb2RlT3JpZ2lucygpKQpAQCAtMTUyLDggKzE1OCwxMCBAQCB2b2lkIEdDQXdhcmVKSVRT
dHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIH0K
IAogCi1SZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorUmVmPEpJVFN0
dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsCisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
JiYgd2Vha1JlZmVyZW5jZXMsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpTQ2VsbCogb3duZXIs
CiAgICAgYm9vbCBtYWtlc0NhbGxzLApAQCAtMTY1LDE4ICsxNzMsMTggQEAgUmVmPEpJVFN0dWJS
b3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBpZiAoIW1ha2VzQ2FsbHMpIHsKICAg
ICAgICAgLy8gQWxsb2NhdGluZyBDYWxsTGlua0luZm9zIG1lYW5zIHdlIHNob3VsZCBoYXZlIGNh
bGxzLgogICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpOwotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlYWJsZUpJVFN0dWJSb3V0aW5lKHZtLCBjb2RlLCBXVEZNb3Zl
KGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkpOwogICAgIH0KICAgICAKICAgICBpZiAo
Y29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5q
aXRUeXBlKCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92
ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlv
bkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3Zl
KGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNh
bGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFu
ZGxlckNhbGxTaXRlSW5kZXgpKTsKICAgICB9CiAKICAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYm
IGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpjcmVhdGUoY29kZSwgdm0pOworICAgICAgICByZXR1cm4gR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpjcmVhdGUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVy
ZW5jZXMpKTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZv
cykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwgb3du
ZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmgKaW5kZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFjYTlmZC4uMDVh
OGE2ZmM2YjQ2NTk3MDdiODYwMjI5ZWY3NjhkZDYzNzA1NTE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAKK2NsYXNzIEFj
Y2Vzc0Nhc2U7CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsK
IApAQCAtNTQsMTIgKzU1LDEyIEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3
aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVK
SVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91
dGluZVB0clRhZz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmKTsKICAg
ICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmPEpJ
VFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRp
bmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlz
LCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKSk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY4LDYgKzY5LDkgQEAgY2xhc3Mg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKICAgICAgICAg
bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKHZpc2l0b3IpOwogICAgIH0KICAgICAKKyAgICBj
b25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gJm1fa2V5czsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiog
d2Vha1JlZmVyZW5jZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmbV93ZWFrUmVmZXJlbmNlczsg
fQorCiAgICAgdm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTgxLDYg
Kzg1LDkgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0
aW5lIHsKIAogICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2lzSmV0dGlzb25lZCB7IGZhbHNlIH07CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiBtX2tleXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJr
IG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCkBAIC04OCw3ICs5
NSw3IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGlu
ZSB7CiBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVK
SVRTdHViUm91dGluZSB7CiBwdWJsaWM6CiAgICAgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGlu
ZSgKLSAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+Jiwg
QmFnPENhbGxMaW5rSW5mbz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOwogICAgIH5NYXJr
aW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBA
IC0xMDksNyArMTE2LDcgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEdDQXdhcmVKSVRTdHViUm91dGluZSBCYXNlOwogCi0gICAgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVj
dG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXgpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25I
YW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
LCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3Ry
dWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYs
IEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
KTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5h
bDsKIAogICAgIHZvaWQgYWJvdXRUb0RpZSgpIGZpbmFsOwpAQCAtMTI5LDkgKzEzNiwxMCBAQCBj
bGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1
YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogLy8gYXBwcm9wcmlhdGUuIEdlbmVyYWxseSB5b3Ugb25s
eSBuZWVkIHRvIHBhc3MgcG9pbnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQKIC8vIGFmdGVyIHRoZSBm
aXJzdCBjYWxsIHRvIEMrKyBvciBKUy4KIC8vIAotLy8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVh
dGVKSVRTdHViUm91dGluZSgKKy8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHVi
Um91dGluZSgKIC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mIGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBi
b29sIG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQyLDggKzE1MCw4IEBAIGNsYXNzIEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1h
cmtpbmdHQ0F3YXJlSklUCiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQg
dXAgd2l0aCBtb3JlIGNvZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1SZWY8SklUU3R1
YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGJvb2wgbWFrZXNDYWxscywKK1JlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91
dGluZSgKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9y
PFN0cnVjdHVyZUlEPiYmIHdlYWtSZWZlcmVuY2VzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIs
IGJvb2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExp
bmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNl
cHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdD
YWxsU2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1
YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1
MTgwMDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApA
QCAtNDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpy
MTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyBy
ZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJl
Z2lzdGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdU
NSAocmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVy
czo6eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3
ID0gQVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVn
VDkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVn
aXN0ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5W
YWx1ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6Ongy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGVlMWE0ZTM3ZmZjMjc3ZGNkOTZkNGIw
MjJiNzcyN2M1YmJmNzQyM2QuLjliODIzZWM4NDIzYTJlZjNmY2U5YjNiMzBhMDBiNjMxM2MzNjkx
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkzMSwxMiArOTMxLDEyIEBAIHZv
aWQgSklUOjpsaW5rKCkKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29tcGlsYXRp
b25JbmZvIDogbV9ieVZhbENvbXBpbGF0aW9uSW5mbykgewogICAgICAgICAgICAgUGF0Y2hhYmxl
SnVtcCBwYXRjaGFibGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5ub3RJbmRl
eEp1bXA7Ci0gICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4gbm90SW5kZXhKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxl
Tm90SW5kZXhKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKIAogICAgICAgICAgICAg
UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJhZFR5cGVKdW1wOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRj
aGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9
IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25P
ZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwog
CkBAIC05NDUsMTQgKzk0NSwxOSBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRv
IHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0
Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5m
by5zbG93UGF0aFRhcmdldCkpOwogCiAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5i
eVZhbEluZm8tPnNldFVwKAotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCwKLSAgICAgICAg
ICAgICAgICBiYWRUeXBlSnVtcCwKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLAog
ICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKICAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCiAgICAgICAgICAgICAg
ICAgZG9uZVRhcmdldCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwKICAgICAg
ICAgICAgICAgICBzbG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICAgICAgYnlWYWxD
b21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNsb3dQYXRo
VGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgICAg
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IHNs
b3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbElu
Zm8tPm1fbm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOworICAgICAgICAgICAgICAgIGJ5VmFs
Q29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApp
bmRleCA3NWM5Y2I5NmIxMzY1MzJmMDg2MWYyZjBhODA1OGVmYzZiMDU2YjI0Li45ZjMxNjVkNTVi
OGJkZmRmMTAyYmZhZjhhZDEzOGU2ODFhYWRjZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
QEAgLTI5NCw2ICsyOTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb25DYWxsOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsKEFkZHJl
c3MgZnVuY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24sIE9wZXJh
dGlvblB0clRhZyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk1LDM5
ICs0MDAsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGludC1j
aGVja2VkIGFuZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAgICAg
Ly8gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2FzZXMu
IEZhbGwtdGhyb3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdUMCwg
YW5kIGl0IGlzIG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
KSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMy
U2hhcGUpOyB9Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250
aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIElu
ZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAgSnVt
cExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwor
ICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsgcmV0
dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJ
bnQzMlNoYXBlKTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOworICAgICAgICBK
dW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENv
bnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7Cisg
ICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwg
SklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKIAogICAg
ICAgICAvLyBQcm9wZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29u
dGFpbnMgaW5kZWNpbmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5v
dCB5ZXQgbG9hZGVkLiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVy
by1leHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHBy
b2ZpbGVkLgogICAgICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJ
bnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmlj
Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91
YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgYnlWYWxJbmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVt
aXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
LCBieVZhbEluZm8pOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3Vz
U2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGluZGV4
aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5
VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0
QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAg
ICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFs
KE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1
bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgogICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CkBAIC04NzAsMTMgKzg3
NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPik7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhBZGRyZXNzKTsKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1Bh
dGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlm
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQ
cm9maWxlKE1ldGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmly
dHVhbFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRh
PgorICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
KTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBAIC04ODYs
NiArODk1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihB
ZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAg
ICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRp
b25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAg
ICAgIHN0cnVjdCBpczY0Qml0VHlwZSB7CkBAIC05MDYsNiArOTIzLDE3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJh
dGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBj
YW5ub3QgdXNlIHN0YW5kYXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRo
YW4gNjQgYml0cy4KKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5h
bWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5
cGUoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAg
IH0KICNlbHNlIC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFy
Z3MuLi4gYXJncykKQEAgLTkxMyw2ICs5NDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3Mu
Li4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJn
ZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtOTIzLDYgKzk1OCwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVf
aWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAg
ICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNz
IHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7
CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBl
Pih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0K
KwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBB
cmdzPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3Vs
dChPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4u
LiBhcmdzKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRl
eCAxYjQ5ZDQ4OWRhYTJiNzg2YWI3OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMwYzdmNzY3
MTM3OTQ3MGU0ZGQ5ZDRkYTgzNjVkYTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKQEAgLTM5OCw4ICszOTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9v
cGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1Qx
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtNDMyLDggKzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Qwog
ICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxs
ID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
PihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRy
KG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworCiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0Lmxpbmso
dGhpcyk7CkBAIC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4
dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHBy
ZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5p
bXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiks
IEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
Qnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywK
KyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJS
ZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5
SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdl
bik7CkBAIC00OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlv
bkRvbmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRj
aDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
LSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpA
QCAtNTI4LDE2ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAg
ICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAg
ICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwog
CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+
ZG9uZS5pbXBsKCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFBy
b2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBu
b3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAg
ICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
ZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJl
ZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1Yklu
Zm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGRvbmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNo
ZWNrcG9pbnQoanVtcCgpKTsKQEAgLTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0MKIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmls
ZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1
bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3Bw
CmluZGV4IGVjYzRlNWYzZmY2ZDA3Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFm
ZGNhYzc4MmFjOWM4NzRlNTUwYWZmYjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAg
ICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLAogICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpKSksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcihpZGVudC0+aW1wbCgpKSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JH
UFIsIHBheWxvYWRJdGVyYXRvckdQUiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZh
bGlkR1BSUmVnLAogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAg
ICAgICAgcHJlc2VydmVkUmVncy5hZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAg
IEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0
YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25l
UmVncywKKyAgICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBt
X2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAg
ICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRl
eChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3Bl
cnR5TmFtZXMtPnZhbHVlLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVy
UmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdz
LAorICAgICAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCmluZGV4IDRjZTc3ZjViMGNlODk5NTBhZmMxZTUyZjQzNTY1MTQ1NjUxYzdiOTguLjE1YzFk
N2UwOTg4ZDgzZTE0MGQ0MzE5ZjQ2MjM0MTA4ODJiNWJmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7
CiBjbGFzcyBWTTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwK
LSAgICBIb3N0Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVK
SVQsCi0gICAgREZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0
Q2FsbFRodW5rID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJh
c2VsaW5lSklUID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIx
MDEsCiB9Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7Citz
dGF0aWNfYXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9m
SklUVHlwZSk7CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SklUQ29kZT4gewogcHVibGljOgpAQCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRDb2RlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGpp
dFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6
OkJhc2VsaW5lSklUOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElDKEpJVFR5
cGUgaml0VHlwZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVkSUMoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGppdFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwogICAgIHZp
cnR1YWwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhf
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNkZTY0NjIy
Y2UuLjJmZThiOWI4ZTMxYzhiZGJhMzcxNDJhNmY2MDg3ODRiZGI0M2ZkYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CkBAIC00Myw5ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHVi
SW5mbygpCiB9CiAKIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVy
YXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CisgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9jb2RlQmxv
Y2sgPyBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdpbikgOiBn
YXJiYWdlU3R1YkluZm8oKTsKICAgICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNp
dGU7CkBAIC02MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6Zmlu
YWxpemUoCiAKICAgICBtX3N0dWJJbmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5sb2NhdGlv
bk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5zbG93UGF0
aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9z
bG93UGF0aENhbGwpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkK
KyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOwogICAgIG1fc3R1Yklu
Zm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KG1fc2xvd1BhdGhCZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJ
VEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAot
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9j
aywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NU
eXBlLCB1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZh
bHVlKQogewogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJ
bmZvLT5yZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1
YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1
YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
VGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJZEdlbmVy
YXRvcjo6SklUQnlJZEdlbmVyYXRvcigKIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNT
RVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFs
aXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8t
PnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2l6ZSkK
IHsKKyAgICAvLyBXZSBnZW5lcmF0ZSB0aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhl
ciBTaGFyZWRJQyBpcyBlbmFibGVkIGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2UgSW5saW5l
QWNjZXNzCisgICAgLy8gZm9yIHRoZSBwZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9zdGFydCA9
IGppdC5sYWJlbCgpOwogICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVm
ZmVyKCkuY29kZVNpemUoKTsKICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7CkBAIC0x
MDEsOSArMTA2LDkgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24o
TWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0QnlJZEdl
bmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSBhY2Nl
c3NUeXBlKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwg
c3R1YkluZm9HUFIpCiAgICAgLCBtX2lzTGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51aWQoKSA9
PSBjb2RlQmxvY2stPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7CkBAIC0x
MTUsOSArMTIwLDkgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykKLSAgICA6
IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAg
IDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZh
bHVlLCBzdHViSW5mb0dQUikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2Fk
R1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BSKCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBAQCB2b2lk
IEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQogfQogCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9y
KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLAotICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0
VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBH
UFJSZWcgc2NyYXRjaCwgCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkK
LSAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAg
IDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5m
b0dQUikKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2lu
ZChwdXRLaW5kKQogewpAQCAtMTcxLDE0ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpK
QyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJl
ZyBzY3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlWYWxH
ZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJl
Z2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxz
ZTsKICAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7
CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1
YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9z
dHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IEFTU0VSVChiYXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzMCBAQCBKSVRE
ZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZQogdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwo
KTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJ
VFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAg
PSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12
b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0g
ICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5h
bGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAg
ICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2Nh
dGlvbjsKIH0KIAotSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBz
Y3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGpp
dFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmln
aW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMp
CiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICBB
U1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9z
dHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJl
Z3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BS
ID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0g
c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdH
UFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBi
YXNlLnRhZ0dQUigpOwpAQCAtMjIzLDIyICsyMzMsMjUgQEAgSklURGVsQnlJZEdlbmVyYXRvcjo6
SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3IKIHZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRo
SnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0
LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVt
cCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5l
cmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBz
bG93UGF0aCkKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYg
ZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRo
SnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQ
YXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4o
bV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBh
dGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2Nv
ZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIEpJVEluQnlJ
ZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVEJ5
SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6
SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9j
aywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluLCB1c2VkUmVn
aXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFy
ZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVO
VVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwpAQCAtMjUxLDE1ICsyNjQsMTUgQEAgdm9pZCBKSVRJ
bkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0K
IAogSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBH
UFJSZWcgc3R1YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIs
IGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJh
dG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0OwogICAg
IG1fc3R1YkluZm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBlOworICAgIG1fc3R1Yklu
Zm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1Yklu
Zm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTI3OSwyMSArMjkyLDI0IEBAIEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAKIHZvaWQgSklU
SW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogewotICAgIG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9zdGFydCA9IGpp
dC5sYWJlbCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7Cisg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVy
czo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisg
ICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUg
PSBqaXQubGFiZWwoKTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsCi0gICAgICAgIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1f
anVtcCkpOwotICAgIAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgu
bG9jYXRpb25PZjxOb1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgQmFzZTo6ZmluYWxp
emUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlw
ZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRo
U3RhcnRMb2NhdGlvbjsKIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywg
aml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lz
dGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQocmVzdWx0KQogewpAQCAt
MzAyLDYgKzMxOCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVy
dHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIg
PSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBz
dHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VU
YWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVz
dWx0LnRhZ0dQUigpOwpAQCAtMzEyLDIwICszMjksMjMgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6
OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGpp
dC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1
bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdl
bmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXIm
IHNsb3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0
LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
KyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9z
dHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQotICAgIDogQmFzZShjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3Rl
cnMpCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2Uo
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBl
LCB1c2VkUmVnaXN0ZXJzKQogewogICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6
OkNoZWNrUHJpdmF0ZUJyYW5kIHx8IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0
ZUJyYW5kKTsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsK
QEAgLTMzMyw2ICszNTMsNyBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogICAgIG1fc3R1Yklu
Zm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLmJy
YW5kR1BSID0gYnJhbmQucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0g
YmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFn
R1BSKCk7CkBAIC0zNDMsMTYgKzM2NCwxOSBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogdm9p
ZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93
UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAg
IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJs
ZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRo
LCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
CiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0g
ICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91
dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93
UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0
dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2Iy
NTUxOTU1NDhiMGYyZWI2NTEuLmI2OTA4Nzg1NzY0MzhkOTdkOTk0MzBhYzYzZDkxN2JjMmVjOTNm
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBT
dHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51
bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdDsKIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewogcHJvdGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBD
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycyk7CiAgICAgCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBj
bGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29k
ZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogbV9zdHViSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2Rv
bmU7CkBAIC03Nyw4ICs3OCw4IEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAg
IEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENv
ZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVibGljOgog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CkBAIC0xMDEsMTMg
KzEwMiwxMyBAQCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07
CiAKLWNsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7
CitjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogcHVibGljOgogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNz
VHlwZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImKTsKIApAQCAtMTE1LDI2ICsxMTYsMjYgQEAgY2xhc3MgSklUR2V0
QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBib29sIG1faXNM
ZW5ndGhBY2Nlc3M7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBw
dWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhp
c1JlZ3MpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFs
dWVSZWdzIHRoaXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRQdXRCeUlkR2VuZXJh
dG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkK
ICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAg
ICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzIGJhc2UsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsMTQgKzE0NiwxNCBA
QCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Igewog
ICAgIFB1dEtpbmQgbV9wdXRLaW5kOwogfTsKIAotY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5n
IEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVREZWxCeVZh
bEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVC
bG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNv
bnN0CiAgICAgewpAQCAtMTcwLDE0ICsxNzEsMTQgQEAgY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0
b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklURGVsQnlJZEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVREZWxC
eUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklU
RGVsQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBD
b2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQ
UlJlZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgp
IGNvbnN0CiAgICAgewpAQCAtMTk1LDQyICsxOTYsNTAgQEAgY2xhc3MgSklURGVsQnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRJbkJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRJbkJ5SWRHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklU
SW5CeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUs
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVy
YXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHB1
YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiAgICAgSklU
SW5zdGFuY2VPZkdlbmVyYXRvcigpIHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAgICBHUFJS
ZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyLAorICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKKyAg
ICAgICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHByb3RvdHlw
ZUlzS25vd25PYmplY3QgPSBmYWxzZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJik7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5p
c1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisK
ICAgICB2b2lkIGZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1
ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKIAogcHJpdmF0ZToKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBtX2p1bXA7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3Rh
cnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9
OwogCi1jbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yOwogcHVibGljOgogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjUxLDE0ICsyNjAsMTQgQEAg
Y2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwog
fTsKIAotY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFz
ZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRU
eXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKaW5kZXggZTc5Y2QzNmVmNTdkN2JkY2VjZTE3NjhkMDU4OGFmZWVkODg4NTAxNS4u
MjhhNjQzMzdlMmYwOGY1ZjIwYWRhNzM3YmI3NmJjYjQ3MzYyMjhmMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0
TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlN
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAg
ICBzd2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHJldHVy
biBlbWl0SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJl
dHVybiBlbWl0SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZv
KTsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1
cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9h
ZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRD
b250aWd1b3VzOgotICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3Vy
cmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQXJyYXlT
dG9yYWdlOgotICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3Ry
dWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1
cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0xMjgsNiArMTI4LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0
IEZ1bmN0CiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRh
dGVUb3BDYWxsRnJhbWUoKTsKKyAgICBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICBleGNlcHRp
b25DaGVjaygpOworfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gZnVuY3Rpb24pCiB7CkBAIC0xNTcsNiArMTY0LDE2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1
ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVuY3Rpb24s
IFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1
cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBNZXRhZGF0YT4KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjph
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1l
dGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5j
dGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxODgsMTkgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgTWV0YWRhdGE+CitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwg
QWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1ZUdQUjIs
IHJldHVyblZhbHVlR1BSKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCBy
ZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlu
a1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
ciwgVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3du
Q2VsbChyZWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
YmQ1NWEzZDA1MTZkNDZiNjdhZTU5N2I2YzNhNGY1ODdiNWZkZDczMC4uNDVhMDc1MWM5NmM2YTJh
Y2U4YjY0ZmYwNGYzNDkwM2NkZDFmNzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC0xNjQsMTMgKzE2NCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0
YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAg
ICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdU
NSwKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQo
Z2VuKTsKICAgICAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0xODYsNyAr
MTkxLDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VPZkdlbmVy
YXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIs
IHJlZ1QxKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAg
ICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+KEFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAgIH0g
ZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0
aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzMxLDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlz
dCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFy
cmF5TW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JB
cnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIp
OwogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkp
KSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsxNzQ2LDEz
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8q
IGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1
ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhl
ZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0
aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBi
eVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7Cisg
ICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5R2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxS
ZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0
clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE3NjksMTEgKzE3ODYsMTIgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMg
bGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVt
aXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7Cisg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3Ry
dWN0aW9uLCBtb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIAogICAgIG1vdmUoVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogCi0gICAg
YWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBA
IC0xNzk5LDcgKzE4MTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YnlWYWxJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248
ZGVjbHR5cGUob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRz
dCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVn
VDEsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZh
bEluZm8pOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25J
bmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25J
bmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA4ZGIzNTll
YmQ4Y2QwNTY2OTczYjg2M2M0ODY3NDFhN2ZhZTIyNDVlLi40ZDc0MTI2YmUxZTNkZTQzMGQzYTZk
OWNiN2ZkZGI2ZGM4NmY3ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCkBAIC0xNjIsMTMgKzE2MiwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAg
ICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICBJbnZh
bGlkR1BSUmVnLAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0U3RvcmVC
b29sKGRzdCwgcmVnVDApOwpAQCAtMTE4Myw3ICsxMTg1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRy
ZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxp
a2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0
TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7
CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudElu
c3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xMTk4LDcg
KzEyMDAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywg
cGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFz
X2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmlu
ZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwog
ICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRk
cmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlHZW5lcmljKSk7CiB9CiAKQEAgLTEyMzQsNyArMTIzNiw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVy
IHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5
cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMigxKSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNjAzZjkzYTlhZmYy
MWQ5ZGQ0YjFiYjQ5Nzk5YzljMmEzYWNmYzU3Li4xNmJkYTA5MWIwNTNjMTAzOWRkMzVlY2E3NTEx
YTRhYjc5OGViNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKQEAgLTEwMDIsNyArMTAwMiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAg
IGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8g
RG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsK
KyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGJ5VmFs
SW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwog
ICAgIH0KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9
CkBAIC0xMDk0LDcgKzEwOTcsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAo
cmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0
IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7
CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZh
bEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVj
dFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbElu
Zm8sIGVjbWFNb2RlKSk7CkBAIC0xMjc4LDcgKzEyODQsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCoKICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6
R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAg
ICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5
UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNo
YXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3Rp
UGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERS
RVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29w
ZS5yZWxlYXNlKCk7CkBAIC0yNTY3LDcgKzI1NzYsMTEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAo
SlMKICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAg
ICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAg
ICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyks
IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNz
KFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5R2VuZXJpYyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjQ0NjdlOWEyNWUxNDc3
ZTFlYzA2MzVkNDA5NzU0ZDhlNzUzOTJlZi4uZDE3MmVkZjExN2Y3YTgzMWFlYzczZTllNGRkMGY0
YTYzMzQ1ZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKQEAgLTY5LDEyICs2OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICAgICAgSklUR2V0
QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3Vs
dFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZXN1bHRSZWdzLCByZWdUMik7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudElu
dChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMy
ID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNsb3dD
YXNlKCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRS
ZWdzKTsKQEAgLTkzLDggKzk2LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlW
YWxJbmRleDsKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxz
W21fZ2V0QnlWYWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTExOCw3ICsxMjEsMTEg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHBy
b2ZpbGUpLCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAg
ICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsK
QEAgLTEzOCw3ICsxNDUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC0xNTcsOSArMTY1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5l
cmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAg
IC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0
aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBj
bGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3By
ZXBhcmVDYWxsIik7CkBAIC0xODIsMTAgKzE5MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdl
dEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIp
LCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRk
U2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdz
KTsKQEAgLTIwMSw4ICsyMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4OworICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgr
K107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCkBAIC0yMjYsNyArMjM3LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIp
OwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
Ci0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSht
ZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjQ1LDcgKzI2MCw4IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVf
cHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0
KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5ICsyNzks
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFp
bCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBv
ZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAg
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKQEAgLTI4NSwxMCArMzAyLDEz
IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2VHUFIsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCByZWdUMik7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAg
ICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdl
bik7CiAKICAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBlbmQgb2Yg
c2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCkBAIC0zMDIs
OCArMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKIHsKICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsr
bV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJ
bmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTMyOCw5ICszNDcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxk
ZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVz
LCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXpl
KT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAj
ZW5kaWYKKwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKQEAgLTM0NiwxMCArMzcwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1Nyw4ICszODQsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudAogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNb
bV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0lu
ZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRl
QnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpA
QCAtMzgzLDcgKzQwOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6
dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgZWxz
ZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9w
dGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCkBAIC00MTUsOCArNDQ1LDE0IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogICAgIFBhdGNoYWJs
ZUp1bXAgbm90SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0ludGVnZXJDb25zdGFudCkg
ewotICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOwot
ICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGF1dG8gaXNJbnQz
MiA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEp
OworICAgICAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICB9CiAgICAgICAg
IC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgICAgIHplcm9FeHRlbmQzMlRv
V29yZChyZWdUMSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwyMyArNDY4LDI0IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAg
ICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8p
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBD
UkFTSCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd0Nhc2UoYmFk
VHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dD
YXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC00NTcsNyArNDk0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCitKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhp
bmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpA
QCAtNDY1LDcgKzUwMiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1
b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogICAgIAogICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgICAgICAgICBmYXJK
dW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAgICAKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1w
IG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdU
MiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MTUsNyArNTYxLDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKQEAgLTUyMyw3ICs1NjksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAKICAg
ICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBi
cmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwor
ICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBl
SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVj
dFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9y
YWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7
CiAKQEAgLTU2OCw4ICs2MjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5
VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdUMSk7CiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRl
Y29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5
TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0
aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2Ug
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1
Y2UgY29kZSBzaXplLgpAQCAtNTgwLDcgKzYzNSwxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQs
CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgZ2VuLnNsb3dQYXRoSnVt
cCgpLmxpbmsodGhpcyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7
CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4u
c3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9u
PGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFy
Z0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVn
VDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgp
KTsKIApAQCAtNjM4LDggKzY5OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBhdXRvKiBvcGVy
YXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBp
c0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoaXNEaXJl
Y3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcyMSw4IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZt
KTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5ICs3NDAsMTAg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbElu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNl
CisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsKQEAgLTY5Niw4ICs3NjIsMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1w
KCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIFBhdGNoYWJsZUp1bXAgZmFz
dFBhdGhKbXA7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJ
bmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAg
ICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgICAgICBhZGRTbG93Q2FzZShm
YXN0UGF0aEptcCk7CisgICAgfQogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAg
IApAQCAtNzQzLDcgKzgxNCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxs
IGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcgKzgz
Niw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKQEAgLTc3OSw5ICs4NTUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5m
b0dQUiwgcHV0S2luZEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAot
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0
byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRo
ZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRk
cmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBP
cGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25h
bWVfcHJlcGFyZUNhbGwiKTsKQEAgLTg0NiwxMSArOTIzLDE0IEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
IG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVl
UmVncyhyZWdUMCkpOwpAQCAtODk4LDE1ICs5NzgsMTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2wKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBl
Y21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJl
Z1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJl
Z1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTkx
OCw3ICsxMDAxLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwpAQCAtOTM1LDkgKzEwMTksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8K
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRo
ZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNs
aWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVw
YXJlQ2FsbCIpOwpAQCAtOTU2LDEwICsxMDQxLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93
Q2FzZSgpOwogICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihy
ZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTEwMDgsMTUgKzEwOTYsMTggQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFN
b2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICBl
bHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChy
ZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwot
CiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCkBAIC0xMDI4LDcgKzExMTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwog
CiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkgKzExMzcsMTAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRh
aWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8g
b2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAg
ICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xMDY4LDggKzExNjEsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFj
Y2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRS
ZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTExMTAsNyArMTIwMywxMSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9w
dGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNh
bGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsxMjMwLDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAK
ICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywg
cmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
Z2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTc2LDcgKzEyNzMsMTEgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWREaXJl
Y3RPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMDgsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlw
ZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1Qx
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtMTIzMyw4ICsxMzM0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhp
cy5hcHBlbmQoZ2VuKTsKQEAgLTEyNzUsNyArMTM3NiwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCBy
ZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjk0LDcgKzEzOTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAK
LSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MjsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzExLDkgKzE0MTcsMTAgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0
bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0
byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1w
KEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xMzU0LDcgKzE0NjEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0
aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAog
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAg
LTEzNzMsNyArMTQ4NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKQEAgLTEzOTIsOSArMTUwNCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBh
cmVDYQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRo
aXNHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5
IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8g
dGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1MzEsMTAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRL
aW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNDY1LDcgKzE1NzcsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChnZW4u
c2xvd1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogCkBAIC0xNDgxLDcgKzE1OTcsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MTcsMTAgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVH
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRp
cmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5y
ZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1
dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjM5LDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJ
VEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU2NCw3ICsxNjgyLDExIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9
IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJl
dHVyblZhbHVlR1BSKTsKQEAgLTI3NTQsOCArMjg3Niw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2lu
ZCwKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwg
ZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1QxLCBlY21h
TW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI3NjUsNyArMjg4NywxMyBA
QCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5
dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5
IHByZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJl
bG9hZCB0aGUgdGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Cisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRl
Y2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0Jp
dHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZv
KCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0y
ODE3LDI5ICsyOTQ1LDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAgICBzd2l0Y2gg
KGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJs
ZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERv
dWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAg
IG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdl
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJy
YXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBu
ZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5cGVGb3JKSVRB
cnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQotICAgICAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFy
cmF5IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJyYXkgLyBCaWdV
aW50NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAgQVNTRVJUKGlz
RmxvYXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRBcnJh
eVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0
ciwgdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg2Niw4ICsy
OTk0LDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBtX2NvZGVCbG9j
aywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAgICAgIkJhc2Vs
aW5lIHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgp
KTsKICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFk
VHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
R2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklU
T3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVj
aWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KQEAgLTI5MDYsOCArMzA0MCwxMyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUmV0dXJuQQogICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNh
Y2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHBy
b3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jayku
ZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5z
dHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hK
dW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJl
c3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1
cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0
ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAg
ICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA4MywyMCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5
VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdp
dGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVw
IiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0
eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1Yklu
Zm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRy
VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlW
YWxHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9
IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Q29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQog
Ly8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlv
biB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4
cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwg
UmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0
ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFs
RGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJ
ZGVudGlmaWVyKTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0
ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTY4LDcgKzMxMTIsMTYgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkp
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBl
ID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsK
KyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJl
Y3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJs
ZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworCiAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0
Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0
eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7
CiAgICAgbG9hZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQp
LCBmcFJlZ1QwKTsKQEAgLTI5NzcsNyArMzEzMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAg
ICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1
b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4
aW5nVHlwZSBleHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3Vz
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk5NSw3ICszMTQ4LDE2
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAK
LSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVz
dGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAg
ICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVz
dGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRy
VGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGlu
ZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVk
SW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJm
bHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJbmRleChz
Y3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDA0LDcgKzMxNjYs
NyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAK
LUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5
U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVy
SUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzAyMyw3ICszMTg1LDE2IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMy
KC1BcnJheVN0b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJy
YXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJ
bmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihCZWxvd09y
RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBB
cnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mo
JmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRy
dXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkp
OworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUs
IHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0
b3JhZ2VTaGFwZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3JhZ2U6OnZl
Y3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMzAzNSw3ICszMjA2LDcgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50
VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMDYwLDcgKzMyMzEs
MTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVj
dFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZv
clR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRk
cmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJU
YWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFy
bHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
ZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7
CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJl
bG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZC
b3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKQEAgLTMxMTEsNyArMzI5Miw3IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMxMzYs
NyArMzMxNywxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8g
aXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0z
Mih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJz
b2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlw
ZSkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUo
dHlwZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJh
bmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2Zp
bGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIyYzc3MDQy
ODlhYmIwODJmOWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMGUzYmU2YWY4NDJjZTlkMDI2MjEzNWRl
ZDU2YzliMGFlYmRlMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRH
UFIoKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRh
Z0dQUigpKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAot
ICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNlUmVncywg
cmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
ZGVsQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQ
UigpKTsKIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAg
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1
bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTI1Nyw4
ICsyNTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWws
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcp
OwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJl
Z3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywgSW52YWxp
ZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CkBA
IC0zOTMsOCArMzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVn
cywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJl
Z3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVn
cywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxp
ZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBl
bmQoZ2VuKTsKQEAgLTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1v
ZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsK
ICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZh
bChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFs
KGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91
c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAtNTExLDcg
KzUxMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6
SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlw
ZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwpAQCAtNTIwLDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0Nv
bnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5mbyk7CiAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKENvbnRpZ3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNTcyLDcgKzU3Myw3IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLUpJ
VDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
QEAgLTU4MSw2ICs1ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbEluZm8pOwogICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihB
cnJheVN0b3JhZ2VTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNjYwLDggKzY2Miw4IEBAIHZv
aWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVn
VDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vz
c1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC03MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5
cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc0OCw4ICs3
NTAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC03OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpLCBJbnZh
bGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5k
KGdlbik7CkBAIC04MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9j
b2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcs
CiAgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1
dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVEluQnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywg
KmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9pbkJ5SWRz
LmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5o
CmluZGV4IDg4MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2Y2RmYWIuLjVhNTcyOGJi
ZTg3M2ZmNDY5MmJlNDc4NjhiYjVjNzAyOGJiZTRiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorI2lmIFVTRShKU1ZBTFVF
NjQpCit1c2luZyBTdHJ1Y3R1cmVJRCA9IHVpbnQzMl90OworI2Vsc2UKK3VzaW5nIFN0cnVjdHVy
ZUlEID0gU3RydWN0dXJlKjsKKyNlbmRpZgorCitjbGFzcyBBY2Nlc3NDYXNlOworCiAvLyBUaGlz
IGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFuZCBhbHNvIHRoZSBjbGFz
cyB5b3Ugd2FudAogLy8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkgaWYgeW91IGhhdmUgYSByb3V0
aW5lIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJvbSB0aGUgR0MuIElmIGluIGRv
dWJ0LCB1c2Ugb25lIG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVzLiBCdXQKQEAgLTk4LDYgKzEw
Niw5IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lIHsKICAgICAvLyBkZXN0cm95ZWQuCiAgICAgdmly
dHVhbCBib29sIHZpc2l0V2VhayhWTSYpOwogCisgICAgdmlydHVhbCBjb25zdCBGaXhlZFZlY3Rv
cjxSZWZQdHI8QWNjZXNzQ2FzZT4+KiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIHZpcnR1YWwgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+KiB3ZWFrUmVmZXJlbmNl
cygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2
ODYyNzNkZGE4MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4uNDRjZTZmM2JiNDU0NjMwNDk2NmM1
YWQ0N2ViYjRjNWYwMzg5ODM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAi
Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENv
ZGVPcmlnaW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxs
KiBvd25lciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8s
IGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJy
YXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShj
b2RlUmVmLCB2bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSwgeyB9
LCB7IH0pCiAgICAgLCBtX3ZhcmlhbnRzKGNhc2VzLnNpemUoKSkKICAgICAsIG1fZmFzdENvdW50
cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggOTA1ZjhkN2YyYWZiZjViMDA2MWVmM2Q3NWY3ZjY2NmViZDFkY2EwNC4uNzQ0ZTJh
ZWYzODRiZWI1YTMxNTIwMGRiM2NlZjIyOTQxYjU0ZjU2YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC03MSw4ICs3MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBj
YWxsKQorc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRh
cmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQog
eworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJldHVybiBzdHVi
SW5mby5tX3Nsb3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFnPigpOworICAgIENv
ZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCA9IHN0dWJJbmZvLm1fc2xvd1Bh
dGhDYWxsTG9jYXRpb247CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgaWYgKGNvZGVCbG9jay0+
aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAgICBGdW5jdGlvblB0cjxKSVRU
aHVua1B0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PEpJVFRo
dW5rUHRyVGFnPihjYWxsKTsKQEAgLTEwNSw2ICsxMDgsMTUgQEAgdm9pZCBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRl
cm5hbFAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbCwgbmV3Q2FsbGVlRnVu
Y3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0KIAorc3RhdGljIHZvaWQgcmVw
YXRjaFNsb3dQYXRoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9u
KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAgc3R1Yklu
Zm8ubV9zbG93T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9u
UHRyVGFnPigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9jYXRpb24sIG5ld0Nh
bGxlZUZ1bmN0aW9uKTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7CiAgICAgR2l2ZVVw
T25DYWNoZSwKICAgICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMDksNyArMjIxLDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKgogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFz
Q2VsbCgpOwogICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5k
OjpQcml2YXRlTmFtZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCi0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQ
dHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJheShiYXNl
Q2VsbCkpIHsKQEAgLTIxOSw3ICsyMzEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNz
OjpnZW5lcmF0ZUFycmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxs
KSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rp
b24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEFycmF5TGVu
Z3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxh
dGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOSwxMSBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6
Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VDZWxsKSkgewotICAg
ICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0
ICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5z
ZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmlu
Z0xlbmd0aChzdHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRD
b2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChzdHViSW5mbyk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5j
dGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24o
a2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0
aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRl
cjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTUsMTEgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQog
ICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnQoKQogICAgICAgICAgICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVy
YXRlU2VsZlByb3BlcnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zm
c2V0KCkpOwogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAg
ICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlh
dGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmlu
aXRHZXRCeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9m
ZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0MzcsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFj
ZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1
ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29k
ZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5m
bywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkp
KTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNv
ZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NTEsNyBA
QCB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBr
aW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRC
eUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOwogfQogCiAKQEAgLTUy
OSw3ICs1NDEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogICAgICAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVs
bCh2bSksIElkZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTU0MCw3ICs1NTIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHRyeUNhY2hlQXJyYXlHZXRC
eVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZSwgaW5kZXgsIHN0dWJJbmZvKSA9PSBH
aXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmlj
KTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVy
YXRpb25HZXRCeVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVy
aWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1
dEtpbmQpIC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2
LDcgKzY0OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5
ICYmIChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5k
ID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
bmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAg
aWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsK
ICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5n
UHJvcGVydHkpIHsKQEAgLTY1OCw3ICs2NzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawog
ICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nl
c3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBz
bG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENv
ZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0
QnlJZFNlbGZQYXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFz
ZSgpID09IGJhc2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFw
cHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UobG9j
a2VyLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTMsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jawogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
KHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5B
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODE1LDcg
KzgyNyw3IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5
TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2lu
ZCkpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFw
cHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNs
b3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVs
QnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTg0Niw3ICs4NTgsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvYwogICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkK
ICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBu
ZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKICAgICAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC04NzQsNyArODg2
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0
ZWRTb21lQ29kZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgp
KTsKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9s
ZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5
TmFtZS51aWQoKSkpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTg5MSw5ICs5MDMsOSBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAg
IGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1v
ZGUpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJl
cGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3Qt
PnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAg
ICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlW
YWxHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKICAgICB9CiB9CiAKQEAgLTkz
Nyw3ICs5NDksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAg
ICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwg
c2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9j
aywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0K
QEAgLTk4NCw3ICs5OTYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5
SUQoCiAKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAorICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZSgKICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5I
aXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQgPyBzbG90LmNh
Y2hlZE9mZnNldCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5m
by5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2Rl
OjpzdHJpY3QoKSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKQEAgLTk5Myw3ICsx
MDA1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTAwNyw3ICsxMDE5LDcgQEAgdm9pZCByZXBhdGNoSW5C
eUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBK
U09iamVjdCoKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VP
YmplY3QsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBP
bkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWQpOwog
fQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgK
QEAgLTEwMzIsNyArMTA0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNo
ZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
Q2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0dXJlKTsKKyAg
ICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1By
aXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOwogCiAgICAgICAg
IHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsK
IApAQCAtMTA0MCw3ICsxMDUyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJp
dmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwg
aXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMDU0LDcgKzEwNjYsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jawogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNo
ZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBi
cmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5l
cmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJy
YW5kKApAQCAtMTA5MSw3ICsxMTAzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsK
ICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBv
bGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUs
IG5ld1N0cnVjdHVyZSk7CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0
cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRB
Y2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJp
Y3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTEwOTksNyArMTExMSw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBv
bGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5l
Q29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTEzLDcg
KzExMjUsNyBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUg
c3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJy
YW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBi
cmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMp
OwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApAQCAt
MTEzMyw3ICsxMTQ1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFu
Y2VPZigKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2Vs
bCgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0p
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAg
UmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKICAgICAgICAg
aWYgKHByb3RvdHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4odm0sIHZhbHVlKSkgewpAQCAtMTE2NywxMCArMTE3OSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
Okluc3RhbmNlT2ZSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50
aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQuY29kZSgpKTsKLQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKAot
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKLSAgICAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKQEAgLTExODUsNyArMTE5NCw3IEBAIHZvaWQgcmVwYXRjaEluc3RhbmNlT2YoCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIGlmICh0cnlD
YWNoZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVlVmFsdWUsIHByb3Rv
dHlwZVZhbHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVy
aWMpOwogfQogCiBzdGF0aWMgdm9pZCBsaW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYg
Y2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
IGNvZGVSZWYpCkBAIC0xMjAyLDcgKzEyMTEsNyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihW
TSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5r
Rm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIGxpbmtTbG93UGF0aFRvKHZtLCBjYWxsTGlua0lu
Zm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVK
SVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5r
LCB2bSwgeyB9LCB7IH0pKTsKIH0KIAogc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihK
U0NlbGwqIGNhbGxlZSkKQEAgLTEzMjAsNyArMTMyOSw3IEBAIHN0YXRpYyB2b2lkIGxpbmtWaXJ0
dWFsRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExp
bmtJCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZp
cnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAgICByZXZl
cnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZv
LnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywg
dm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSwgeyB9LCB7IH0pKTsKICAgICBjYWxsTGlua0luZm8u
c2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0ICsxNjUwLDE0IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsKLSAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Ci0gICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgSW5s
aW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsK
IH0KIAogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgm
b3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTsKLSAgICBGdW5jdGlvblR5cGUg
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFk
UHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24p
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0
aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQo
Y29kZUJsb2NrLCBzdHViSW5mbykuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25U
eXBlIG9wdGltaXplZEZ1bmN0aW9uOwogICAgIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpAQCAtMTY2NSw0NSArMTY3NCw0MSBAQCB2b2lkIHJl
c2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RO
b25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rp
b24pOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wdGltaXplZEZ1bmN0aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJl
c2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgRGVsQnlLaW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwp
Ci0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOworICAgICAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVs
ZXRlQnlWYWxPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwotfQotCi1zdGF0aWMgdm9p
ZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQotewotICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Cisg
ICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29k
ZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHVi
QXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJs
b2NrLCBzdHViSW5mbyk7CiB9CiAKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbykKK3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVzZXRQYXRjaGFibGVKdW1w
KHN0dWJJbmZvKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldENo
ZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0
aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwor
ICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1Yklu
Zm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21J
Q0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBj
YWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDMxMzc5ZGM0ZTVhOWRj
MmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1MWEuLjNhMTlmZDM2NTQ5ZDFhODQ4MDlmOTRkYWRhMmRm
YmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC02NSw3ICs2
NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdl
dEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVs
QnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0
SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldENo
ZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJl
c2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpT
SW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1
bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmlu
ZGV4IGM5ZGU2YThhMzhjMTFiNjkzNzYxOWMxZTU5NGFkMTQ1MWIzZjFhOTkuLmU3Y2RjZGEzNjMz
ODRkMzQ1YzgxYjQ4MmRhMjdiN2QxZGMyZWNkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM4LDYgKzUzOCw4IEBAIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZm
ZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVzZVRvcExldmVsQXdh
aXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRoZSBhd2FpdCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2
ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYoQm9vbCwgdmVyYm9zZUV4ZWN1dGFibGVQb29sQWxs
b2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVk
SUMsIGlzQVJNNjQoKSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VTaGFyZWRJ
Q0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogCiAKIGVudW0gT3B0
aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSURUYWJsZS5oCmluZGV4IDhkMDdhMjc1NzgzMzQwYmVhNGUxMGRkYTQ5MTYzZDEzYjQ5
ODNmMTIuLmI4ZGQ0Y2JkNWQyODEwMTU3ZjlhOTliZDljYjBmMDU1MWEzNmQ5YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKICNpZiBVU0Uo
SlNWQUxVRTY0KQotdHlwZWRlZiB1aW50MzJfdCBTdHJ1Y3R1cmVJRDsKK3VzaW5nIFN0cnVjdHVy
ZUlEID0gdWludDMyX3Q7CiAKIGlubGluZSBTdHJ1Y3R1cmVJRCBudWtlZFN0cnVjdHVyZUlEQml0
KCkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIFN0cnVjdHVyZUlEIGRlY29udGFtaW5hdGUo
U3RydWN0dXJlSUQgaWQpCiAgICAgcmV0dXJuIGlkICYgfm51a2VkU3RydWN0dXJlSURCaXQoKTsK
IH0KICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotdHlwZWRlZiBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZUlEOwordXNpbmcgU3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmUqOwogCiBpbmxpbmUgU3RydWN0
dXJlSUQgbnVrZWRTdHJ1Y3R1cmVJREJpdCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKaW5kZXggYmVhYzg2ZWIwZWI4Y2Y1MTM4ZWZiZmRjMzgyMzQ3NDJiOGNiZGUxMS4uNGMx
YmU0MTgxZmQyNzk4MzQ4MGZiYjk1YjczZTU0MTVjN2Y0YzZmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdn
cmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2Jq
ZWN0LmgiCkBAIC01NjcsNiArNTY4LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAjZW5kaWYg
Ly8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9s
aW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1w
b2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIG1fc2hhcmVkSklUU3R1YnMgPSBt
YWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJTZXQ+KCk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiAKQEAgLTY1NSw2ICs2NTcsMTAgQEAgVk06On5WTSgpCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIFZNTWFsbG9j
OjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUKQor
ICAgIG1fc2hhcmVkSklUU3R1YnMgPSBudWxscHRyOworI2VuZGlmCiB9CiAKIHZvaWQgVk06OnBy
aW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2b2lkKiBhcmd1bWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDk4YTc1YzZmOGI4ZGIyNzlkMDI2ZjMyZWJmM2JiY2M1
NDFiYWIwZjkuLjc0MjJiOWY2NzRlMzVkYzA1MTE0ZDdlNDgwMzljZWJhZjA2MTI2YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc1LDYgKzE3NSw3IEBAIGNsYXNzIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3Mg
U2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7CiBjbGFzcyBTY3JpcHRFeGVj
dXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hl
OwpAQCAtODQ2LDExICs4NDcsMTMgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUo
SklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJzOwogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJU3R1YihUaHVua0dlbmVyYXRv
cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJTZXQ+IG1fc2hhcmVkSklUU3R1
YnM7CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlmCisKICAgICBOYXRp
dmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0
aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVGdW5j
dGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430406</attachid>
            <date>2021-06-02 14:32:38 -0700</date>
            <delta_ts>2021-06-02 17:40:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210602143237.patch</filename>
            <type>text/plain</type>
            <size>427217</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
Mzc3OTI5MDRlNmFkYmExZTIwZGFkZDVjNDBiZTIyZjU3YzA4YzEwLi40MjM5YTQ2ZmEyZjliODhh
NmRlZjFmZDA1NjJlNTRjZDIyNzk5ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNzMgQEAKKzIwMjEtMDYtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVm
ZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0aW9uT2YpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVh
dGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjplcXVhbEluU2hhcmluZyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNl
OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6QWNjZXNzQ2FzZSk6Cisg
ICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFy
ZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6OktleSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0
dWJTZXQ6Okhhc2g6OktleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXk6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hh
cmVkSklUU3R1YlNldDo6SGFzaDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHVi
U2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9yOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNo
YXJlZEpJVFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjpoYXNoKToKKyAgICAgICAgKEpTQzo6
U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6YWRkKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNl
dDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6ZmluZCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnlWYWxJbmZvLmg6CisgICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6c2V0
VXApOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbik6Cisg
ICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6b2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQpOgorICAg
ICAgICAoSlNDOjpCeVZhbEluZm86Om9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZVNo
YXJlZElDIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5saW5lQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2NyYXRjaFJlZ2lzdGVyKToK
KyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNK
dW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVt
cEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVB
Y2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAg
KiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQ6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0OjpvcGVyYXRvciE9KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5z
dGFsbFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1
Y2NlZWQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2
ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhp
Y0FjY2Vzczo6YWRkQ2FzZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjp2aXNp
dFdlYWsgY29uc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaDoKKyAgICAgICAgKEpT
Qzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGUpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5YWJs
ZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24pOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnBhdGNoYWJsZUp1bXApOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
OjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzbG93UGF0aElDQ2FsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURl
bGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5C
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZh
dGVOYW1lQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxs
T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxTZXRSZXN1
bHQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgICogZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6
U2xvd1BhdGhDYWxsQ29udGV4dCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29u
dGV4dDo6a2V5V2l0aFRhcmdldCBjb25zdCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhD
YWxsQ29udGV4dDo6bWFrZUNhbGwpOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuaDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmR1
bXAgY29uc3QpOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuaDoKKyAgICAgICAg
KEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OlNsb3dQYXRoQ2FsbEtleSk6CisgICAgICAgIChK
U0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjppbmRpcmVjdE9mZnNldCBjb25zdCk6CisgICAgICAg
IChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5Ojp3aXRoQ2FsbFRhcmdldCk6CisgICAgICAgIChK
U0M6OkZUTDo6U2xvd1BhdGhDYWxsS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpTbG93UGF0aENhbGxLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAqIGZ0bC9GVExU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjplbWl0VmlydHVhbENhbGwpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMu
aDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVn
QXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0
cmFSZWdBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1
c2hOb25BcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFk
ZEdQUkFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRk
R1BSRXh0cmFBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246
OmFkZFN0YWNrQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9u
OjphZGRQb2tlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpjYWxjdWxhdGVQb2tlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlRm9yQXJndW1lbnQpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0YWNrQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkND
YWxsSGVscGVyczo6bWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnBva2VBcmd1bWVudHNBbGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
dGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
Pjo6dmFsdWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRW50
cnlJbXBsKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwp
OgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OkdDQXdhcmVKSVRTdHViUm91dGluZSk6CisgICAgICAg
IChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6bWFrZUdDQXdhcmUpOgorICAgICAgICAoSlND
OjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU6OkFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZSk6
CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZD
b3VudCk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtp
bmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2Vw
dGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU6
OmtleXMgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU6Ondl
YWtSZWZlcmVuY2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAg
ICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjp1c2VTaGFyZWRJ
Qyk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAg
ICAgKEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdl
bmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRX
aXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAg
ICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpK
SVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdl
bmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VP
ZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVElu
c3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJ
bnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFs
R2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlW
YWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToK
KyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6
SklUUHV0QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFs
R2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5
SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklU
R2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRG
b3JBcnJheU1vZGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5k
ZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
cHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9w
dXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3df
b3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90
cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lk
X3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91Ymxl
TG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlw
ZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGpp
dC9KSVRTdHViUm91dGluZS5oOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAg
ICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNs
b3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlND
OjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJ
RCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAo
SlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNl
dFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgor
ICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNo
SW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6
bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpT
Qzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChK
U0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAgICAg
ICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0U2V0
UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRQYXRjaGFibGVKdW1wKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xp
c3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06
On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA1LTMwICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBVbmNoZWNrZWRDb25kaXRpb24g
LyBVbmNoZWNrZWRMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oCmluZGV4IGExNDM5NDg1ZmRjNjE1YTQ2NTJmMDE1NDIzMGExNWYyNDdkMDAzOTMuLjc5
ZWVmMmMyMDY1ZGQxNzM1YjhmNDIwM2I3NzNkOGM0OWY1NmE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBAIC0yMzQsOCArMjM0LDggQEAgY2xh
c3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBDb2RlTG9jYXRp
b25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxsIGNhbGwpCiAgICAgewotICAgICAgICBBU1NFUlQo
Y2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2FibGUpKTsKLSAgICAgICAgQVNTRVJUKCFjYWxsLmlz
RmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAgICAgIC8vIEFTU0VSVChjYWxsLmlzRmxhZ1NldChD
YWxsOjpMaW5rYWJsZSkpOworICAgICAgICAvLyBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6
Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8dGFnPihnZXRMaW5rZXJB
ZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKSkpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVhYTI0Mzk2NDNhZGExZmMwMzRjYzc0MWQuLmU1YjBi
MmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2VjYjEwNGMxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTIy
MCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3Jv
QXNzZW1ibGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1
cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7
CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRh
Zyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklUQ2FnZSgpIHx8IGNhbGxlclR5cGUo
dGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywg
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgcmV0
dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAgICAgY2FsbChkYXRhVGVtcFJl
Z2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGwo
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0
YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICByZXR1cm4gY2Fs
bChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIs
IHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGxPcGVyYXRpb24oY29u
c3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVyYXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMTJhOTdhMmQyNWQ1ZWJk
MWU5OWE1ZTVhYzI5YzIyODkzYmE4MzhmOS4uMjZmMWE1YTdiZjEzOWUyNGQwOTJhNTRmZTJmODUy
OGQ5ZGY3Yzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJF
TEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4o
bmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlm
aWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZp
ZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNz
Q2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9s
ZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRp
Zmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0
LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRp
ZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRl
bnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5k
KAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwg
bmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZz
ZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nh
c2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJv
bVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAg
IHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09i
amVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRp
dGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0
ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05NjQsNiArOTY0LDggQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYg
KHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9
IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiArMTA2Myw4IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3Mp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAg
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsxMTQ4LDggQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
c3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAg
ICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxs
b2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEyMTEsOCBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAg
ICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxv
Y2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEz
MTcsNiArMTMyNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9w
ZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAg
ICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7
CkBAIC0xNDE3LDcgKzE0MjcsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5
UHJvdG9BY2Nlc3NDaGFpbik7CiAKICAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFz
c3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFi
aWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKLSAgICAgICAgICAgIHN0YXRlLmlu
c3RhbGxXYXRjaHBvaW50KGNvbmRpdGlvbik7CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0
Y2hwb2ludChjb2RlQmxvY2ssIGNvbmRpdGlvbik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCkBAIC0xNDM1LDcgKzE0NDUsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIC8vIFdlIHdpbGwg
ZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2VhayByZWZlcmVuY2UgdGhhdCBpc24ndCBvdGhlcndpc2Ug
bGlzdGVkIGFueXdoZXJlLgogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlv
bi5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMu
YXBwZW5kKFdyaXRlQmFycmllcjxKU0NlbGw+KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpOwor
ICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5hcHBlbmQoc3RydWN0dXJlLT5pZCgpKTsKIAog
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29uZGl0aW9uLm9i
amVjdCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVu
ZCgKQEAgLTE1ODIsNyArMTU5MiwxMiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIC8vIFRoaXMgYWxzbyBkb2Vz
IHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGFuCiAg
ICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNpdGUuCi0gICAgICAgIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZl
UmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+
dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQo
QVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgorICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1Rv
U3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAKICAgICAgICAgYXV0byBy
ZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwgPSBbJl0oQWNjZXNzR2VuZXJhdGlv
blN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBib29sIGNhbGxIYXNSZXR1cm5WYWx1ZSkg
ewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmU7CkBAIC0xNzEyLDYgKzE3Mjcs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgYWNj
ZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xvd1BhdGgodm0sIGppdCk7CisKICAgICAgICAgICAg
IGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAgICAgICAgICAgICAgIGppdC5zZXR1cFJlc3VsdHMo
dmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtMTcy
Myw4ICsxNzM5LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJh
dGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRvbmUubGluaygm
aml0KTsKIAotICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0g
c3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVk
IC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRp
b24pLAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhl
bHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGludCBzdGFja1BvaW50
ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVz
UHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQ
cmVzZXJ2YXRpb247CisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIGJvb2wgY2Fs
bEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIoKTsKICAgICAgICAgICAgIHJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBjYWxsSGFzUmV0dXJuVmFsdWUpOwog
CkBAIC0xODQ1LDcgKzE4NjEsMTQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHNraXBCYXJyaWVyLmFwcGVu
ZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUikpOwogCiAgICAg
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94
eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgIGF1dG8gc3BpbGxT
dGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4
Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNo
YXJlZElDKCkpCisgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChB
Uk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgICAgICBhdXRvIHNwaWxsU3RhdGUg
PSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRp
b25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisKICAgICAgICAgICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkNhbGwg
PSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTg3NSw2ICsxODk4LDggQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVn
aXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGlmIChzdHViSW5mby5t
X3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRj
aEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52YWxpZEdQUlJlZzsKQEAg
LTE5MzMsNiArMTk1OCwxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJh
UmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJl
c2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVz
ZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICAgICAgaWYg
KGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWdp
c3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCiAgICAgICAg
ICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBz
dGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1Rv
UHJlc2VydmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMy
KApAQCAtMjAzMSw2ICsyMDYwLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHVi
SW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIp
OwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5z
aXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24pOwpAQCAtMjIw
Myw2ICsyMjM0LDEwMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKK2Jv
b2wgQWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJpbmcoY29uc3QgQWNjZXNzQ2FzZSYgbGhzLCBjb25z
dCBBY2Nlc3NDYXNlJiByaHMpCit7CisgICAgLy8gV2UgZG8gbm90IGNhcmUgbV9zdGF0ZS4KKyAg
ICAvLyBBbmQgd2Ugc2F5ICJmYWxzZSIgaWYgZWl0aGVyIG9mIHRoZW0gaGF2ZSBtX3BvbHlQcm90
b0FjY2Vzc0NoYWluLgorICAgIGlmIChsaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiB8fCByaHMu
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChs
aHMuYWRkaXRpb25hbFNldCgpIHx8IHJocy5hZGRpdGlvbmFsU2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChsaHMubV90eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fb2Zmc2V0ICE9IHJocy5tX29mZnNldCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV92aWFQcm94eSAhPSByaHMubV92aWFQcm94
eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0KCkg
IT0gcmhzLm1fc3RydWN0dXJlLmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KGxocy5tX2lkZW50aWZpZXIgIT0gcmhzLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChsaHMubV9jb25kaXRpb25TZXQgIT0gcmhzLm1fY29uZGl0aW9uU2V0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGxocy5tX3R5cGUpIHsKKyAgICBj
YXNlIExvYWQ6CisgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNh
c2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVsZXRlTWlzczoKKyAgICBjYXNl
IFJlcGxhY2U6CisgICAgY2FzZSBNaXNzOgorICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2Ug
SW5IaXQ6CisgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBBcnJheUxlbmd0aDoKKyAgICBjYXNl
IFN0cmluZ0xlbmd0aDoKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNl
IFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAg
IGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAgICBj
YXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgor
ICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkU2NvcGVk
QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREaXJlY3RBcmd1bWVudHNMb2FkOgorICAg
IGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OENsYW1wZWRMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDMyTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0
NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6CisgICAgY2FzZSBJbnN0YW5jZU9m
R2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIEdldHRlcjoKKyAgICBj
YXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNldHRlciByZWxpZXMgb24gQ29k
ZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUuCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0dGVyOgorICAgIGNhc2UgQ3Vz
dG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1ZVNldHRlcjoKKyAgICBjYXNl
IEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIC8vIFRoZXkgYXJlIGVtYmVkZGluZyBK
U0dsb2JhbE9iamVjdCB0aGF0IGFyZSBub3QgdGllZCB0byBzaGFyaW5nIEpJVFN0dWJSb3V0aW5l
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0
ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vz
c0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBsaHNkLm1faW50cmluc2ljRnVuY3Rpb24gPT0gcmhz
ZC5tX2ludHJpbnNpY0Z1bmN0aW9uOworICAgIH0KKworICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNl
TG9hZDogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmplY3Qg
PT0gcmhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdAorICAgICAgICAgICAgJiYgbGhzZC5tX21v
ZHVsZUVudmlyb25tZW50ID09IHJoc2QubV9tb2R1bGVFbnZpcm9ubWVudAorICAgICAgICAgICAg
JiYgbGhzZC5tX3Njb3BlT2Zmc2V0ID09IHJoc2QubV9zY29wZU9mZnNldDsKKyAgICB9CisKKyAg
ICBjYXNlIEluc3RhbmNlT2ZIaXQ6CisgICAgY2FzZSBJbnN0YW5jZU9mTWlzczogeworICAgICAg
ICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBh
dXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1
cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdk
NjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uZThjODgyNGM1MGI4MzI1YzVlYTcxOTk1
MzkxN2IyZWI1ODZhNWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTQgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGlu
ZS5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIgogI2luY2x1
ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9ySGFzaC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODMsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9X
SVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8vIFdlIHdpbGwgc29tZXRpbWVzIGJ1
ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBvbHltb3JwaGljQWNjZXNzIG9iamVj
dCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBhbGxvd3MgdXMgdG8gb25seSByZWdl
bmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVmdWxseSkgbW9yZSB0aGFuIG9uZSBu
ZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNlIHsKK2NsYXNzIEFjY2Vzc0Nhc2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNzQ2FzZT4gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwogcHVibGlj
OgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpAQCAtMTQ3LDE5ICsxNTEsMTkgQEAg
Y2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVudHMuLi4pKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCog
b3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0g
aW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJh
bnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBS
ZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hl
Y2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVC
cmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFN0
YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQpAQCAtMjUzLDExICsyNTcsNDEg
QEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjaGVj
a0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9CiAjZW5kaWYKLSAgICAKKworICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gSXQgaXMgcG9zc2libGUg
dGhhdCBtX3N0cnVjdHVyZSBpcyBhbHJlYWR5IGRlc3Ryb3llZC4gV2UgYXJlIGRlc3Ryb3lpbmcg
SklUU3R1YlJvdXRpbmUsIGFuZCB0aGlzIGRlc3RydWN0aW9uIGlzIGRyaXZlbgorICAgICAgICAv
LyBieSBDb2RlQmxvY2sncyBkZXN0cnVjdG9yICh0eXBpY2FsbHkpLiBBbmQgYXQgdGhhdCB0aW1l
LCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGFscmVhZHkgZGVzdHJveWVk
IGJlZm9yZQorICAgICAgICAvLyBDb2RlQmxvY2sgZ2V0cyBkZXN0cm95ZWQuIEJ1dCBoZXJlLCB3
ZSBkbyBub3QgY2FyZSBhYm91dCB0aGUgbGl2ZW5lc3Mgb2YgdGhpcyBzdHJ1Y3R1cmUgc2luY2Ug
dGhlIG93bmVyIHNob3VsZCBrZWVwIGl0LAorICAgICAgICAvLyBhbmQgaWYgaXQgaXMgZGVhZCwg
aXQgaXMgb25seSBwb3NzaWJsZSBpbiB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3duZXIuIFdlIGp1
c3QgZ2V0IGEgcG9pbnRlciB2YWx1ZSB2aWEgdW52YWxpZGF0ZWRHZXQoKS4KKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVIYXNoKG1fY29uZGl0aW9uU2V0Lmhhc2goKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fdHlwZSksIG1fdmlhUHJveHksIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCksIG1f
b2Zmc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbEluU2hhcmluZyhjb25zdCBB
Y2Nlc3NDYXNlJiwgY29uc3QgQWNjZXNzQ2FzZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNz
Q2FzZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7Ci0gICAgQWNjZXNzQ2FzZShB
Y2Nlc3NDYXNlJiYpID0gZGVmYXVsdDsKLSAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2Um
IG90aGVyKSA9IGRlZmF1bHQ7CisgICAgQWNjZXNzQ2FzZShBY2Nlc3NDYXNlJiYgb3RoZXIpCisg
ICAgICAgIDogbV90eXBlKFdURk1vdmUob3RoZXIubV90eXBlKSkKKyAgICAgICAgLCBtX3N0YXRl
KFdURk1vdmUob3RoZXIubV9zdGF0ZSkpCisgICAgICAgICwgbV92aWFQcm94eShXVEZNb3ZlKG90
aGVyLm1fdmlhUHJveHkpKQorICAgICAgICAsIG1fb2Zmc2V0KFdURk1vdmUob3RoZXIubV9vZmZz
ZXQpKQorICAgICAgICAsIG1fc3RydWN0dXJlKFdURk1vdmUob3RoZXIubV9zdHJ1Y3R1cmUpKQor
ICAgICAgICAsIG1fY29uZGl0aW9uU2V0KFdURk1vdmUob3RoZXIubV9jb25kaXRpb25TZXQpKQor
ICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4oV1RGTW92ZShvdGhlci5tX3BvbHlQcm90
b0FjY2Vzc0NoYWluKSkKKyAgICAgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShvdGhlci5tX2lk
ZW50aWZpZXIpKQorICAgIHsgfQorCisgICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBv
dGhlcikKKyAgICAgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICAgICAsIG1fc3RhdGUo
b3RoZXIubV9zdGF0ZSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KG90aGVyLm1fdmlhUHJveHkpCisg
ICAgICAgICwgbV9vZmZzZXQob3RoZXIubV9vZmZzZXQpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUo
b3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQob3RoZXIubV9jb25k
aXRpb25TZXQpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihvdGhlci5tX3BvbHlQ
cm90b0FjY2Vzc0NoYWluKQorICAgICAgICAsIG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZp
ZXIpCisgICAgeyB9CiAKICAgICBBY2Nlc3NDYXNlJiBvcGVyYXRvcj0oY29uc3QgQWNjZXNzQ2Fz
ZSYpID0gZGVsZXRlOwogICAgIHZvaWQgcmVzZXRTdGF0ZSgpIHsgbV9zdGF0ZSA9IFByaW1vcmRp
YWw7IH0KQEAgLTI3NSw3ICszMDksNyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2Ugb2YgaG93IEFjY2Vzc0Nhc2UgcHV0cyBwb3N0
LWdlbmVyYXRpb24gdGhpbmdzIGludG8gaXRzZWxmLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0NTYKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVmPEFjY2Vzc0Nhc2U+
IGNsb25lKCkgY29uc3Q7CiAKICAgICAvLyBQZXJmb3JtIGFueSBhY3Rpb24gdGhhdCBtdXN0IGJl
IHBlcmZvcm1lZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXBvY2ggaW4gd2hpY2ggdGhlIGNhc2UK
ICAgICAvLyB3YXMgY3JlYXRlZC4gUmV0dXJucyBhIHNldCBvZiB3YXRjaHBvaW50IHNldHMgdGhh
dCB3aWxsIG5lZWQgdG8gYmUgd2F0Y2hlZC4KQEAgLTMxNSw2ICszNDksMTU5IEBAIGNsYXNzIEFj
Y2Vzc0Nhc2UgewogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAor
Y2xhc3MgU2hhcmVkSklUU3R1YlNldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoU2hh
cmVkSklUU3R1YlNldCk7CitwdWJsaWM6CisgICAgU2hhcmVkSklUU3R1YlNldCgpID0gZGVmYXVs
dDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4mIGtleXMpCisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAg
ICBmb3IgKGF1dG8mIGtleSA6IGtleXMpCisgICAgICAgICAgICBXVEY6OmFkZChoYXNoZXIsIGtl
eS0+aGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAg
c3RydWN0IEhhc2ggeworICAgICAgICBzdHJ1Y3QgS2V5IHsKKyAgICAgICAgICAgIEtleSgpID0g
ZGVmYXVsdDsKKworICAgICAgICAgICAgS2V5KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVH
UFIsIEdQUlJlZyBleHRyYUdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzLCBBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAgICAg
ICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQUihi
YXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAgICAg
ICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0dWJJ
bmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJzKHVz
ZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChiaXR3
aXNlX2Nhc3Q8QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90
PigxKSkpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nhc3Q8QWNj
ZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KKwor
ICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmIGEsIGNvbnN0IEtl
eSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dyYXBwZWQg
PT0gYi5tX3dyYXBwZWQKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5t
X2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92YWx1
ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BS
CisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1YkluZm9H
UFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRS
ZWdpc3RlcnM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZyaWVuZCBib29sIG9wZXJh
dG9yIT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkICE9IGIubV93cmFwcGVkOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51
bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJS
ZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAg
ICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRS
ZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxl
Q2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgS2V5JiBwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAg
ICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJT
ZXQ6Omhhc2gocC5tX3dyYXBwZWQtPmtleXMoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07
CisKKyAgICBzdHJ1Y3QgU2VhcmNoZXIgeworICAgICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7Cisg
ICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEpJVFN0dWJTZXQ6
Omhhc2goc2VhcmNoZXIubV9rZXlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGEsIGNvbnN0IFNlYXJjaGVyJiBiKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhLm1fYmFzZUdQUiA9PSBiLm1fYmFzZUdQ
UgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0gYi5tX3ZhbHVlR1BSCisg
ICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1fZXh0cmFHUFIKKyAgICAg
ICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9zdHViSW5mb0dQUgorICAg
ICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lzdGVy
cykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBhdmVjID0gYS5tX3dyYXBwZWQt
PmtleXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYnZlYyA9IGIubV9rZXlz
OworICAgICAgICAgICAgICAgICAgICBpZiAoYXZlYy5zaXplKCkgIT0gYnZlYy5zaXplKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJ2ZWMuc2l6ZSgpOyArK2luZGV4KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vzc0Nhc2U6OmVxdWFsSW5TaGFyaW5n
KCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYXV0byYgYXdlYWsgPSBhLm1fd3JhcHBlZC0+d2Vha1JlZmVyZW5jZXMoKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYndlYWsgPSBiLm1fd2Vha1JlZmVyZW5jZXM7
CisgICAgICAgICAgICAgICAgICAgIGlmIChhd2Vhay5zaXplKCkgIT0gYndlYWsuc2l6ZSgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gYXdlYWsuc2l6ZSgpOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdlYWtbaV0gIT0gYndlYWtbaV0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAgICAgICAgR1BSUmVnIG1fdmFsdWVH
UFI7CisgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICBHUFJSZWcgbV9zdHViSW5m
b0dQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAgICAgICBjb25z
dCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBtX2tleXM7CisgICAgICAgIGNvbnN0
IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYgbV93ZWFrUmVmZXJlbmNlczsKKyAgICB9OworCisg
ICAgc3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gU2hhcmVkSklUU3R1YlNldDo6aGFzaChzdHViLT5rZXlzKCkpOworICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGtleSwgQWNjZXNz
Q2FzZUpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
a2V5Lm1fd3JhcHBlZCA9PSBzdHViOworICAgICAgICB9CisgICAgfTsKKworICAgIHZvaWQgYWRk
KEhhc2g6OktleSYmIGtleSkKKyAgICB7CisgICAgICAgIG1fc3R1YnMuYWRkKGtleSk7CisgICAg
fQorCisgICAgdm9pZCByZW1vdmUoQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAg
IHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihz
dHViKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1f
c3R1YnMucmVtb3ZlKGl0ZXIpOworICAgIH0KKworICAgIEFjY2Vzc0Nhc2VKSVRTdHViUm91dGlu
ZSogZmluZChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIpCisgICAgeworICAgICAgICBhdXRvIGVu
dHJ5ID0gbV9zdHVicy5maW5kPFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9y
PihzZWFyY2hlcik7CisgICAgICAgIGlmIChlbnRyeSAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGVudHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PEhhc2g6OktleSwgSGFzaCwgSGFzaDo6S2V5
VHJhaXRzPiBtX3N0dWJzOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmluZGV4IGZjOThmNGU0MDBi
OGZjNmNjYjg4ZGYwY2FhNGM1YTU1NTM2NzljODQuLmIyMjZmYjE2ZjVkYjc0NGY3ZmU1NTZiZWM3
NThkN2NlYTA0ZTRhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeVZhbEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJ
bmZvLmgKQEAgLTI0NCwxMCArMjQ0LDggQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAgICAgewogICAg
IH0KIAotICAgIHZvaWQgc2V0VXAoQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBu
b3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhh
bmRsZXIsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
LCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBDb2RlTG9j
YXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQsIENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQorICAgIHZv
aWQgc2V0VXAoQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0
aW9uSGFuZGxlciwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdl
dCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCiAg
ICAgewotICAgICAgICB0aGlzLT5ub3RJbmRleEp1bXAgPSBub3RJbmRleEp1bXA7Ci0gICAgICAg
IHRoaXMtPmJhZFR5cGVKdW1wID0gYmFkVHlwZUp1bXA7CiAgICAgICAgIHRoaXMtPmV4Y2VwdGlv
bkhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyOwogICAgICAgICB0aGlzLT5kb25lVGFyZ2V0ID0g
ZG9uZVRhcmdldDsKICAgICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0ID0gYmFk
VHlwZU5leHRIb3RQYXRoVGFyZ2V0OwpAQCAtMjYyLDggKzI2MCwyMSBAQCBzdHJ1Y3QgQnlWYWxJ
bmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCi0gICAgQ29kZUxvY2F0aW9u
SnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXA7Ci0gICAgQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcDsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mU2xvd09wZXJhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8s
IG1fc2xvd09wZXJhdGlvbik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTm90SW5k
ZXhKdW1wVGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9ub3RJ
bmRleEp1bXBUYXJnZXQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJhZFR5cGVK
dW1wVGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9iYWRUeXBl
SnVtcFRhcmdldCk7IH0KKworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93
T3BlcmF0aW9uOworCisgICAgdW5pb24geworICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgICAgIENvZGVMb2Nh
dGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9ub3RJbmRleEp1bXA7CisgICAgfTsKKyAgICB1
bmlvbiB7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBt
X2JhZFR5cGVKdW1wVGFyZ2V0OworICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+IG1fYmFkVHlwZUp1bXA7CisgICAgfTsKKwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CiAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldDsKICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYTM2OWUxMTAwOTEwYTc2YjNl
MmRjYjg4Yzc5MjUwNmZjMDA3NGU1NC4uNjJmNzNkZDg5ZWFlNTY1YjllYWJmYWJlNjgzZWU5Nzdm
OWVkODlmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApA
QCAtNDIwLDYgKzQyMCwxMSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB7CiAgICAgICAgIHJldHVybiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAg
ICAgfQorCisgICAgYm9vbCB1c2VTaGFyZWRJQygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gSklUQ29kZTo6dXNlU2hhcmVkSUMoaml0VHlwZSgpKTsKKyAgICB9CiAgICAgCiAjaWYgRU5B
QkxFKEpJVCkKICAgICBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAK
aW5kZXggMGMzYzQxMjFkNTg2NjI3ZWE5NTA0MWJmNzE3MGRjN2M5ZDUwYWJiYS4uNGVhMGI5Y2Rj
YzcxNjJmZTkzYmI2NzQ5YzI4NjA3NTYzNzFhM2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIG1fY3VzdG9tU2xvdEJh
c2Uuc2V0TWF5QmVOdWxsKHZtLCBvd25lciwgY3VzdG9tU2xvdEJhc2UpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVm
PEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAgIGJvb2wgdmlh
UHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFj
Y2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwKICAg
ICBzdGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQpAQCAtNjEs
MTggKzYxLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlOjpjcmVhdGUoCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0
LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3Rv
bVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1dG8gcmVz
dWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlw
ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHks
IGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOwogICAgIHJlc3VsdC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7CiAgICAg
cmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rpb25QdHI8Q3Vz
dG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbUdldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
OjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0
aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hh
aW4sIGJvb2wgdmlhUHJveHksIAogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFn
PiBjdXN0b21TZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKIHsKICAgICBBU1NFUlQo
dHlwZSA9PSBTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCB0eXBlID09IEN1
c3RvbUFjY2Vzc29yU2V0dGVyKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlw
ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHks
IG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkp
OworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
KHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgdmlhUHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkpOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9IGN1c3RvbVNl
dHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21TZXR0ZXIpIDog
bnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTEsOSArOTEsOSBAQCBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRl
ckFjY2Vzc0Nhc2UmIG90aAogICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1
dGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykp
OwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0x
MzksNiArMTM5LDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5sb2NrKHZhbHVl
UmVncyk7CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgYWxs
b2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNlR1BSID0gSW52
YWxpZEdQUlJlZzsKQEAgLTIyMyw2ICsyMjUsMTEgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMK
ICAgICBmb3IgKEZQUlJlZyByZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lzdGVyc1RvU3Bp
bGxGb3JDQ2FsbC5zZXQocmVnKTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVk
ZShSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisjaWYgQ1BVKEFS
TTY0KQorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOworICAgIGlm
IChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JD
Q2FsbC5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogCiAgICAgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BT
Y3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0LT5nZW5lcmF0b3IoKS0+
cnVuKGppdCwgcGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IGE4NDg4NDU4ZjRhYmQyYWFkMmVi
YWY2MmIyOGEzM2M0MTg2MDQwODcuLmMzNjczYTRmMTRiZjA3ODU2NjBjNTY0Yjc4MzJhNWRiNDQ2
YjcyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuaApAQCAtNTMsMTcgKzUzLDE3IEBAIGNsYXNzIEdldHRlclNl
dHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAKICAg
ICB2b2lkIGVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgRE9N
SklUOjpHZXR0ZXJTZXR0ZXIqLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAKLSAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAgICAgICAg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBv
aW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4g
Y3VzdG9tR2V0dGVyLAogICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIHN0ZDo6b3B0
aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShW
TSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRl
KFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmLCBib29sIHZpYVByb3h5
ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0
b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsK
IAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBm
aW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5HZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhmYWZkOThkMGIyODU5M2Ni
YmIwNTdiYWU5NmZiMzIxYS4uMjE5NDJjNDM1YmVlYzE0YzE1ODYzOTVlM2Q2NDExMzZlMjI4ODhh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5j
cHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBHUFJSZWcgZ2V0U2Ny
YXRjaFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52
YWx1ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIo
KTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkpCiAgICAgICAgIHJldHVy
biBJbnZhbGlkR1BSUmVnOwpAQCAtMzc5LDggKzM4MSw1NCBAQCBib29sIElubGluZUFjY2Vzczo6
Z2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1
cmUqCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZvaWQgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3ZvaWQgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VT
aGFyZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBhdXRvIGp1
bXAgPSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUg
YmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElD
LgorICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAgTGlua0J1ZmZl
ciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIo
KS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHRh
cmdldCk7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5l
QWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4gdGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgLy8gSWYgaXQgaXMgbm90IEdldEJ5SWQtbGlrZS10aGluZywgd2UgZG8gbm90IGVtaXQgbm9w
IHNsZWQgKGUuZy4gR2V0QnlWYWwpLgorICAgICAgICAvLyBUaGUgY29kZSBpcyBhbHJlYWR5IGFu
IGluZGlyZWN0IGp1bXAsIGFuZCBvbmx5IHRoaW5nIHdlIHNob3VsZCBkbyBpcyByZXBsYWNpbmcg
bV9jb2RlUHRyLgorICAgICAgICBpZiAoc3R1YkluZm8uaGFzQ29uc3RhbnRJZGVudGlmaWVyKSB7
CisgICAgICAgICAgICAvLyBJZiBtX2NvZGVQdHIgaXMgcG9pbnRpbmcgdG8gc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uLCB0aGlzIG1lYW5zIHRoYXQgSW5saW5lQWNjZXNzIGNvZGUgaXMg
bm90IGEgc3R1YiBvbmUuCisgICAgICAgICAgICAvLyBXZSByZXdyaXRlIHRoaXMgd2l0aCB0aGUg
c3R1Yi1iYXNlZCBkaXNwYXRjaGluZyBjb2RlIG9uY2UsIGFuZCBjb250aW51ZSB1c2luZyBpdCB1
bnRpbCB3ZSByZXNldCB0aGUgY29kZS4KKyAgICAgICAgICAgIGlmIChzdHViSW5mby5tX2NvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKSA9PSBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24u
ZXhlY3V0YWJsZUFkZHJlc3MoKSkgeworICAgICAgICAgICAgICAgIENDYWxsSGVscGVycyBqaXQ7
CisKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
JnN0dWJJbmZvKSwgc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgaml0
LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgICAgICAgICAg
ICAgYm9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVy
LmJ1ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBK
SVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKworICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBzdHViSW5mby5kb25lTG9jYXRpb24pOwor
CisgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklu
bGluZUFjY2VzczogbGlua2luZyBzdHViIGNhbGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgYXV0byBqdW1wID0gaml0Lmp1
bXAoKTsKQEAgLTM5NCw2ICs0NDIsMjYgQEAgdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWIKICAgICBG
SU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5n
IGNvbnN0YW50IGp1bXAiKTsKIH0KIAordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVt
cEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAg
ICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKworICAg
IC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBi
ZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KKyAgICBib29sIG5lZWRzQnJhbmNo
Q29tcGFjdGlvbiA9IGZhbHNlOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIHN0dWJJ
bmZvLnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsIG5lZWRz
QnJhbmNoQ29tcGFjdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlk
KCkpOworICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9j
YXRpb24pOworCisgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGlu
ZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNz
OjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHVi
SW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5saW5lQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmgKaW5kZXggZjQ5YjM1YjhmMjI2NDA2YzdmYjI2ZmZiYjQ4ODZiMmI4NDcx
ZDEyZC4uZWI3NmZmMzk2ZDI4OGVjZGJlM2FmMTAxN2YzMjQzYWFhNzQ0MGFjZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaApAQCAtMTA0LDEwICsx
MDQsMTQgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsKICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJs
ZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwogICAgIHN0YXRpYyBi
b29sIGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3Rh
dGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkq
KTsKLSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKICAgICBzdGF0aWMgYm9v
bCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVyZSopOwog
ICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7
CiAKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXBJ
bkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOworCiAgICAgLy8gVGhpcyBpcyBoZWxwZnVsIHdoZW4gZGV0ZXJt
aW5pbmcgdGhlIHNpemUgb2YgYW4gSUMgb24KICAgICAvLyB2YXJpb3VzIHBsYXRmb3Jtcy4gV2hl
biBhZGRpbmcgYSBuZXcgdHlwZSBvZiBJQywgaW1wbGVtZW50CiAgICAgLy8gaXRzIHBsYWNlaG9s
ZGVyIGNvZGUgaGVyZSwgYW5kIGxvZyB0aGUgc2l6ZS4gVGhhdCB3YXkgd2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3Bw
CmluZGV4IDIxZjI0NTNiYWM3YWZhZTc3MjQxY2IwNGEyNWQyMGZkZDk5M2JjMzQuLjk5NDkwOGQ2
OGI2MmJiZTA2ZTA5YWEwYjM3ZTc3YzExMGM2NjkyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcApAQCAtMzIs
MTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0
YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU09iamVjdCogcHJvdG90eXBl
KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEluc3RhbmNl
T2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIHByb3RvdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nl
c3NDYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHBy
b3RvdHlwZSkpOwogfQogCiB2b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmlu
dFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1hKSBjb25zdApAQCAtNDUsOSArNDUsOSBA
QCB2b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBD
b21tYVByaW50ZXImIGNvbW1hKSBjb25zdAogICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlw
ZSA9ICIsIEpTVmFsdWUocHJvdG90eXBlKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2Fz
ZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nh
c2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFj
Y2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RhbmNlT2ZBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dGFuY2VPZkFjY2Vzc0Nhc2UuaAppbmRleCA2OWUyYjMxYWE5NGE1OWQzMGRmYjRjYWYyMjQ0OTlk
NjAyNzc4NDdjLi5hZDcxZTY5NDJmNDQ5MmZhOGFiZGVhYWM3ZWEwZmM0NmI3MDc5ZTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nh
c2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vz
c0Nhc2UuaApAQCAtMzQsMTUgKzM0LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IEFjY2Vzc0Nhc2U7CisgICAgZnJpZW5kIGNsYXNzIEFjY2Vzc0Nhc2U7CiAg
ICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAg
c3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiwgQWNj
ZXNzVHlwZSwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLAog
ICAgICAgICBKU09iamVjdCogcHJvdG90eXBlKTsKICAgICAKICAgICBKU09iamVjdCogcHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAKICAgICB2b2lk
IGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVm
PEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgfkluc3RhbmNlT2ZB
Y2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCA2MzAxZGMy
MzM2OTMzZDY3NmMzYmU5ZTkwYzYwMTg5YTEzMTczODE3Li4zNGIxYTgwMjc4ODk1ZjcxYWJmZTY4
Mjk2OWNkZTQzMGYzMmU3ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0zOSwxOCAr
MzksMTggQEAgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX2ludHJpbnNpY0Z1bmN0aW9u
LnNldCh2bSwgb3duZXIsIGludHJpbnNpY0Z1bmN0aW9uKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJl
ZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxB
Y2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRy
aW5zaWNGdW5jdGlvbiwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogSW50
cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6fkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKQogewog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7
CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggNjI4NzAwNDE1ODczMWQ1YjhmZWI1MDYzNTNk
ZTU1OWI2NDQ3NjQ0Ni4uNDdhZjFhMmJmMWRkNmNiOTEzNjI2MzIxMDE5M2I0N2EzZmYyYWI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJv
b2wgY2FuRW1pdEludHJpbnNpY0dldHRlcihKU0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAg
dm9pZCBlbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVu
Y3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7
CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+SW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggMjk1NmRkMGNkNWQwZWFlNjFhMDhlM2RjNzY1YmY3NDM0NDFjNWY4ZC4uYzI5YzFkZGZhZjQ4
MTU1NjYxNTE3MDg1YTg4ZTE5YTA3M2FiZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApA
QCAtNDUsMTggKzQ1LDE4IEBAIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6Ok1vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAgbV9tb2R1bGVF
bnZpcm9ubWVudC5zZXQodm0sIG93bmVyLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKK1Jl
ZjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQq
IG1vZHVsZUVudmlyb25tZW50LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKIHsKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3ND
YXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVF
bnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNw
YWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKIH0KIAogTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZTo6fk1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKQogewogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6
Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6
OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZT4gcmVzdWx0KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uo
KnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmgKaW5kZXggOTJhMGI4YTM1YjU0NzE2MjQxMzBkNjUwNjUzZDA1
YmY1ZDc5MzM3Ny4uZDQzOTUwYmYwNjMxMzdjZjc3M2I4NGM0YWFlNDk0NGIwNGM5YTNiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5oCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIE1vZHVsZU5hbWVzcGFj
ZUFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgSlNNb2R1bGVFbnZp
cm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmly
b25tZW50LmdldCgpOyB9CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlT2Zmc2V0OyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0
KTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVF
bnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNv
bnN0IGZpbmFsOwogCiAgICAgdm9pZCBlbWl0KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRocm91Z2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5o
CmluZGV4IDNkMjMzZmFkMTMzOTJkZTAyYmYzYjNjOTdmZDA2NDdmMGQxYWFmZjMuLmJlNzNmZGI1
ZTVhN2E5ZmYxYjc1MjcyMDI1MjkzY2I2MmE1ODQ0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIK
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtODksNiArOTAsMzIgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBt
X2RhdGEtPm1fdmVjdG9yLmVuZCgpOwogICAgIH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAorICAgIHsKKyAgICAgICAgSGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBjb25k
aXRpb24gOiAqdGhpcykKKyAgICAgICAgICAgIGFkZChoYXNoZXIsIGNvbmRpdGlvbi5oYXNoKCkp
OworICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBsaHMsIGNvbnN0
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiByaHMpCisgICAgeworICAgICAgICBpZiAobGhz
LnNpemUoKSAhPSByaHMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBhdXRvIGxpdGVyID0gbGhzLmJlZ2luKCk7CisgICAgICAgIGF1dG8gcml0ZXIgPSByaHMuYmVn
aW4oKTsKKyAgICAgICAgZm9yICg7IGxpdGVyICE9IGxocy5lbmQoKTsgKytsaXRlciwgKytyaXRl
cikgeworICAgICAgICAgICAgaWYgKCEoKmxpdGVyID09ICpyaXRlcikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIHJocykKKyAgICB7
CisgICAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOworICAgIH0KICAgICAKICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpLaW5k
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlhN2Qw
OWEwMTUuLjA2ZmJlZDcyZjIwMTM4ZmRhMWEyODE1ZmFkNTJlMGE5YzdhMzcwNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7CiB9
CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25TdHJ1
Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0gICAg
ICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9uKTsK
KyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZElu
c3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25kaXRp
b24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQpA
QCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVTY3Jh
dGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICByZXN0
b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBpZiAo
aml0LT5jb2RlQmxvY2soKS0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsKKyAg
ICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29uc3Qg
UmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNhbGwo
KQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9Owog
fQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9T
dGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhv
dXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQogewog
ICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMo
KTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAg
ICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBl
eHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNl
ZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVz
ZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJhU3Rh
Y2tQYWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBvbHlt
b3JwaGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNB
Y2Nlc3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2lu
YWxDYXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFs
Q2FzZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3MgYWZ0
ZXIgZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2luYWxD
YXNlc1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JpZ2lu
YWxDYXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAgICAg
IGF1dG8gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwogCiAgICAgICAg
IC8vIEFkZCBpdCBvbmx5IGlmIGl0IGlzIG5vdCByZXBsYWNlZCBieSB0aGUgc3Vic2VxdWVudCBj
YXNlcyBpbiB0aGUgbGlzdC4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMzQ2LDkg
KzM0OSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENh
c2VzKAogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRD
YXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0s
IENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKIHsKLSAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKKyAg
ICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKICAgICBuZXdBY2Nl
c3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4gYWRkQ2FzZXMobG9j
a2VyLCB2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nlc3NlcykpOwogfQpA
QCAtMzU5LDkgKzM2MiwxMiBAQCBib29sIFBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsoVk0m
IHZtKSBjb25zdAogICAgICAgICBpZiAoIWF0KGkpLnZpc2l0V2Vhayh2bSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEpTQ2Vs
bD4mIHdlYWtSZWZlcmVuY2UgOiBtX3dlYWtSZWZlcmVuY2VzKSB7Ci0gICAgICAgIGlmICghdm0u
aGVhcC5pc01hcmtlZCh3ZWFrUmVmZXJlbmNlLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9zdHViUm91dGluZSkgeworICAgICAgICBmb3IgKFN0cnVjdHVyZUlE
IHdlYWtSZWZlcmVuY2UgOiBtX3N0dWJSb3V0aW5lLT53ZWFrUmVmZXJlbmNlcygpKSB7CisgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZSh3ZWFrUmVmZXJl
bmNlKTsKKyAgICAgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChzdHJ1Y3R1cmUpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTQ0MCw3ICs0NDYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHlt
b3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAg
IHVuc2lnbmVkIHNyY0luZGV4ID0gMDsKICAgICB1bnNpZ25lZCBkc3RJbmRleCA9IDA7CiAgICAg
d2hpbGUgKHNyY0luZGV4IDwgbV9saXN0LnNpemUoKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7Cisg
ICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0lu
ZGV4KytdKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYXNlIGhhZCBiZWVuIGdlbmVy
YXRlZCwgdGhlbiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGluIG1fbGlzdCBpbiBjYXNl
IHdlCiAgICAgICAgIC8vIGZhaWwgdG8gcmVnZW5lcmF0ZS4gVGhhdCBjYXNlIG1heSBoYXZlIGRh
dGEgc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBjb2RlIHRoYXQgaXQKQEAgLTQ5MSw2
ICs0OTcsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIGlmIChzdHViSW5mby52LnRo
aXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BS
ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1
YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRjaEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNj
cmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDgsNiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
YwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgQ0NhbGxI
ZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0YXRlLmppdCA9ICZqaXQ7Ci0KLSAgICBzdGF0
ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KLSAgICAgICAgYWxsb2NhdG9yLnByZXNl
cnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKICAgICBib29sIGdlbmVyYXRlZEZp
bmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MjEsMTIgKzUyMywzMCBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJl
bnRKU0xvYwogCiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAg
ICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4i
KTsKLSAgICAKKworICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7CisgICAgYm9vbCBkb2VzSlNH
ZXR0ZXJTZXR0ZXJDYWxscyA9IGZhbHNlOworICAgIGJvb2wgY2FuQmVTaGFyZWQgPSB0cnVlOwor
ICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4+IGtleXMoY2FzZXMuc2l6ZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7CisgICAgICAgIGRvZXNDYWxscyB8PSBl
bnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOworICAgICAgICBpZiAoZW50cnktPnR5
cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50cnktPnR5cGUoKSA9PSBBY2Nlc3NDYXNl
OjpTZXR0ZXIpCisgICAgICAgICAgICBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IHRydWU7Cisg
ICAgICAgIGtleXNbaW5kZXhdID0gZW50cnk7CisgICAgICAgICsraW5kZXg7CisgICAgfQorICAg
IHN0YXRlLm1fZG9lc0NhbGxzID0gZG9lc0NhbGxzOworICAgIHN0YXRlLm1fZG9lc0pTR2V0dGVy
U2V0dGVyQ2FsbHMgPSBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxsczsKKyAgICAvLyBHZXR0ZXIgLyBT
ZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2ggaXMgdGllZCB0
byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVhYmxl
LgorICAgIGlmIChkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykKKyAgICAgICAgY2FuQmVTaGFyZWQg
PSBmYWxzZTsKKwogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UncmUgY29udmluY2VkIHRoYXQgJ2Nh
c2VzJyBjb250YWlucyB0aGUgY2FzZXMgdGhhdCB3ZSB3YW50IHRvIEpJVCBub3cgYW5kIHdlCiAg
ICAgLy8gd29uJ3QgY2hhbmdlIHRoYXQgc2V0IGFueW1vcmUuCiAgICAgCiAgICAgYm9vbCBhbGxH
dWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayA9IHRydWU7Ci0gICAgYm9vbCBoYXNKU0dldHRlclNldHRl
ckNhbGwgPSBmYWxzZTsKICAgICBib29sIG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrID0gZmFsc2U7
CiAgICAgYm9vbCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5l
ZWRzU3ltYm9sUHJvcGVydHlDaGVjayA9IGZhbHNlOwpAQCAtNTQyLDEwICs1NjIsNDggQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgfQogICAgICAgICBjb21taXQobG9ja2VyLCB2
bSwgc3RhdGUud2F0Y2hwb2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sICpuZXdDYXNlKTsKICAg
ICAgICAgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgJj0gbmV3Q2FzZS0+Z3VhcmRlZEJ5U3Ry
dWN0dXJlQ2hlY2soc3R1YkluZm8pOwotICAgICAgICBpZiAobmV3Q2FzZS0+dHlwZSgpID09IEFj
Y2Vzc0Nhc2U6OkdldHRlciB8fCBuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0dGVy
KQotICAgICAgICAgICAgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG5ld0Nhc2UtPnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFs
c2U7CiAgICAgfQorICAgIGlmIChuZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgfHwgbmVlZHNTdHJp
bmdQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrKQorICAgICAgICBjYW5C
ZVNoYXJlZCA9IGZhbHNlOworCisgICAgYXV0byBmaW5pc2hDb2RlR2VuZXJhdGlvbiA9IFsmXShS
ZWZQdHI8QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9zdHVi
Um91dGluZSA9IFdURk1vdmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3Zl
KHN0YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIG1fc3R1YlJv
dXRpbmUtPmNvZGUoKSwgIlxuIik7CisKKyAgICAgICAgbV9saXN0ID0gV1RGTW92ZShjYXNlcyk7
CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwogCisgICAgICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAgICAgICAgaWYgKG1fbGlzdC5zaXplKCkgPj0g
T3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2Rl
KQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVy
YXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5ld0NvZGU7CisKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2luZCwgbV9zdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSk7CisgICAgfTsKKworICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKKyAg
ICBzdGF0ZS5qaXQgPSAmaml0OworCisgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkg
eworICAgICAgICBpZiAoc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykgeworICAgICAg
ICAgICAgLy8gV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCBzdGFjay1wb2ludGVyIGlzIHRoZSBl
eHBlY3RlZCBvbmUuIFRoaXMgaXMgbm90IGEgcHJvYmxlbSBpZiB3ZSBhcmUgbm90IGhhdmluZyBK
UyBnZXR0ZXIgLyBzZXR0ZXIgY2FsbHMgc2luY2Ugc3RhY2stcG9pbnRlciBpcworICAgICAgICAg
ICAgLy8gY2FsbGVlLXNhdmUgcmVnaXN0ZXIgYW5kIGl0IGlzIGtlcHQgYmV5b25kIGNhbGxzLiBI
b3dldmVyLCBvdXIgSlMgZXhlY3V0YWJsZSBjYWxsIGRvZXMgbm90IHNhdmUgc3RhY2stcG9pbnRl
ci4gU28gd2UgYXJlIGFkanVzdGluZyBzdGFjay1wb2ludGVyIGFmdGVyCisgICAgICAgICAgICAv
LyBKUyBnZXR0ZXIgLyBzZXR0ZXIgY2FsbHMuIEJ1dCB0aGlzIGNvdWxkIGJlIGRpZmZlcmVudCBm
cm9tIHRoZSBpbml0aWFsIHN0YWNrLXBvaW50ZXIsIGFuZCBtYWtlcyBQQUMgdGFnZ2luZyBicm9r
ZW4uCisgICAgICAgICAgICAvLyBUbyBlbnN1cmUgUEFDLXRhZ2dpbmcgd29yaywgd2UgZmlyc3Qg
YWRqdXN0IHN0YWNrLXBvaW50ZXIgdG8gdGhlIGFwcHJvcHJpYXRlIG9uZS4KKyAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5zdGFja1Bv
aW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgfQorCisgICAgc3RhdGUucHJlc2VydmVkUmV1c2VkUmVn
aXN0ZXJTdGF0ZSA9CisgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5
UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpO
b0V4dHJhU3BhY2UpOworICAgIAogICAgIGlmIChjYXNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gVGhpcyBpcyBzdXBlciB1bmxpa2VseSwgYnV0IHdlIG1ha2UgaXQgbGVnYWwgYW55d2F5Lgog
ICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC02OTAs
NyArNzQ4LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKIAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycyA9IG51bGxwdHI7CiAgICAgRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nOwotICAgIGlm
IChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgaGFzSlNHZXR0
ZXJTZXR0ZXJDYWxsKSB7CisgICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZF
eGNlcHRpb24oKSAmJiBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykgewogICAgICAgICAvLyBFbWl0
IHRoZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgY29kZSBp
cyBvbmx5IHJlYWNoYWJsZSB3aGVuIGRvaW5nIGdlbmVyaWNVbndpbmQgZnJvbSBhIHB1cmUgSlMg
Z2V0dGVyL3NldHRlciAuCiAgICAgICAgIC8vIE5vdGUgYWxzbyB0aGF0IHRoaXMgaXMgbm90IHJl
YWNoYWJsZSBmcm9tIGN1c3RvbSBnZXR0ZXIvc2V0dGVyLiBDdXN0b20gZ2V0dGVyL3NldHRlcnMg
d2lsbCBoYXZlIApAQCAtNzMwLDYgKzc4OCwzMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBv
bHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwog
ICAgICAgICBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcgPSBzdGF0ZS5jYWxsU2l0
ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcoKTsKICAgICB9CiAKKyAgICBpZiAoY29kZUJsb2Nr
LT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGZhaWx1cmUubGluaygmaml0KTsKKyAgICAgICAg
Ly8gSW4gQVJNNjQsIHdlIGRvIG5vdCBwdXNoIGFueXRoaW5nIG9uIHN0YWNrIHNwZWNpYWxseS4K
KyAgICAgICAgLy8gU28gd2UgY2FuIGp1c3QganVtcCB0byB0aGUgc2xvdy1wYXRoIGV2ZW4gdGhv
dWdoIHRoaXMgdGh1bmsgaXMgY2FsbGVkIChub3QganVtcGVkKS4KKyAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCB0YWlsIGNhbGwgdG8gdGhlIHRodW5rIHdoaWNoIGNhbGxzIHRoZSBzbG93IHBh
dGggZnVuY3Rpb24uCisgICAgICAgIC8vIEFuZCB3ZSBzaG91bGQgZWxpbWluYXRlIElDIHNsb3ct
cGF0aCBnZW5lcmF0aW9uIGluIEJhc2VsaW5lSklULgorICAgICAgICBqaXQuZmFySnVtcChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7CisgICAgfQorCisgICAgUmVmUHRyPEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZT4gc3R1YjsK
KyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXMoV1RGTW92ZShzdGF0
ZS53ZWFrUmVmZXJlbmNlcykpOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkgJiYg
Y2FuQmVTaGFyZWQpIHsKKyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXIgc2VhcmNo
ZXIgeworICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAgICAgICAgIHN0dWJJbmZv
LnZhbHVlR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BSLAorICAgICAgICAg
ICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnVzZWRSZWdp
c3RlcnMsCisgICAgICAgICAgICBrZXlzLAorICAgICAgICAgICAgd2Vha1JlZmVyZW5jZXMsCisg
ICAgICAgIH07CisgICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJj
aGVyKTsKKyAgICAgICAgaWYgKHN0dWIpCisgICAgICAgICAgICByZXR1cm4gZmluaXNoQ29kZUdl
bmVyYXRpb24oV1RGTW92ZShzdHViKSk7CisgICAgfQorCiAgICAgTGlua0J1ZmZlciBsaW5rQnVm
ZmVyKGppdCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklU
Q29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0
ZSgpKSB7CiAgICAgICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQpA
QCAtNzM5LDkgKzgyMywxMiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNj
ZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc3VjY2Vzc0xhYmVsID0gc3R1YkluZm8uZG9u
ZUxvY2F0aW9uOwogCi0gICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NM
YWJlbCk7Ci0KLSAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAg
ICBBU1NFUlQoc3RhdGUuc3VjY2Vzcy5lbXB0eSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGlu
a0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NMYWJlbCk7CisgICAgICAgIGxpbmtC
dWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAg
IH0KICAgICAKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmln
aW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVt
cChjYXNlcyksICJcbiIpOwpAQCAtNzQ5LDI5ICs4MzYsMTUgQEAgQWNjZXNzR2VuZXJhdGlvblJl
c3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50
SlNMb2MKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNv
ZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKICAgICAgICAgY29kZUJsb2NrLCBsaW5rQnVmZmVyLCBK
SVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIiVzIiwgdG9DU3RyaW5nKCJBY2Nlc3Mgc3R1
YiBmb3IgIiwgKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3JpZ2luLCAiIHdpdGggcmV0
dXJuIHBvaW50ICIsIHN1Y2Nlc3NMYWJlbCwgIjogIiwgbGlzdER1bXAoY2FzZXMpKS5kYXRhKCkp
OwotCi0gICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKLSAgICBWZWN0b3I8SlNDZWxsKj4gY2Vs
bHNUb01hcms7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKQotICAgICAgICBkb2VzQ2Fs
bHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9NYXJrKTsKLSAgICAKLSAgICBtX3N0
dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9l
c0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2Rl
QmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9u
SGFuZGxpbmcpOwotICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRz
KTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93
ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3Zl
KHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCks
ICJcbiIpOwogICAgIAotICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOwotICAgIG1fbGlzdC5z
aHJpbmtUb0ZpdCgpOwotICAgIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVz
dWx0S2luZDsKLSAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjptYXhBY2Nlc3NWYXJp
YW50TGlzdFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCi0gICAgICAgIHJlc3VsdEtpbmQg
PSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7Ci0gICAgZWxzZQot
ICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkTmV3
Q29kZTsKLSAgICAKLSAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdChyZXN1bHRLaW5k
LCBjb2RlLmNvZGUoKSk7CisgICAgc3R1YiA9IGNyZWF0ZUlDSklUU3R1YlJvdXRpbmUoY29kZSwg
V1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIHZtLCBjb2RlQmxvY2ssIGRv
ZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwgY29k
ZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlv
bkhhbmRsaW5nKTsKKworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAg
ICAgaWYgKGNhbkJlU2hhcmVkKQorICAgICAgICAgICAgdm0ubV9zaGFyZWRKSVRTdHVicy0+YWRk
KFNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleShzdHViSW5mby5iYXNlR1BSLCBzdHViSW5mby52
YWx1ZUdQUiwgc3R1YkluZm8ucmVncy50aGlzR1BSLCBzdHViSW5mby5tX3N0dWJJbmZvR1BSLCBz
dHViSW5mby51c2VkUmVnaXN0ZXJzLCBzdHViLmdldCgpKSk7CisgICAgfQorCisgICAgcmV0dXJu
IGZpbmlzaENvZGVHZW5lcmF0aW9uKFdURk1vdmUoc3R1YikpOwogfQogCiB2b2lkIFBvbHltb3Jw
aGljQWNjZXNzOjphYm91dFRvRGllKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjkyMDMyNmRjYzkxNTQ3NGIzZjFlZWI3
ZjcyNWU2YWIzNGFlY2I0MS4uNzdkNzJmMzBkNTM3YTYyMmM5YjVkNTc1M2U1ZTM1YzNjY2E5Y2Mz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmgKQEAgLTE0MSwxMCArMTQxLDEwIEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsK
ICAgICAvLyBXaGVuIHRoaXMgZmFpbHMgKHJldHVybnMgR2F2ZVVwKSwgdGhpcyB3aWxsIGxlYXZl
IHRoZSBvbGQgc3R1YiBpbnRhY3QgYnV0IHlvdSBzaG91bGQgbm90IHRyeQogICAgIC8vIHRvIGNh
bGwgdGhpcyBtZXRob2QgYWdhaW4gZm9yIHRoYXQgUG9seW1vcnBoaWNBY2Nlc3MgaW5zdGFuY2Uu
CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlcygKLSAgICAgICAgY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+KTsKKyAgICAgICAgY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+KTsKIAogICAgIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgYWRkQ2FzZSgKLSAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPik7CisgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tl
ciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBSZWY8QWNjZXNzQ2FzZT4p
OwogICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwg
RUNNQU1vZGUsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgCkBAIC0xNzksMTYgKzE3OSwxNSBA
QCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsK
ICAgICBmcmllbmQgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTsKICAgICAKLSAgICB0eXBl
ZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOworICAg
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gTGlzdFR5cGU7CiAgICAgCiAg
ICAgdm9pZCBjb21taXQoCiAgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4mLCBD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsCiAgICAgICAgIEFjY2Vzc0Nhc2UmKTsKIAog
ICAgIExpc3RUeXBlIG1fbGlzdDsKLSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IG1fc3R1YlJv
dXRpbmU7CisgICAgUmVmUHRyPEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZT4gbV9zdHViUm91dGlu
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiBt
X3dhdGNocG9pbnRzOwotICAgIEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PiBtX3dl
YWtSZWZlcmVuY2VzOwogfTsKIAogc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CkBAIC0x
OTYsNiArMTk1LDggQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgICAgIDog
bV92bSh2bSkgCiAgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICAg
ICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgICAgICwgbV9kb2VzSlNHZXR0ZXJTZXR0ZXJD
YWxscyhmYWxzZSkKKyAgICAgICAgLCBtX2RvZXNDYWxscyhmYWxzZSkKICAgICAgICAgLCBtX2Nh
bGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoZmFsc2UpCiAgICAg
ICAgICwgbV9uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKGZhbHNlKQogICAgICAg
ICAsIG1fY2FsY3VsYXRlZENhbGxTaXRlSW5kZXgoZmFsc2UpCkBAIC0yMjMsMTAgKzIyNCwxMiBA
QCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBGUFJSZWcgc2NyYXRjaEZQUiB7
IEludmFsaWRGUFJSZWcgfTsKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlIHsgRUNNQU1vZGU6OnNs
b3BweSgpIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHVi
SW5mbz4gd2F0Y2hwb2ludHM7Ci0gICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PiB3ZWFr
UmVmZXJlbmNlczsKKyAgICBWZWN0b3I8U3RydWN0dXJlSUQ+IHdlYWtSZWZlcmVuY2VzOwogICAg
IEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1fZG9lc0pTR2V0
dGVyU2V0dGVyQ2FsbHMgOiAxOworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwogCi0gICAgdm9p
ZCBpbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOworICAg
IHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKIAogICAgIHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2b2lkIHN1Y2Nl
ZWQoKTsKQEAgLTI0OCw3ICsyNTEsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsK
ICAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRF
eGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwotICAgIFNw
aWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0
aW9ucygpOworICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0pOwogCiAg
ICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhj
ZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRv
bnRSZXN0b3JlID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2MmEzODllMmVm
NTBlZWE2YTNiMzRlNzVmYTlkLi40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1MDc5YWNiY2Mx
MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxl
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxlQWNjZXNzQ2Fz
ZTo6UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
YWNjZXMKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIgfHwgdHlwZSA9
PSBSZXBsYWNlKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBQ
cm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJveHlh
YmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+UHJveHlhYmxl
QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFi
bGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm94eWFibGVB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApp
bmRleCBkYzM5ZTI2Y2EyZjRiMmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5lODQzODVjYTc1
YzlmNzUyZThlOGUxNmNkZGUwYWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3LDExICszNywx
MSBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nhc2UgewogCiAg
ICAgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWRkaXRpb25hbFNldC5nZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAgICBzdGF0aWMg
UmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAogICAgICAg
ICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQgPSBu
dWxscHRyLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAogICAg
IHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIH5Q
cm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2
YTM5Yjg0NThiOTAwY2IyYTUyZWY0ZjE1MTEyMGYuLjhkZjU4MWU0NjRmMGUwMmUzNDc3NTVmYzc5
MGQyN2NiODk0MjVhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaQogICAgICwgcHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwgcHJvcGVydHlJ
c1N5bWJvbChmYWxzZSkKIHsKKyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogfQog
CiBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEzOSw3ICsxNDAs
NyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKCkKIH0KIAogQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKLSAgICBjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFNb2RlLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gYWNjZXNzQ2Fz
ZSkKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFN
b2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBSZWZQdHI8QWNjZXNzQ2FzZT4gYWNjZXNz
Q2FzZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTE1NSw3ICsxNTYsNyBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAog
ICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAgICAgCiAgICAgICAg
IGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIpIHsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBXVEZNb3Zl
KGFjY2Vzc0Nhc2UpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2Nr
ZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBhY2Nlc3NDYXNlLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVzdWx0OiAiLCBy
ZXN1bHQsICJcbiIpOwpAQCAtMTcwLDkgKzE3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9IG1ha2VV
bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOworICAgICAg
ICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBwcmV2aW91c0Nh
c2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVCbG9jaywgaWRl
bnQsICp0aGlzKTsKKyAgICAgICAgICAgIGF1dG8gcHJldmlvdXNDYXNlID0gQWNjZXNzQ2FzZTo6
ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7CiAgICAg
ICAgICAgICBpZiAocHJldmlvdXNDYXNlKQogICAgICAgICAgICAgICAgIGFjY2Vzc0Nhc2VzLmFw
cGVuZChXVEZNb3ZlKHByZXZpb3VzQ2FzZSkpOwogICAgICAgICAgICAgCkBAIC0yNzYsNyArMjc3
LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRJbkJ5SUQoY29kZUJs
b2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFu
Y2VPZjoKLSAgICAgICAgcmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKKyAgICAgICAgcmVzZXRJbnN0
YW5jZU9mKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vz
c1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywg
RGVsQnlLaW5kOjpOb3JtYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4ODI1NjhjMjZlYWQ2MmU0MGVhZTdmMjcwODBm
MDkyMWVkZWM3NjQ1Li5iMmU1OGE4OTUyZDQ1YzU0ZjljZWM0NjU4NWZiNDUwZTIyZGQ5ZWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaApAQCAtODcsNyArODcsNyBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgdm9p
ZCBpbml0UHV0QnlJZFJlcGxhY2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVC
bG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENh
Y2hlYWJsZUlkZW50aWZpZXIpOwogICAgIHZvaWQgaW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVj
dHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCi0gICAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBhZGRBY2Nlc3NDYXNlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYsIEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRUNNQU1vZGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPik7CisgICAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBhZGRBY2Nlc3NDYXNlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRUNNQU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFJlZlB0cjxBY2Nlc3NDYXNlPik7CiAKICAgICB2b2lkIHJlc2V0KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqKTsKIApAQCAtMTMzLDEyICsxMzMsNiBAQCBjbGFz
cyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgICAgIHJldHVybiBpbmxpbmVTaXplOwogICAgIH0K
IAotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gcGF0Y2hhYmxlSnVtcCgp
Ci0gICAgeyAKLSAgICAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6SW5zdGFu
Y2VPZik7Ci0gICAgICAgIHJldHVybiBzdGFydC5qdW1wQXRPZmZzZXQ8SlNJbnRlcm5hbFB0clRh
Zz4oMCk7Ci0gICAgfQotCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncygKQEAgLTM0NCwxOSArMzM4LDMwIEBAIGNsYXNz
IFN0cnVjdHVyZVN0dWJJbmZvIHsKIHB1YmxpYzoKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gc3RhcnQ7IC8vIFRoaXMgaXMgZWl0aGVyIHRoZSBzdGFydCBvZiB0
aGUgaW5saW5lIElDIGZvciAqYnlJZCBjYWNoZXMuIG9yIHRoZSBsb2NhdGlvbiBvZiBwYXRjaGFi
bGUganVtcCBmb3IgJ2luc3RhbmNlb2YnIGNhY2hlcy4KICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRpb247Ci0gICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0lu
dGVybmFsUHRyVGFnPiBzbG93UGF0aENhbGxMb2NhdGlvbjsKICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4gc2xvd1BhdGhTdGFydExvY2F0aW9uOwogCisgICAgdW5p
b24geworICAgICAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IG1fc2xvd1Bh
dGhDYWxsTG9jYXRpb247CisgICAgICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9z
bG93T3BlcmF0aW9uOworICAgIH07CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUU3R1
YlJvdXRpbmVQdHJUYWc+IG1fY29kZVB0cjsKKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZDb2RlUHRyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBt
X2NvZGVQdHIpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dQYXRoU3RhcnRM
b2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBt
X3Nsb3dPcGVyYXRpb24pOyB9CisKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwogCi0g
ICAgR1BSUmVnIGJhc2VHUFI7Ci0gICAgR1BSUmVnIHZhbHVlR1BSOworICAgIEdQUlJlZyBiYXNl
R1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAgIEdQUlJlZyB2YWx1ZUdQUiB7IEludmFsaWRHUFJS
ZWcgfTsKICAgICB1bmlvbiB7CiAgICAgICAgIEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJS
ZWcgcHJvdG90eXBlR1BSOwogICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFI7CiAgICAgICAgIEdQ
UlJlZyBicmFuZEdQUjsKICAgICB9IHJlZ3M7CisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFIgeyBJ
bnZhbGlkR1BSUmVnIH07CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVU
YWdHUFI7CiAgICAgLy8gRklYTUU6IFszMi1iaXRzXSBDaGVjayBpZiBTdHJ1Y3R1cmVTdHViSW5m
bzo6YmFzZVRhZ0dQUiBpcyB1c2VkIHNvbWV3aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA4YWRlYWQ1MGY0NTU2Y2ZmMjVlN2M3Yzk5NzgzMDRk
NDE3NzA5NzQ3Li40NzY1NGE3NmRiNWExMTNmMGZjYjZiZjY4YTNkMjJhY2JjNmEwMjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0xNTQsNiArMTU0
LDExIEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7CiAgICAgICAg
IG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZnVuY3Rpb24pKTsK
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICB9CisKKyAgICB2b2lkIGFwcGVuZENh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBjYWxsKGFk
ZHJlc3MsIE9wZXJhdGlvblB0clRhZyk7CisgICAgfQogICAgIAogICAgIHZvaWQgZXhjZXB0aW9u
Q2hlY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdl
bmVyYXRvci5oCmluZGV4IDI1YTEyMTlmZGQ0M2JkZmUzYzA3YjhhMjc0ZGY4ZTBlNTc4OGQyYjUu
LmJhMzlmZmFjN2RiZjM4OWViZmI4YmM1MDZkNDA5ZTE3NTAwYWQyM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTE4OSw2ICsx
ODksOCBAQCBjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdAogICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRz
Li4uPiBtX2FyZ3VtZW50czsKIH07CiAKKworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwg
dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aENhbGwoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgRnVuY3Rp
b25UeXBlIGZ1bmN0aW9uLApAQCAtMjY0LDYgKzI2Niw2NyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgICAgIGZyb20sIGppdCwg
ZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBK
dW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CitjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJ
Q0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IFJlc3VsdFR5cGU+IHsKK3B1YmxpYzoKKyAgICBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1Bh
dGhJQ0dlbmVyYXRvcigKKyAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBm
dW5jdGlvbiwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50
cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBSZXN1bHRUeXBlPihmcm9tLCBqaXQsIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkK
KyAgICAgICAgLCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAsIG1fc2xvd1Bh
dGhPcGVyYXRpb25BZGRyZXNzKHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcykKKyAgICAgICAgLCBt
X2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAsIG1fYXJndW1lbnRzKHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHNpemVfdC4uLiBBcmd1bWVu
dHNJbmRleD4KKyAgICB2b2lkIHVucGFja0FuZEdlbmVyYXRlKFNwZWN1bGF0aXZlSklUKiBqaXQs
IHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpOworICAgICAgICB0
aGlzLT5zZXRVcChqaXQpOworICAgICAgICBtX3N0dWJJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBt
X2Z1bmN0aW9uOworICAgICAgICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWU8UmVzdWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2YWx1ZSkKKyAgICAgICAg
ICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25B
ZGRyZXNzLCBzdGQ6OmdldDxBcmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9z
bG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBz
dGQ6OmdldDxBcmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKKyAgICAgICAgdGhpcy0+
dGVhckRvd24oaml0KTsKKyAgICB9CisKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3Vs
YXRpdmVKSVQqIGppdCkgZmluYWwKKyAgICB7CisgICAgICAgIHVucGFja0FuZEdlbmVyYXRlKGpp
dCwgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFy
Z3VtZW50cy4uLj4+Ojp2YWx1ZT4oKSk7CisgICAgfQorCisgICAgR1BSUmVnIG1fc3R1YkluZm9H
UFI7CisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNz
OworICAgIEZ1bmN0aW9uVHlwZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRz
Li4uPiBtX2FyZ3VtZW50czsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKK307
CisKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBl
LCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1w
VHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3Bl
cmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisg
ICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8
SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwg
aml0LCBzdHViSW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlw
ZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUg
ZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBH
UFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlv
bkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwg
QXJndW1lbnRzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJv
bSwgaml0LCBzdHViSW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywg
ZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwgcmVzdWx0LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMGFmNWRkOTgzOWM4MDIxNmVmOGJj
ZjBkZTYzZGUzYmM4OTViM2E4YS4uOTI0ODAyOTcwNTBmZWI1YTk4N2VkOWRmNWM5MjcxYjc2MDgy
ODIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTEwNDUsMjQgKzEwNDUsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNo
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFj
ZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAg
ICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNj
ZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNl
KTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIApAQCAtMTA3MCw3ICsxMDgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxs
LCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUp
OwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpT
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwODYs
MjcgKzEwOTgsMzkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChO
b2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7Ci0KICAgICAgICAg
SlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21w
aWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZv
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERv
bnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBzdGQ6
Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVn
cyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CisgICAgICAgIEpTVmFs
dWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwpAQCAt
MTExNSw3ICsxMTM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVz
aChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1
bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwg
YWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxs
ZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTMwLDE0ICsxMTU0LDE5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQo
Tm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxV
c2UpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xv
d0Nhc2VzOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKQEAgLTExNDcsMjAg
KzExNzYsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSog
bm9kZSkKICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdp
c3RlcnMoKTsKIAogICAgICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7
Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAg
aWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAot
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUs
Ci0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Cisg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0K
ICNlbmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CkBAIC0xMTg5LDIyICsxMjMzLDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxl
dGVCeUlkKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlW
YWwoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENl
bGxVc2UpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBrZXkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBKU1ZhbHVlUmVncyBr
ZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIo
KTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOworCiAgICAgICAg
IGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQogICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVncykpOwogCkBA
IC0xMjEzLDIwICsxMjYyLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVC
eVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhp
cy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNl
ZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
a2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUs
Ci0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVs
QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjU1LDkgKzEzMTksMTUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBzdGQ6Om9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0
KHRoaXMsIFJldXNlLCBiYXNlLCBQYXlsb2FkV29yZCk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9H
UFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0
dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CiAKQEAgLTEyNjcsMTQgKzEzMzcsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
QnlJZChOb2RlKiBub2RlKQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNv
cmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29k
ZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVy
cyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSwKLSAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbkluQnlJZE9wdGltaXplLAorICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNo
ZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAorICAgICAgICAgICAg
TmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAg
ICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkSW5CeUlkKGdl
biwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xv
d1BhdGgpKTsKQEAgLTM1ODksOSArMzY3MCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwog
ewogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9PSBHZXRQ
cml2YXRlTmFtZSk7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBtX2dyYXBo
LmNoaWxkKG5vZGUsIDEpLnVzZUtpbmQoKSA9PSBTeW1ib2xVc2UpOwotICAgIHNwZWN1bGF0ZVN5
bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAg
IH0KKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgIHNw
ZWN1bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKwogICAgIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5n
T1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0zNjAyLDE0
ICszNjkzLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5
VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKIAogICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAg
YmFzZSwgcHJvcGVydHksIHJlc3VsdC5yZWdzKCkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0
UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1
bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1i
b2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFrZVNsb3dQYXRoQ2FsbCA9IFsmXShhdXRvIGJh
c2UpIHsKKyAgICBhdXRvIG1ha2VTbG93UGF0aElDQ2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3Vs
dC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAg
YmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKICAgICAgICAgICAg
IHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCkBAIC0zNjE3
LDggKzM3MTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVC
eVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgIH07CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gYmFzZUlzS25vd25DZWxs
Ci0gICAgICAgID8gbWFrZVNsb3dQYXRoQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
LnBheWxvYWRHUFIoKSkpCi0gICAgICAgIDogbWFrZVNsb3dQYXRoQ2FsbChiYXNlKTsKKyAgICAg
ICAgPyBtYWtlU2xvd1BhdGhJQ0NhbGwoQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXls
b2FkR1BSKCkpKQorICAgICAgICA6IG1ha2VTbG93UGF0aElDQ2FsbChiYXNlKTsKIAogICAgIG1f
aml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM2MzAsMjggKzM3MjcsNDAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2RlKQogewog
ICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VLaW5kKCkpIHsKICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQo
bm9kZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdl
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxs
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgu
Y2hpbGQobm9kZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhp
cywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1
YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlw
ZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2
YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRh
Rm9ybWF0SlMpOwogICAgICAgICBicmVhazsKQEAgLTM3NTAsMjkgKzM4NTksNDAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9kZSogbm9kZSkKIHsK
KyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHVi
SW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIo
KTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAK
ICAgICAvLyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28g
d2UgZG9uJ3QgbmVlZAogICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCiAgICAgYXV0byBwdXRLaW5k
ID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBQdXRLaW5kOjpEaXJl
Y3RQcml2YXRlRmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQ7Ci0g
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBwdXRLaW5kLCBFQ01B
TW9kZTo6c3RyaWN0KCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBu
b1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJp
dmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+
IHN0dWJJbmZvOwogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsK
KyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0K
ICAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRl
U3ltYm9sKG5vZGUtPmNoaWxkMigpLCBicmFuZEdQUik7CkBAIC0zNzg2LDE2ICszOTA2LDI0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2Rl
KQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVn
cykpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVj
a1ByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQ
cml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1Yklu
Zm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBp
ZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQs
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUs
IE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFz
ZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJp
dmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM4MDYsOSArMzkzNCwxNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAg
ICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
cmFuZFZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1
YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCkBA
IC0zODIwLDE2ICszOTU0LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2
YXRlQnJhbmQoTm9kZSogbm9kZSkKIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2
YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisgICAgICAg
IG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5
SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBz
bG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwgCi0gICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElD
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShicmFuZEdQUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRl
QnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQcml2YXRl
QnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzk0NywyMiArNDA4OSwyOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSogbm9kZSkKICAgICB1
bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BS
LCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93Q2FzZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2Vs
bHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBwcm90b3R5
cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQog
ewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1faml0LmFkZENhbGxTaXRlKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAotICAgICAgICB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwg
c2NyYXRjaDJHUFIsCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCBy
ZXN1bHRHUFIsCisgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3Mu
cGF5bG9hZEdQUigpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCiAgICAg
ICAgIG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNPYmplY3QgfCB+
U3BlY0NlbGwpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgCiAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dDYXNlKTsKLSAgICAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6
ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCks
IHZhbHVlUmVncywKLSAgICAgICAgcHJvdG90eXBlUmVncyk7CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0Nh
bGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1
ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0
YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdl
bi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAgIH0KICAgICAKICAg
ICBtX2ppdC5hZGRJbnN0YW5jZU9mKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5NzMsNiArNDEyMSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UK
ICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IApAQCAtMzk4MCwxMyArNDEyOSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZihOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAgICAKKyAgICAgICAg
R1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVt
cGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsK
KyAgICAgICAgfQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHByb3RvdHlwZS5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBz
Y3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIo
KTsKICAgICAgICAgCi0gICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNW
YWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIs
IHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQ
UiksIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKICAg
ICAgICAgCiAgICAgICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTM5OTYsMTIgKzQxNTAsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICAgICBERkdfQVNTRVJUKG1faml0Lmdy
YXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKICAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgIEpTVmFsdWVPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAg
ICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKICAgICAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1Yklu
Zm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1Zh
bHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNW
YWx1ZVJlZ3MoKTsKICAgICAKQEAgLTQwMTcsNyArNDE3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAg
ICAgCi0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3Rv
dHlwZVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2Up
OworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5
cGVSZWdzLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVn
LCBzbG93Q2FzZSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEzMDQ3LDQ2ICsxMzIwNyw2NCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7Cisg
ICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUt
PmVjbWFNb2RlKCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2Fj
aGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1
YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2lu
ZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBE
b250U3BpbGwpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAot
ICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJl
Z3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90
RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVj
bWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25h
bDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlz
KTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2
YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIo
KTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2
YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2lu
ZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVj
bWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDcxOCwxOCArMTQ4OTYs
MjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUp
CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1
dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0
S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVzZWRS
ZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBE
b250U3BpbGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0
byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQo
dmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BS
UmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsK
ICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRl
QW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBt
X3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBp
ZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZh
bHVlUmVncywKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwK
ICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ3MzksOSArMTQ5MTksMTYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgYXV0byBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1Bh
dGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
dmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRl
bnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2pp
dC5hZGRQdXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCA3NGMxNWU2OTdlMmNjMzJmNmU5YjJlN2MyNWE2ZTE4YzEz
ZDQwZDZiLi44NjhiZmY3MGY5NGY4ZTIxMTFhNDY4ZGRlYTQ5NTMyMTc0NWZiMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MTksMTYg
KzcxOSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAKICAgICB2b2lkIGNvbXBpbGVDaGVj
a0RldGFjaGVkKE5vZGUqKTsKIAotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFj
Y2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRv
U3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUiwg
R1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2Rl
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCks
IFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZEdldEJ5
VmFsKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBK
U1ZhbHVlUmVncyByZXN1bHQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NU
eXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRD
b21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGls
bFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhU
aGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBK
SVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBM
aXN0KCkpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQ
UiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lz
dGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIs
IEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyBy
ZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGls
ZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0
VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxS
ZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhp
cyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2Fk
R1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJS
ZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VuZGlmCiAKICAgICB2
b2lkIGNvbXBpbGVEZWxldGVCeUlkKE5vZGUqKTsKQEAgLTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0
RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVT
dHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1
ZVJlZ3MgcHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwg
R1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBp
bGVyOjpKdW1wKCkpOworICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwg
SlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwgR1BSUmVnIHJl
c3VsdEdQVCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNj
cmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1w
KCkpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUluc3RhbmNlT2ZDdXN0b20oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0lu
c3RhbmNlKE5vZGUqKTsKQEAgLTk0OSw2ICs5NDksMjYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwKKyAgICB2b2lkPgorICAgIGNhbGxPcGVy
YXRpb24oQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0
LCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0Zvcklu
ZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgYXBw
ZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgYWRkcmVzcy5vZmZzZXQpLCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZf
dDwKKyAgICAgICAgIUZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisg
ICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNz
LCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0Zvcklu
ZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgYXBw
ZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVz
cy5vZmZzZXQpKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
V2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0
aW9uLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICB7CiAgICAgICAgIC8vIERvIG5vdCByZWdp
c3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2ludGVyLgpAQCAtOTg4LDYgKzEwMDgsMTMgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChm
dW5jdGlvbik7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRk
cmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwor
ICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgIG1faml0LmFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgfQorCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kT3BlcmF0aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4
dGVybmFsQ2FsbCgpOwpAQCAtMTAxMCw2ICsxMDM3LDI4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklU
IHsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0
UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0KQorICAg
IHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRyZXNzKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEdQUlJlZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0
MikKKyAgICB7CisgICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIG1faml0LnNl
dHVwUmVzdWx0cyhyZXN1bHQxLCByZXN1bHQyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENh
bGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGFwcGVuZENhbGxT
ZXRSZXN1bHQoYWRkcmVzcywgcmVzdWx0UmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICBhcHBl
bmRDYWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRS
ZWdzLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFw
cGVuZENhbGxTZXRSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5j
dGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGwgPSBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGYxMmY4NmYwZDY4OWM1NDYw
M2VmMGRmM2MwNzdhMjE0YmUxZjkzMDMuLjUyNjQ2YTk2MWZmYjg1YmM0OWRjYTEyZjRmOTUwMDE3
NzUzZjc0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMTY4LDE1ICsxNjgsMTYgQEAgYm9vbCBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcmIHRhZ0dQUiwgR1BSUmVnJiBwYXls
b2FkR1BSLAogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNo
ZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3Vs
dC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJn
ZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLnRhZ0dQUigp
LCBiYXNlLnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigp
LCBzdHViSW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAotICAgIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQ
UiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsCisgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwg
R1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGls
bE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oc3R1YkluZm9HUFIp
OwogICAgIC8vIFRoaXMgaXMgYSBoYWNreSBmaXggZm9yIHdoZW4gdGhlIHJlZ2lzdGVyIGFsbG9j
YXRvciBkZWNpZGVzIHRvIGFsaWFzIHRoZSBiYXNlIHBheWxvYWQgd2l0aCB0aGUgcmVzdWx0IHRh
Zy4gVGhpcyBvbmx5IGhhcHBlbnMKICAgICAvLyBpbiB0aGUgY2FzZSBvZiBHZXRCeUlkRmx1c2gv
R2V0QnlJZERpcmVjdEZsdXNoLCB3aGljaCBoYXMgYSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSByZWdp
c3RlciBhbGxvY2F0aW9uIHN0b3J5IGFscmVhZHkgc28gd2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0
bwogICAgIC8vIHRyaXAgb3ZlciBvbmUgbW92ZSBpbnN0cnVjdGlvbi4KQEAgLTIwMCw4ICsyMDEs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIAogICAgIENhbGxT
aXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVl
UmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCB0eXBlKTsKKyAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJP
ck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZywgdHlwZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjI4LDE1ICsyMjksMTYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZFdpdGhUaGlzKAotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VU
YWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQ
UlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBh
eWxvYWRHUFIsCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9y
Tm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRo
aXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQ
UiwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKKyAgICBV
TlVTRURfUEFSQU0oc3R1YkluZm9HUFIpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4
aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFs
dWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKGJhc2VU
YWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhp
c1BheWxvYWRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJ
VCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAg
ICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFsdWVS
ZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1Rh
Z0dQUiwgdGhpc1BheWxvYWRHUFIpLCBJbnZhbGlkR1BSUmVnKTsKICAgICAKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCkBAIC0yMzQxLDggKzIzNDMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MudGFnR1BSKCkpKTsKIAog
ICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlW
YWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVn
cywgcmVzdWx0UmVncyk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1
c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJl
c3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JO
b2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAg
ICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBA
IC0zNDA1LDcgKzM0MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwog
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZhbGlkR1BSUmVnLCB0
aGlzR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZhbGlkR1BSUmVnLCB0aGlz
R1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIEludmFsaWRHUFJSZWcsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTM0MjUsNyArMzQyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFu
Y2hJZk5vdENlbGwoYmFzZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgICAgICAgICBub3RDZWxsTGlz
dC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpKSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCB0aGlzVGFnR1BSLCB0
aGlzUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2Fk
R1BSLCB0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENl
bGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRU
YWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlZjhiYTM4
NjhlODU4N2MxNGMzNzQwMmI4YmMzODQzMDljODEyMGEwLi4yOTMwMzBmZDFlNDJjMDM5NGNmMjZj
MzhiNWE1ZDM2MDU5MWYyMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE0NywxMiArMTQ3LDEyIEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlKQogICAgIH0KIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1v
ZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFj
Y2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIoKSwg
cmVzdWx0LmdwcigpLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7Cisg
ICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgc3R1Yklu
Zm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAotdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBy
ZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2Rl
IHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JF
eGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJT
ZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE2MCwyNiArMTYw
LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkg
Zmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRo
ZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAg
IHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgICAgICBpZiAoc3R1Yklu
Zm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0
dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdp
c3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVl
UmVncyhyZXN1bHRHUFIpLCB0eXBlKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZp
ZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIp
LCBzdHViSW5mb0dQUiwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwog
ICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0
ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCi0gICAgICAgIHNwaWxsTW9kZSwgRXhj
ZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7
CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGFw
cHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKKyAgICAgICAgICAgIHNw
aWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlk
ZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5y
YXdCaXRzKCkpOworICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmln
aW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVz
dWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVy
OjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0KQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNv
cmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29k
ZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVy
cyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE4NywyMCArMTk3LDMwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlR1BSCiAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwog
ICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJz
LnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAg
ICAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZp
ZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBKU1ZhbHVlUmVncyh0aGlzR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlm
aWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgSlNWYWx1ZVJlZ3ModGhpc0dQUiksIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKLSAgICAgICAgRG9u
dFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlz
R1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCisgICAg
ICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVk
LAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBi
YXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9udFNw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhp
c0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRH
ZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMjY4MSwxNiArMjcwMSwyMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKLQorICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHByb3BlcnR5KTsKKworICAgICAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAg
c3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5
LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAor
ICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkp
OworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkpOworCiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4u
c2VtYW50aWM7CiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVj
b3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNv
ZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNl
ZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTI3MDAsOCArMjcyNyw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlR1BSKSk7CiAKICAg
ICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFs
LCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAg
ICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBK
U1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNT
dHJpbmcpKQogICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5n
ID0gdHJ1ZTsKQEAgLTI3MTIsMTEgKzI3MzksMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKLQotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUik7CisgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOworCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGlt
aXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1
YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOwpAQCAtMzk4NCw5ICs0MDE5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSAmJiBub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BS
UmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwpAQCAtMzk5NCwxNCArNDAz
NiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VH
UFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0
R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxl
cjo6SnVtcExpc3QoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIAogICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0
aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBs
YWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwpAQCAtNDAxMyw3ICs0MDYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
Q2VsbChKU1ZhbHVlUmVncyhiYXNlR1BSKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwg
cmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDgzMGZiYjgzZWRhMGY1ODVjY2Q2MDU3NmZiY2ZkNjIzY2E1
YzVjN2QuLjMyOTg2YTc3MDNlODE0MDdkMzRjOTMxNWU5YTc2Y2E1MTZhZDY0OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTM5NzgsNiAr
Mzk3OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9p
bnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9y
RXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtMzk5OSwxMCArNDAwMCwxMSBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNb
MF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3By
KCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigp
OworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJl
ZzsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0
ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVl
UmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJv
cGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgICAgICBp
ZiAoIWJhc2VJc0NlbGwpCkBAIC00MDE2LDEzICs0MDE4LDI1IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5s
YWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAot
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0
b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAg
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJh
c2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwg
c2xvd1BhdGhDYWxsKTsKQEAgLTQxMTAsNiArNDEyNCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7
CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhh
bmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAt
NDEzMCwxMCArNDE0NSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBicmFu
ZEdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNo
KDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBh
Y2Nlc3NUeXBlLAotICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAorICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3MoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
SnVtcCBub3RDZWxsOwogICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAtNDE1OSwxMyAr
NDE3NSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaWYgKG5v
dENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwot
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAg
ICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkp
CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0
KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vz
c0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVu
Y3Rpb24oYWNjZXNzVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
SW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NG
dW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmpp
dCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93
UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDUxNiw2ICs0NTQ0LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZh
bHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0
Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6
IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBQdXRCeUlkRmx1c2gsIHdlIG1p
Z2h0IHdhbnQgdG8gbGF0ZS1jbG9iYmVyIHZvbGF0aWxlIHJlZ2lzdGVycy4KICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjg0OApAQCAtNDUzOCwx
MCArNDU2NywxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIEpT
IHNldHRlciBjYWxsIElDcyBnZW5lcmF0ZWQgYnkgdGhlIFB1dEJ5SWQgSUMgd2lsbCBuZWVkIHRo
aXMuCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlv
bkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/
IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAg
YXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBK
U1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVy
LCBlY21hTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdw
cigpKSwgc3R1YkluZm9HUFIsIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVj
bWFNb2RlLAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAtNDU1MywxMiArNDU4NCwyNCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhG
dW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxs
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9H
UFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgSW52
YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJh
d0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0
aW9uKCksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0
aENhbGwpOwpAQCAtNTIzOSw2ICs1MjgyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gMSA6IDA7CiAKICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
PiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CiAKQEAgLTUyNTksMTAgKzUzMDMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAg
ICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAotICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAorICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJvcGVydHlJc1N0cmluZzsKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHByb3BlcnR5SXNJbnQz
MjsKQEAgLTUyODAsMTMgKzUzMjUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAg
ICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCBy
ZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7
CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtU
byhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNs
b3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNTgzNiw3ICs1ODkz
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6
bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgICAgIHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkZUTEpJVCkgPyAyIDogMTsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9y
RXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTU4NTYsOSArNTkxMywxMSBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFy
YW1zWzFdLmdwcigpKTsKICAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1sw
XS5ncHIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3Jh
dGNoKDApOworICAgICAgICAgICAgICAgIGF1dG8gc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgxKSA6IEludmFsaWRH
UFJSZWc7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDAp
KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2go
MCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gc2NyYXRjaEdQUik7CiAKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAg
ICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChi
YXNlKSk7CkBAIC01ODc0LDcgKzU5MzMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHN1YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFy
YW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BS
ICE9IHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBh
cmFtc1syXS5ncHIoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVncyhwYXJhbXNbMl0uZ3ByKCkpOwpAQCAtNTg4NCwxOSArNTk0MywyMCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9y
bWFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5l
cmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1z
LmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZh
bEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1z
LmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBK
U1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKLSAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAgICAgICAgIGlm
ICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKIAogICAg
ICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKQEAgLTU5MDUsMTIgKzU5NjUsMjQgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZv
R1BSLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBi
YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAt
MTIyNDIsOCArMTIzMTQsOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTEyMjYwLDEwICsxMjMz
MiwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogCisg
ICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwor
CiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5CeUlkR2VuZXJhdG9y
Pjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUik7CiAKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTEyMjc0LDEy
ICsxMjM0OCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlv
bkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJ
VCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sx
XS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdC
aXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBz
bG93UGF0aENhbGwpOwpAQCAtMTI0ODYsNyArMTI1NzIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocHJvdG90eXBlKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwor
ICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMyA6IDI7CiAgICAgICAgIHBhdGNocG9pbnQtPnJl
c3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOwogICAgICAgICAKQEAgLTEyNTAyLDYgKzEyNTg4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcGFyYW1zWzJdLmdwcigp
OwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgw
KTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNo
KDEpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDogSW52YWxpZEdQ
UlJlZzsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgZG9uZUp1bXA7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkgewpAQCAtMTI1
MjMsMTAgKzEyNjEwLDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMo
aml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3Vs
dEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90
b3R5cGVJc09iamVjdCk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQ
YXRoKGppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IHBhcmFtcy5hZGRMYXRlUGF0aCgKQEAgLTEyNTM3LDEyICsxMjYyNiwyNCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCB2YWx1ZUdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBz
dHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1
bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRp
bWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRo
Q2FsbCk7CkBAIC0xMzk4Niw2ICsxNDA4Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVy
VGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRo
aXMgaXMgYSBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29t
ZSBwZXJmb3JtYW5jZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2Ji
ZXJzIHZvbGF0aWxlIHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJl
Y3RuZXNzLCB0aG91Z2gsIHNpbmNlIHRoZQpAQCAtMTQwMTQsMTAgKzE0MTE2LDEyIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4Lgog
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JV
bndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJh
bXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8g
Z2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZU
TEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1
ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzBdLmdwcigpKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSLCB0eXBlKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwMzAsMTIgKzE0MTM0LDI0
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rp
b24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0
b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQ
YXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0
dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJ
bmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFt
c1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlk
ZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9u
RnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50
aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQ
YXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xNDA2MCw4ICsxNDE3Niw4IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlz
VmFsdWUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQp
ID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlv
bnMocGF0Y2hwb2ludCk7CkBAIC0xNDA4MywxMCArMTQxOTksMTIgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJh
bXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0
Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBCb3g8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExK
SVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzKHBhcmFtc1swXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOworICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJh
bXNbMl0uZ3ByKCkpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MDk5LDEyICsxNDIxNywyNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNb
MF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5m
bygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
c1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0
cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFy
YW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0u
Z3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0
aENhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0
aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3Bw
CmluZGV4IDJhZGQ0OTRjNTMyYWFlYThlZTNkMTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThl
NThmYjFlNzkyNmM2YTA3MTgzNzMxNTg5ODdjNzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBGVEwgewogc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUg
PSA4OwogCiBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1B
cmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIpCisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVy
cywgQ0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdp
c3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0
KQogICAgICwgbV9udW1BcmdzKG51bUFyZ3MpCiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVy
blJlZ2lzdGVyKQpAQCAtNjMsNiArNjMsOCBAQCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0
aENhbGxDb250ZXh0KAogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9h
cmd1bWVudFJlZ2lzdGVycyk7CiAgICAgaWYgKHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJS
ZWcpCiAgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKKyAgICBpZiAoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5k
aXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3Rl
cnMuZmlsdGVyKHVzZWRSZWdpc3RlcnMpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJP
ZkNhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1Bh
dGhDYWxsQ29udGV4dDo6flNsb3dQYXRoQ2FsbENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkg
U2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSht
X3RodW5rU2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQp
OworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQs
IG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5
IFNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IGFkZHJlc3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2
ZVNldCwgbnVsbHB0ciwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zm
c2V0KTsKIH0KIAogU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZN
JiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYg
KzE0MCwyMiBAQCBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0m
IHZtLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzIGNhbGxUYXJnZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtl
eSA9IGtleVdpdGhUYXJnZXQoY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9
IFNsb3dQYXRoQ2FsbChtX2ppdC5jYWxsKEpJVFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1f
aml0LmFkZExpbmtUYXNrKAorICAgICAgICBbcmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHRodW5rID0KKyAgICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2Fs
bFRodW5rKHZtLCByZXN1bHQua2V5KCkpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
cmVzdWx0LmNhbGwoKSwgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNv
ZGUoKSkpOworICAgICAgICB9KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCiB7CiAgICAgaWYgKGNvZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAppbmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2Yjgy
MTdhYzlmM2ZhODBjMTJhLi5kNmYyODU0OWEzMWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0
LDE1ICs1NCwxNyBAQCBjbGFzcyBTbG93UGF0aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJB
SUkgdGhpbmd5IHRoYXQgd2lsbCBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQg
b2Zmc2V0cyBhbmQgc3VjaC4KIGNsYXNzIFNsb3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgot
ICAgIFNsb3dQYXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxI
ZWxwZXJzJiwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBT
bG93UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVy
cyYsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGly
ZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAgICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAg
ICAgLy8gTk9URTogVGhlIGNhbGwgdGhhdCB0aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0
byBiZSBsaW5rZWQgYnkgdGhlIEpJVCB1c2luZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRo
ZXJlIGlzIG5vIG5lZWQgZm9yIHlvdSB0byBsaW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRo
Q2FsbCBtYWtlQ2FsbChWTSYsIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdl
dCk7CisgICAgU2xvd1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KTsKIAogcHJpdmF0ZToKICAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2Fs
bEtleSBrZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAg
ICAgUmVnaXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2Nh
bGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzOwpAQCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwg
Y2FsbE9wZXJhdGlvbigKIHsKICAgICBTbG93UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAg
IFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4u
LihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENv
bnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVz
KSArIDEsIHJlc3VsdEdQUiwgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czx2b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxs
ID0gY29udGV4dC5tYWtlQ2FsbCh2bSwgZnVuY3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTks
NDggQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1l
bnRzLi4uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQ
YXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBl
eGNlcHRpb25UYXJnZXQsCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJS
ZWcgcmVzdWx0R1BSLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0
aENhbGwgY2FsbDsKKyAgICB7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1
c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQ
UiwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0Zvcklu
ZGlyZWN0Q2FsbDx2b2lkKEFyZ3VtZW50VHlwZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4u
KTsKKyAgICAgICAgY2FsbCA9IGNvbnRleHQubWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBmdW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAg
aWYgKGV4Y2VwdGlvblRhcmdldCkKKyAgICAgICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0
LmVtaXRFeGNlcHRpb25DaGVjayh2bSkpOworICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24o
CisgICAgVk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxw
ZXJzJiBqaXQsIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlv
biwgR1BSUmVnIHJlc3VsdEdQUiwKKyAgICBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sK
KyAgICBpZiAoY2FsbFNpdGVJbmRleCkgeworICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNh
bGxPcGVyYXRpb24odm0sIHVzZWRSZWdpc3RlcnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5j
dGlvbiwgcmVzdWx0R1BSLCBhcmd1bWVudHMuLi4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAg
ICBTdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhl
bHBlcnMmIGppdCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3QqIGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBH
UFJSZWcgcmVzdWx0LCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgc3RhdGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBj
YWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihzdGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRh
cmdldCwgZnVuY3Rpb24sCisgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXgg
MmQzMDZjNjIwMzNhODM5MDhlNmZjYzZhYjllNmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2
YjFkMzM3MmJlZjU1MTNlZmU1YWEzOWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHZvaWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIs
IG1fdXNlZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQg
PSAiLCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJn
dW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5w
cmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIs
IG1fb2Zmc2V0LCAiLCBpbmRpcmVjdE9mZnNldCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNh
bGxUYXJnZXQgPSAiLCBSYXdQb2ludGVyKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygp
KSwgIiwgYXJndW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwog
fQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAppbmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUy
MGU3NjEzODQyYmRkMzNkLi4wY2U2MWYyNmJhOTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtl
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgK
QEAgLTUxLDExICs1MSwxMiBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNs
b3dQYXRoQ2FsbEtleSgKICAgICAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1l
bnRSZWdpc3RlcnMsCi0gICAgICAgIHB0cmRpZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZf
dCBvZmZzZXQsIGludDMyX3QgaW5kaXJlY3RPZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0
ZXJzKHNldCkKICAgICAgICAgLCBtX2NhbGxUYXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVy
YXRpb25QdHJUYWc+KCkpCiAgICAgICAgICwgbV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJl
Z2lzdGVycykKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVj
dE9mZnNldChpbmRpcmVjdE9mZnNldCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0
LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAg
Y29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9h
cmd1bWVudFJlZ2lzdGVyczsgfQogICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQorICAgIGludDMyX3QgaW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2luZGlyZWN0T2Zmc2V0OyB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxs
VGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0
LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0
aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygp
LCBvZmZzZXQoKSwgaW5kaXJlY3RPZmZzZXQoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAtNzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRo
Q2FsbEtleSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAg
ICAgIDogbV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAs
IG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVs
ZXRlZFZhbHVlVGFnKQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVs
ZXRlZFZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAg
LTkzLDE4ICs5MywyMCBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fdXNlZFJlZ2lzdGVycyA9PSBvdGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAg
ICAgICYmIG1fY2FsbFRhcmdldCA9PSBvdGhlci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYm
IG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0g
b3RoZXIubV9vZmZzZXQKKyAgICAgICAgICAgICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIu
bV9pbmRpcmVjdE9mZnNldDsKICAgICB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+
OjpoYXNoKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAg
ICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNo
KG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVj
dE9mZnNldDsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0
ZXJzOwogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAg
IFJlZ2lzdGVyU2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0
OworICAgIHB0cmRpZmZfdCBtX29mZnNldCB7IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RP
ZmZzZXQgeyAwIH07CiB9OwogCiBzdHJ1Y3QgU2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKaW5kZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZh
OTMzMTMzYzBiMzZjODY2MTNhZC4uZDkyMDJhM2Q0MTllNWNiMmE1OWUzMWZiZTg1YTRhZDUzYmU0
OTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCAr
NzgsOCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5l
cmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBi
dWZmZXIpOwogICAgIAogICAgIC8vIFRlbGwgR0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUg
c2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxl
bmd0aCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMSk7CiAKICAgICBqaXQubG9hZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIw
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1
bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6
ZW9mKGRvdWJsZSk7CiAgICAgfQogICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86
Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRy
KEdQUkluZm86Om5vbkFyZ0dQUjEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgCi0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0
LCBrZXkuYXJndW1lbnRSZWdpc3RlcnMoKSk7CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIg
PSBrZXkuYXJndW1lbnRSZWdpc3RlcnMoKTsKKyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisg
ICAgICAgIGRvbnRDbG9iYmVyLnNldChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3Rl
ckNsb2JiZXJDaGVjayhqaXQsIFdURk1vdmUoZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5
SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3Nl
bWJseUhlbHBlcnM6OkNhbGwgY2FsbDsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAg
ICAgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBq
aXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwga2V5Lmlu
ZGlyZWN0T2Zmc2V0KCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgaml0LmxvYWRQdHIoQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
ciwga2V5Lm9mZnNldCgpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAg
ICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2Vy
dmVkTm9uUmV0dXJuR1BSKTsKQEAgLTIzMiw3ICsyMzksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29u
c3QgUwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKLSAgICBwYXRj
aEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOworICAgIGlmIChrZXkuY2FsbFRh
cmdldCgpKQorICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkZUTCBzbG93IHBhdGggY2FsbCB0aHVuayBmb3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAK
aW5kZXggMzU0Zjk1NDdiNGFiZjMyODk2ZDFjZWI0ZWEyMDBmYmI0YTRkZWNjZC4uMDg0YjM4ZWY4
MTI1Mjc1Mzk3ZTZhMzhiNWM2Mjc2NzRjMGYzNGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgpAQCAtNjUyLDcgKzY1Myw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0VmlydHVhbENhbGwoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
CiAgICAgICAgIGF1dG8gY2FsbExvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNh
bGw8SklUQ29tcGlsYXRpb25QdHJUYWc+KGNhbGwpOwogICAgICAgICBsaW5rQnVmZmVyLmFkZE1h
aW5UaHJlYWRGaW5hbGl6YXRpb25UYXNrKFs9LCAmdm1dICgpIHsKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmly
dHVhbFRodW5rRm9yKHZtLCAqaW5mbyk7Ci0gICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihH
Q0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgICAg
ICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2bSwg
dmlydHVhbFRodW5rKSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJD
YWxsKGNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2OGIxMjEzZjZkMjRjNzBhZmI1MDMz
MjBlYWE3MmQ4OWU3ZDg2YmU5Li5lOTA5NmI1NzczZjMyMTczMTY5ZTczZmFlMzQxMTE4ODY5ODk3
ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTIwNyw3
ICsyMDcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
IAogICAgIC8vIGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0
eXBlcyBwYXNzZWQgaW4gcmVnaXN0ZXIgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuCiAgICAgLy8g
ZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBv
biB0aGUgc3RhY2suCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgogICAgIHN0cnVjdCBBcmdDb2xs
ZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAgICAgIHsKQEAgLTIxOSw4ICsy
MTksOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAgICAg
IH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBj
LCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnPgotICAgICAg
ICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwgZz4mIG90aGVy
KQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1
bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnLCB1bnNpZ25lZCBo
PgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwg
ZywgaD4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBncHJTb3VyY2VzID0gb3RoZXIu
Z3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9ucyA9IG90aGVyLmdwckRlc3Rp
bmF0aW9uczsKQEAgLTIzMCw2NSArMjMwLDc0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMgPSBvdGhl
ci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJn
KEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAg
ICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJj
ZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0
aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJn
dW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hS
ZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyAr
IDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5mcHJTb3VyY2VzW251bUZQUlNv
dXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZnByRGVzdGluYXRpb25zW251
bUZQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyAr
IDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJl
ZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRo
aXMpOwogCiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2VzW251bUNyb3NzU291cmNlc10g
PSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rlc3RpbmF0aW9uc1tudW1Dcm9z
c1NvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
ICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQ
UlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0Fy
ZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBl
eHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVz
dWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNl
c10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BS
U291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4gcHVz
aE5vbkFyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBy
ZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3Vy
Y2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1H
UFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tl
PiBhZGRHUFJFeHRyYUFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhH
UFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCisg
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhp
cyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMT4g
YWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9CiAKICNpZiBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMzMxLDEyICszNDAsMTQgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVu
c2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNl
dCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVu
dCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIC8vIENs
YW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBzeW1ib2wgZm9yIEZQUlJlZy9HUFJS
ZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0aGV5IGFyZSBwYXNzZWQgZGlyZWN0
bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1ZwogICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMgPSBHUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogCisgICAgICAgIFVOVVNFRF9QQVJBTShu
b25BcmdHUFJzKTsKKwogICAgICAgICBjdXJyZW50R1BSQXJndW1lbnQgKz0gZXh0cmFHUFJBcmdz
OwogICAgICAgICBjdXJyZW50RlBSQXJndW1lbnQgLT0gbnVtQ3Jvc3NTb3VyY2VzOwogICAgICAg
ICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikKQEAgLTM1MCwxNSArMzYxLDE1
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lk
IHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2Fs
Y3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2ln
bmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwg
Y3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOwogICAgIH0K
IAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAg
QUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1l
bnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQ
b2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9r
ZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50
RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UpOwogICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CiAgICAgfQogCkBA
IC0zNzYsOCArMzg3LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogICAgIC8vIEF2b2lkIE1TVkMgb3B0aW1pemF0
aW9uIHRpbWUgZXhwbG9zaW9uIGFzc29jaWF0ZWQgd2l0aCBfX2ZvcmNlaW5saW5lIGluIHJlY3Vy
c2l2ZSB0ZW1wbGF0ZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVnVHlw
ZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQg
bWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVnVHlwZSBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkVfRVhDRVBU
X01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdXNpbmcgSW5mb1R5
cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CkBAIC0zOTIsMzEg
KzQwMywzMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91
YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3Vi
bGUiKTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxs
QXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpT
VmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdz
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVl
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KQEAgLTQy
NCw4ICs0MzUsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJz
IHsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShN
SVBTKQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwg
IldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogCkBAIC00
NjksMjUgKzQ4MCwyNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50R1BBcmdDb3VudCA8IG51bWJl
ck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Mg
KyAxLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhhcmcp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIC8vIE90aGVyd2lzZSBwYXNzIEZQIGFyZ3VtZW50IG9uIHN0YWNrLgot
ICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKENVUlJF
TlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVn
cy5hcmdDb3VudChhcmcpOwpAQCAtNDk3LDM0ICs1MDgsMzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyks
IGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBwb2tlQXJndW1l
bnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmdzLi4uIGFyZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlw
ZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHBva2VBcmd1
bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIs
IEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BSSW5mbzo6cmVnVDApOwog
CiAgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51bUFyZ1JlZ2lzdGVycykgewot
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKLSAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOwog
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwotICAg
ICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgewotICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UgKyAxKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
ICsgMik7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2UgKyAyKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENV
UlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQor
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBw
YXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KHBheWxvYWQuZ3By
KCkpOwpAQCAtNTQ0LDkgKzU1NSw5IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0FsaWduZWQ8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVS
ZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5z
aWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcudGFnR1BS
KCkpOwpAQCAtNTY5LDExICs1ODAsMTEgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFz
c2VtYmx5SGVscGVycyB7CiAjZW5kaWYgLy8gQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFM
V0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19iYXNlX29mPFRy
dXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0ZDo6aXNfY29udmVydGlibGU8QXJn
LCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhpcyBzaW5jZSBERkdTcGVjdWxhdGl2
ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2YgVHJ1c3RlZEltbVB0cgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBvbmx5IHN1cHBvcnRzIG5v
bi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNpbmNlIHdlIG5ldmVyIGNhbGwg
b3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAgICAgICAgIC8vIElmIHdlIGV2
ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50cyB3
ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZvciBib3RoIHR5cGVzLCB3aGlj
aCBzb3VuZHMKQEAgLTU5MSw0NiArNjAyLDQ2IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFy
Zz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9
IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMyKGFyZyksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVu
YWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBB
cmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRf
VFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA9
PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02NChhcmcpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVyPEFyZz46OnZhbHVlICYmIHN0
ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9wb2ludGVy
X3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSkKICAgICAgICAgICAgIHx8
IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUpPgotICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICAvLyBT
cGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlIGJlY2F1c2UgaXQncyByZWFsbHkg
YW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVyd2lzZS4uLgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6dmFsdWUKICAgICAgICAgJiYg
c3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlPjo6dmFsdWU+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwogICAg
IH0KQEAgLTYzOSw4ICs2NTAsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1i
bHlIZWxwZXJzIHsKICN1bmRlZiBSRVNVTFRfVFlQRQogCiAgICAgLy8gQmFzZSBjYXNlOyBzZXQg
dXAgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgotICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0
eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNhbml0eSBjaGVjayIpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02NTUsMzEgKzY2Niw0NCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0dXBTdHViQXJnczxudW1G
UFJTb3VyY2VzLCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVn
PihhcmdTb3VyY2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVtRlBS
U291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJjZXMpKTsKICAgICB9CiAKLXB1
YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0VudHJ5
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAg
IHVzaW5nIEZpcnN0QXJndW1lbnRUeXBlID0gdHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPjsKKyAgICAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWU8Rmlyc3RBcmd1bWVudFR5cGUsIENhbGxGcmFtZSo+Ojp2YWx1ZSkgewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtz
IGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQu
Li4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7
CisgICAgICAgIH0gZWxzZSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRo
aXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0
aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlv
blRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwg
IkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAgIH0K
KyAgICB9CiAKLSNkZWZpbmUgRklSU1RfQVJHVU1FTlRfVFlQRSB0eXBlbmFtZSBGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+CitwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8RklSU1RfQVJH
VU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFy
Z3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykK
ICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3
b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzIt
Yml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAxLCAiQmFzaWMgc2FuaXR5IGNo
ZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUs
IDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4o
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFy
Z3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8RklSU1RfQVJHVU1FTlRfVFlQRSwgQ2FsbEZyYW1l
Kj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEdQUlJlZyBmdW5jdGlvbkdQUiwg
QXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwgIkJhc2lj
IHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAs
IDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxP
cGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCkucHVz
aE5vbkFyZyhmdW5jdGlvbkdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOwogICAg
IH0KIAotI3VuZGVmIEZJUlNUX0FSR1VNRU5UX1RZUEUKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChBZGRyZXNzIGFkZHJlc3MsIEFyZ3MuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+
KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGFkZHJl
c3MuYmFzZSwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4pOworICAgIH0KIAogICAgIHZv
aWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApp
bmRleCBmN2FhMzI5ZmUyNWQxOWM3MzcxODQ3MGFlZmZiM2I0YWFlYTA1ZGI2Li40MzYyYmM0YzE4
MWQxOGMwY2U4Njg0OWZiZDlmZjJjN2YxOWRiMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJIZWFw
LmgiCkBAIC0zOCwxOCArMzksMjIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUdDQXdhcmVKSVRT
dHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKK0dDQXdhcmVK
SVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUpCiAgICAgOiBKSVRTdHViUm91dGlu
ZShjb2RlKQogewotICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0aGlzKTsKIH0K
IAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgeyB9CiAK
K3ZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYWtlR0NBd2FyZShWTSYgdm0pCit7CisgICAg
dm0uaGVhcC5tX2ppdFN0dWJSb3V0aW5lcy0+YWRkKHRoaXMpOworICAgIG1faXNHQ0F3YXJlID0g
dHJ1ZTsKK30KKwogdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291
bnQoKQogewotICAgIGlmIChtX2lzSmV0dGlzb25lZCkgeworICAgIGlmIChtX2lzSmV0dGlzb25l
ZCB8fCAhbV9pc0dDQXdhcmUpIHsKICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Ig
d2hlbiB0aGUgc3lzdGVtIHNodXRzIGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRo
ZSBKSVQgc3R1YiByb3V0aW5lIHNldCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQg
dG8gZGVsZXRpbmcKICAgICAgICAgLy8gdGhpcyBndXkuIEluIHRoYXQgY2FzZSB0aGUgR0MgaW5m
b3JtcyB1cyB0aGF0IHdlJ3JlIGpldHRpc29uZWQgYWxyZWFkeQpAQCAtNzQsMTAgKzc5LDI1IEBA
IHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpkZWxldGVGcm9tR0MoKQogICAgIGRlbGV0ZSB0
aGlzOwogfQogCitBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU6OkFjY2Vzc0Nhc2VKSVRTdHViUm91
dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBj
b2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhl
ZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcykKKyAgICA6IEdDQXdhcmVKSVRT
dHViUm91dGluZShjb2RlKQorICAgICwgbV92bSh2bSkKKyAgICAsIG1fa2V5cyhXVEZNb3ZlKGtl
eXMpKQorICAgICwgbV93ZWFrUmVmZXJlbmNlcyhXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkKK3sK
K30KKwordm9pZCBBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQo
KQoreworICAgIGlmIChtX3ZtLm1fc2hhcmVkSklUU3R1YnMpCisgICAgICAgIG1fdm0ubV9zaGFy
ZWRKSVRTdHVicy0+cmVtb3ZlKHRoaXMpOworICAgIEJhc2U6Om9ic2VydmVaZXJvUmVmQ291bnQo
KTsKK30KKwogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRT
dHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsCisgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZt
LCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYga2V5cywgRml4ZWRWZWN0b3I8U3Ry
dWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgY29u
c3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0lu
Zm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAgIDogQWNjZXNz
Q2FzZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtS
ZWZlcmVuY2VzKSkKICAgICAsIG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlu
a0luZm9zKFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiB7CkBAIC0xMDYsOSArMTI2LDkgQEAgdm9p
ZCBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJu
YWwoU2xvdFZpc2l0b3ImIHZpc2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2Vw
dGlvbkhhbmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAot
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNv
ZGUsIFZNJiB2bSwgIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYg
Y2VsbHMsIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1
cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9y
PEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxs
U2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxM
aW5rSW5mb3MpKQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwg
V1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIG93bmVyLCBjZWxscywgV1RG
TW92ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRs
ZXIoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgLCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyLT5j
b2RlT3JpZ2lucygpKQpAQCAtMTUyLDggKzE3MiwxMCBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIH0KIAogCi1S
ZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorUmVmPEFjY2Vzc0Nhc2VK
SVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAorICAgIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLAorICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiYmIHdlYWtSZWZlcmVuY2VzLAogICAgIFZNJiB2bSwKICAgICBjb25zdCBKU0NlbGwqIG93
bmVyLAogICAgIGJvb2wgbWFrZXNDYWxscywKQEAgLTE2NSwxOCArMTg3LDI1IEBAIFJlZjxKSVRT
dHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgaWYgKCFtYWtlc0NhbGxzKSB7
CiAgICAgICAgIC8vIEFsbG9jYXRpbmcgQ2FsbExpbmtJbmZvcyBtZWFucyB3ZSBzaG91bGQgaGF2
ZSBjYWxscy4KICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKTsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRpbmUoY29kZSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdU
Rk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1JlZmVyZW5jZXMpKSk7CiAgICAgfQogICAgIAogICAg
IGlmIChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykgewogICAgICAgICBSRUxFQVNFX0FT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxl
cnMtPmppdFR5cGUoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBX
VEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhj
ZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKKyAgICAgICAgYXV0byBzdHViID0gYWRvcHRS
ZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2
bSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcyksIG93bmVyLCBjZWxscywg
V1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4
Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHN0dWItPm1ha2VHQ0F3YXJl
KHZtKTsKKyAgICAgICAgcmV0dXJuIHN0dWI7CiAgICAgfQogCi0gICAgaWYgKGNlbGxzLmlzRW1w
dHkoKSAmJiBjYWxsTGlua0luZm9zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEdDQXdhcmVK
SVRTdHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtKTsKKyAgICBpZiAoY2VsbHMuaXNFbXB0eSgp
ICYmIGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gc3R1YiA9IGFkb3B0
UmVmKCpuZXcgQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMp
LCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSkpOworICAgICAgICBzdHViLT5tYWtlR0NBd2FyZSh2
bSk7CisgICAgICAgIHJldHVybiBzdHViOworICAgIH0KICAgICAKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2Vs
bHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKKyAgICBhdXRvIHN0dWIgPSBhZG9wdFJlZigq
bmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyks
IFdURk1vdmUod2Vha1JlZmVyZW5jZXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJ
bmZvcykpKTsKKyAgICBzdHViLT5tYWtlR0NBd2FyZSh2bSk7CisgICAgcmV0dXJuIHN0dWI7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5kZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0
ZDE4ZTZjZTFjYTlmZC4uNGI1NTYyNThlNDU3YTBmZDcxYjVhYjMxYmQxNmE3ODE3OWRlNzQwMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRp
bmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBv
b2w7CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBK
SVRTdHViUm91dGluZVNldDsKIApAQCAtNTQsMTIgKzU1LDE0IEBAIGNsYXNzIEpJVFN0dWJSb3V0
aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNl
KS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7
CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHVi
Um91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
Jik7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGlj
IFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKKyAgICBzdGF0aWMgUmVmPEpJVFN0
dWJSb3V0aW5lPiBjcmVhdGUoVk0mIHZtLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKSk7CisgICAgICAgIGF1dG8gc3R1
YiA9IGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAg
c3R1Yi0+bWFrZUdDQXdhcmUodm0pOworICAgICAgICByZXR1cm4gc3R1YjsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpAQCAtNjksNiArNzIsOCBAQCBjbGFzcyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogICAgIH0KICAgICAK
ICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOworCisgICAgdm9pZCBtYWtlR0NBd2FyZShWTSYpOwog
ICAgIAogcHJvdGVjdGVkOgogICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIG92ZXJyaWRl
OwpAQCAtODEsMTQgKzg2LDM1IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1Ymxp
YyBKSVRTdHViUm91dGluZSB7CiAKICAgICBib29sIG1fbWF5QmVFeGVjdXRpbmcgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0dDQXdh
cmUgeyBmYWxzZSB9OworfTsKKworY2xhc3MgQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lIDogcHVi
bGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEdD
QXdhcmVKSVRTdHViUm91dGluZTsKKworICAgIEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZShjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhl
ZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYm
KTsKKworICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mIGtleXMoKSBj
b25zdCB7IHJldHVybiBtX2tleXM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4mIHdlYWtSZWZlcmVuY2VzKCkgY29uc3QgeyByZXR1cm4gbV93ZWFrUmVmZXJlbmNlczsgfQor
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgb3ZlcnJpZGU7CisK
K3ByaXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+PiBtX2tleXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+IG1fd2Vha1JlZmVyZW5j
ZXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRpdGlvbmFs
IG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCiAvLyByb3V0aW5lIGlzIGtub3duIHRvIGJl
IGV4ZWN1dGluZy4KLWNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKK2NsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRp
bmUgOiBwdWJsaWMgQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lOworCiAgICAgTWFya2luZ0dDQXdhcmVK
SVRTdHViUm91dGluZSgKLSAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9y
PEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7CisgICAgICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpT
Q2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYp
OwogICAgIH5NYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAgICAgCiBw
cm90ZWN0ZWQ6CkBAIC0xMDcsOSArMTMzLDkgQEAgY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHVi
Um91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogLy8gZm9yIG5ldyBleGNl
cHRpb24gaGFuZGxlcnMgdG8gdXNlIHRoZSBzYW1lIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4Lgog
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBw
dWJsaWMgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRl
ZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKKyAgICB1c2luZyBCYXNlID0gTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZTsKIAotICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNl
cHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYs
IEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZl
Y3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmLCBj
b25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJ
bmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CiAgICAgfkdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKCkgZmluYWw7CiAKICAgICB2b2lk
IGFib3V0VG9EaWUoKSBmaW5hbDsKQEAgLTEyOSw5ICsxNTUsMTAgQEAgY2xhc3MgR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dD
QXdhcmVKSVQKIC8vIGFwcHJvcHJpYXRlLiBHZW5lcmFsbHkgeW91IG9ubHkgbmVlZCB0byBwYXNz
IHBvaW50ZXJzIHRoYXQgd2lsbCBiZSB1c2VkCiAvLyBhZnRlciB0aGUgZmlyc3QgY2FsbCB0byBD
Kysgb3IgSlMuCiAvLyAKLS8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRp
bmUoCisvLyBSZWY8QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0
aW5lKAogLy8gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYgY29kZSwKIC8vICAgIFZNJiB2bSwKKy8vICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPj4mJiBrZXlzLAogLy8gICAgY29uc3QgSlNDZWxsKiBvd25lciwKIC8vICAgIGJvb2wg
bWFrZXNDYWxscywKIC8vICAgIC4uLik7CkBAIC0xNDIsOCArMTY5LDggQEAgY2xhc3MgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2lu
Z0dDQXdhcmVKSVQKIC8vIHRoaXMgZnVuY3Rpb24gdXNpbmcgdmFyYXJncywgSSBlbmRlZCB1cCB3
aXRoIG1vcmUgY29kZSB0aGFuIHRoaXMgc2ltcGxlCiAvLyB3YXkuCiAKLVJlZjxKSVRTdHViUm91
dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9v
bCBtYWtlc0NhbGxzLAorUmVmPEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRT
dHViUm91dGluZSgKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRp
bmVQdHJUYWc+JiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVk
VmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtSZWZlcmVuY2VzLCBWTSYsIGNvbnN0IEpTQ2VsbCog
b3duZXIsIGJvb2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8
Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tG
b3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFu
ZGxpbmdDYWxsU2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRl
eCA4ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQy
MDA3NTQ1MTgwMDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaApAQCAtNDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAj
ZW5kaWYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4
OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9
IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAv
LyByZWdUNSAocmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJ
bmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJl
Z2lzdGVyczo6eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1l
bnRHUFI3ID0gQVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsg
Ly8gcmVnVDkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFS
TTY0UmVnaXN0ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBy
ZXR1cm5WYWx1ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3Rl
cnM6OngyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGVlMWE0ZTM3ZmZjMjc3ZGNk
OTZkNGIwMjJiNzcyN2M1YmJmNzQyM2QuLjliODIzZWM4NDIzYTJlZjNmY2U5YjNiMzBhMDBiNjMx
M2MzNjkxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTkzMSwxMiArOTMxLDEy
IEBAIHZvaWQgSklUOjpsaW5rKCkKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29t
cGlsYXRpb25JbmZvIDogbV9ieVZhbENvbXBpbGF0aW9uSW5mbykgewogICAgICAgICAgICAgUGF0
Y2hhYmxlSnVtcCBwYXRjaGFibGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5u
b3RJbmRleEp1bXA7Ci0gICAgICAgICAgICBhdXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4gbm90SW5kZXhKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0
Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVt
cCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVOb3RJbmRleEp1bXApKTsKIAogICAgICAg
ICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRp
b25JbmZvLmJhZFR5cGVKdW1wOwotICAgICAgICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVM
b2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1bXA7CiAgICAgICAgICAgICBpZiAoSnVt
cChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBiYWRUeXBl
SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9j
YXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVt
cCkpOwogCkBAIC05NDUsMTQgKzk0NSwxOSBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgICAg
ICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRh
Zz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0
aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwogCiAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9u
SW5mby5ieVZhbEluZm8tPnNldFVwKAotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCwKLSAg
ICAgICAgICAgICAgICBiYWRUeXBlSnVtcCwKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGVyLAogICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKICAg
ICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCiAgICAgICAg
ICAgICAgICAgZG9uZVRhcmdldCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwK
ICAgICAgICAgICAgICAgICBzbG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICAgICAg
YnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNs
b3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAg
ICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdl
dCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5i
eVZhbEluZm8tPm1fbm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOworICAgICAgICAgICAgICAg
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVK
dW1wOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCA3NWM5Y2I5NmIxMzY1MzJmMDg2MWYyZjBhODA1OGVmYzZiMDU2YjI0Li45ZjMx
NjVkNTViOGJkZmRmMTAyYmZhZjhhZDEzOGU2ODFhYWRjZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTI5NCw2ICsyOTQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25DYWxsOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxs
KEFkZHJlc3MgZnVuY3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24s
IE9wZXJhdGlvblB0clRhZyk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShY
ODZfNjQpCiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29u
c3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAt
Mzk1LDM5ICs0MDAsMzkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlz
IGludC1jaGVja2VkIGFuZCB6ZXJvIGV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAg
ICAgICAgLy8gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cg
Y2FzZXMuIEZhbGwtdGhyb3VnaAogICAgICAgICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiBy
ZWdUMCwgYW5kIGl0IGlzIG5vdCB5ZXQgcHJvZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJ
bnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUs
IEludDMyU2hhcGUpOyB9Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVt
aXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAg
ICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1v
ZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
IHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJ
bmZvLCBJbnQzMlNoYXBlKTsgfQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOworICAg
ICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFw
ZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VM
b2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
Kik7CisgICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0
aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsK
IAogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBpbiByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVn
VDIgY29udGFpbnMgaW5kZWNpbmcgdHlwZS4KICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3Jl
IGlzIG5vdCB5ZXQgbG9hZGVkLiBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAg
Ly8gemVyby1leHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJl
YWR5IHByb2ZpbGVkLgogICAgICAgICAvLyByZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0
IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRH
ZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsK
KyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBl
bWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdl
bmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsK
KyAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBEb3VibGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBM
aXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250
aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBl
IGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsK
KyAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1
dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAg
ICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgVHlwZWRBcnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CkBAIC04NzAs
MTMgKzg3NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhBZGRyZXNzKTsKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5k
U2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwog
I2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZy
YW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3Vs
dFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1l
dGFkYXRhPgorICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1Zh
bHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0KTsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBA
IC04ODYsNiArODk1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJh
dGlvbihBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdz
KQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxP
cGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9T
KFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+
CiAgICAgICAgIHN0cnVjdCBpczY0Qml0VHlwZSB7CkBAIC05MDYsNiArOTIzLDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOwogICAgICAgICB9CisK
KyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFy
Z3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxs
PE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2lu
ZG93cyBjYW5ub3QgdXNlIHN0YW5kYXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFy
Z2VyIHRoYW4gNjQgYml0cy4KKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8
dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1
ZSkKKyAgICAgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3Mo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJl
dHVyblR5cGUoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7Cisg
ICAgICAgIH0KICNlbHNlIC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRp
b24sIEFyZ3MuLi4gYXJncykKQEAgLTkxMyw2ICs5NDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAg
ICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQs
IEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJ
bmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAg
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtOTIzLDYgKzk1OCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lk
PgorICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBB
ZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAg
ICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRp
b25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAg
ICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0
aFJlc3VsdChPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywg
QXJncy4uLiBhcmdzKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cAppbmRleCAxYjQ5ZDQ4OWRhYTJiNzg2YWI3OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li4zNzRiYTMw
YzdmNzY3MTM3OTQ3MGU0ZGQ5ZDRkYTgzNjVkYTM2MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKQEAgLTM5OCw4ICszOTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCks
IHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwpAQCAtNDMyLDggKzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93QwogICAgIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29k
ZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
bmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVy
YXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihpZGVudCkucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIGNhbGwpOworCiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0
LmxpbmsodGhpcyk7CkBAIC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVy
U2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCk7CiAgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+
ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9u
ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVk
UmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdz
KGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6
OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBw
ZW5kKGdlbik7CkBAIC00OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0
ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwg
c2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7
CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRC
eUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChn
ZW4pOwpAQCAtNTI4LDE2ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0Owog
ICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7
Ci0gICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQ
UikpOwogCiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlO
YW1lcy0+ZG9uZS5pbXBsKCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAg
ICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsK
IAorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBk
b25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4u
c3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGRvbmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hv
dEZvckNoZWNrcG9pbnQoanVtcCgpKTsKQEAgLTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0MKIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAot
ICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZv
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0
ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50
KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIGNhbGwpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwCmluZGV4IGVjYzRlNWYzZmY2ZDA3Zjk5YzA3ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1
MjUxNGFmZGNhYzc4MmFjOWM4NzRlNTUwYWZmYjljNzI4YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTM5NiwxMiArMzk2LDE0IEBAIHZvaWQg
SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
KQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLAor
ICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLAogICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9y
dGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwKICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRl
cmF0b3JHUFIsIHBheWxvYWRJdGVyYXRvckdQUiksCiAgICAgICAgIG5leHRSZWdzLAorICAgICAg
ICBJbnZhbGlkR1BSUmVnLAogICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC01MDUsMTIgKzUwNywxNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKICAgICAgICAgcHJlc2VydmVkUmVncy5hZGQocGF5bG9hZFZhbHVlR1BSKTsKICAgICAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAg
ICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgcHJlc2VydmVkUmVncywKICAg
ICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVl
UmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAg
ICBkb25lUmVncywKKyAgICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nl
c3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNTMzLDEyICs1Mzcs
MTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
ICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAg
ICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAg
ICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgp
LnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0
YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCiAgICAgICAgICAgICByZXN1
bHRSZWdzLAorICAgICAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5
cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAg
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ29kZS5oCmluZGV4IDRjZTc3ZjViMGNlODk5NTBhZmMxZTUyZjQzNTY1MTQ1NjUxYzdiOTgu
LjE1YzFkN2UwOTg4ZDgzZTE0MGQ0MzE5ZjQ2MjM0MTA4ODJiNWJmNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCkBAIC01MiwxMyArNTIsMTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVy
ZW5jZXM7CiBjbGFzcyBWTTsKIAogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7Ci0gICAg
Tm9uZSwKLSAgICBIb3N0Q2FsbFRodW5rLAotICAgIEludGVycHJldGVyVGh1bmssCi0gICAgQmFz
ZWxpbmVKSVQsCi0gICAgREZHSklULAotICAgIEZUTEpJVAorICAgIE5vbmUgPSAwYjAwMCwKKyAg
ICBIb3N0Q2FsbFRodW5rID0gMGIwMDEsCisgICAgSW50ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAor
ICAgIEJhc2VsaW5lSklUID0gMGIwMTEsCisgICAgREZHSklUID0gMGIxMDAsCisgICAgRlRMSklU
ID0gMGIxMDEsCiB9Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9
IDM7CitzdGF0aWNfYXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0
ZDo6dW5kZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3
aWR0aE9mSklUVHlwZSk7CiAKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8SklUQ29kZT4gewogcHVibGljOgpAQCAtMTU2LDYgKzE1OCwxNSBAQCBjbGFzcyBKSVRD
b2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKICAgICAgICAgcmV0
dXJuIGppdFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJ
VFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHVzZVNoYXJlZElD
KEpJVFR5cGUgaml0VHlwZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlU2hhcmVk
SUMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKGppdFR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBPcHRpb25zOjp1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCgpOworICAgIH0KKwog
ICAgIHZpcnR1YWwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDog
dWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5ODU2Mjk4YzNk
ZTY0NjIyY2UuLjJmZThiOWI4ZTMxYzhiZGJhMzcxNDJhNmY2MDg3ODRiZGI0M2ZkYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCkBAIC00Myw5ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0dXJlU3R1YkluZm8qIGdhcmJh
Z2VTdHViSW5mbygpCiB9CiAKIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCiAgICAg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAgOiBtX2NvZGVCbG9jayhjb2Rl
QmxvY2spCisgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKIHsKICAgICBtX3N0dWJJbmZvID0gbV9j
b2RlQmxvY2sgPyBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oYWNjZXNzVHlwZSwgY29kZU9yaWdp
bikgOiBnYXJiYWdlU3R1YkluZm8oKTsKICAgICBtX3N0dWJJbmZvLT5jYWxsU2l0ZUluZGV4ID0g
Y2FsbFNpdGU7CkBAIC02MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cjo6ZmluYWxpemUoCiAKICAgICBtX3N0dWJJbmZvLT5kb25lTG9jYXRpb24gPSBmYXN0UGF0aC5s
b2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAKLSAgICBtX3N0dWJJbmZvLT5z
bG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRh
Zz4obV9zbG93UGF0aENhbGwpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRU
eXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQ
YXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOwogICAgIG1f
c3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc2xvd1BhdGhCZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0
b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlLAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMp
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUs
CisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBh
Y2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3Zh
bHVlKHZhbHVlKQogewogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIo
KTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBt
X3N0dWJJbmZvLT5yZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8t
PnZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJ
ZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpm
aW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0g
ICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6
OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9m
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1
YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlD
U2l6ZSkKIHsKKyAgICAvLyBXZSBnZW5lcmF0ZSB0aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Yg
d2hldGhlciBTaGFyZWRJQyBpcyBlbmFibGVkIGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2Ug
SW5saW5lQWNjZXNzCisgICAgLy8gZm9yIHRoZSBwZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9z
dGFydCA9IGppdC5sYWJlbCgpOwogICAgIHNpemVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJs
ZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7
CkBAIC0xMDEsOSArMTA2LDkgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RD
b21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0
QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2
YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgLCBtX2lzTGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51
aWQoKSA9PSBjb2RlQmxvY2stPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7
CkBAIC0xMTUsOSArMTIwLDkgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpT
VmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykK
LSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BS
KQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJh
c2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5w
YXlsb2FkR1BSKCkgIT0gdGhpc1JlZ3MudGFnR1BSKCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBA
QCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2Vu
ZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5
cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwK
KyAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaCwgCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0
S2luZCkKLSAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisg
ICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBz
dHViSW5mb0dQUikKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1f
cHV0S2luZChwdXRLaW5kKQogewpAQCAtMTcxLDE0ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25f
R1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQs
IEdQUlJlZyBzY3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVs
QnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRU
eXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwg
dXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIg
PSBmYWxzZTsKICAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRH
UFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAg
IG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAg
ICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1
YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9z
dHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzMCBA
QCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQu
bGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0
dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1
YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIo
KSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwog
fQogCi12b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVy
JiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
CiB7Ci0gICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNl
OjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlv
bk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUo
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkp
CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbjsKIH0KIAotSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBzY3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlk
R2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdp
c3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsK
ICAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAg
ICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1Yklu
Zm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZh
bHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFz
ZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdH
UFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMjIzLDIyICsyMzMsMjUgQEAgSklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlT3IKIHZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Ns
b3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAg
ICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5l
UHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5
SWRHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVm
ZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1
ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Ns
b3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAg
IGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwg
ZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZv
LT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIEpJ
VEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6
IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZTo6SW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNv
ZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluLCB1
c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgLy8gRklYTUU6
IFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5Lgog
ICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwpAQCAtMjUxLDE1ICsyNjQsMTUgQEAgdm9p
ZCBKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGpp
dCkKIH0KIAogSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigK
LSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90
eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2Ny
YXRjaDIsIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElubGluZUNhY2hl
R2VuZXJhdG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHVi
SW5mby0+YmFzZUdQUiA9IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0
OwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBlOworICAgIG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1f
c3R1YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTI3OSwyMSArMjkyLDI0
IEBAIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAKIHZv
aWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogewotICAgIG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9zdGFy
dCA9IGppdC5sYWJlbCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUp
KSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJ
bmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxs
SGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBl
bHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBt
X2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpm
aW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0g
ICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwg
c2xvd1BhdGgsCi0gICAgICAgIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fanVtcCkpOwotICAgIAotICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xv
d1BhdGgubG9jYXRpb25PZjxOb1B0clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgQmFzZTo6
ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKG1f
aml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNs
b3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklU
R2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNl
ZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQocmVzdWx0KQog
ewpAQCAtMzAyLDYgKzMxOCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdl
bmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAgbV9zdHVi
SW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3Mu
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFs
dWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9H
UFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8t
PmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BS
ID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAtMzEyLDIwICszMjksMjMgQEAgSklUR2V0QnlWYWxHZW5l
cmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAg
ICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNo
YWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRHZXRC
eVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtC
dWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlu
a0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVCht
X3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwg
c2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3Rh
cnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRy
ID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1KSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKQotICAgIDogQmFz
ZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRS
ZWdpc3RlcnMpCitKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6
IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nl
c3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vz
c1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kIHx8IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6U2V0
UHJpdmF0ZUJyYW5kKTsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBm
YWxzZTsKQEAgLTMzMyw2ICszNTMsNyBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6
OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogICAgIG1f
c3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5y
ZWdzLmJyYW5kR1BSID0gYnJhbmQucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1
YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFn
R1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJh
bmQudGFnR1BSKCk7CkBAIC0zNDMsMTYgKzM2NCwxOSBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bAogdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAg
bV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7Cisg
ICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBh
dGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZh
c3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xv
d1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxp
emUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRT
dHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRo
LCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAg
ICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRp
b247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQw
Zjk2Y2IyNTUxOTU1NDhiMGYyZWI2NTEuLmI2OTA4Nzg1NzY0MzhkOTdkOTk0MzBhYzYzZDkxN2Jj
MmVjOTNmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBj
bGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90
OworZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdDsKIAogY2xhc3MgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IgewogcHJvdGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9
Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihDb2RlQmxvY2sqLCBKSVRU
eXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycyk7CiAgICAgCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQpAQCAtNjUsNiArNjUs
NyBAQCBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAg
ICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBtX2RvbmU7CkBAIC03Nyw4ICs3OCw4IEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0K
IAogICAgIEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAg
ICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVi
bGljOgogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CkBAIC0x
MDEsMTMgKzEwMiwxMyBAQCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoSnVt
cDsKIH07CiAKLWNsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVy
YXRvciB7CitjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwg
QWNjZXNzVHlwZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIApAQCAtMTE1LDI2ICsxMTYsMjYgQEAgY2xhc3Mg
SklUR2V0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBib29s
IG1faXNMZW5ndGhBY2Nlc3M7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAg
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdGhpc1JlZ3MpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxl
SWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHRoaXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRQdXRCeUlk
R2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUUHV0QnlJZEdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJp
Y3QoKSkKICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpT
VmFsdWVSZWdzIGJhc2UsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9p
ZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsMTQgKzE0
NiwxNCBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogICAgIFB1dEtpbmQgbV9wdXRLaW5kOwogfTsKIAotY2xhc3MgSklURGVsQnlWYWxHZW5l
cmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklURGVsQnlW
YWxHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAg
IHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRE
ZWxCeVZhbEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAg
IENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIs
IEdQUlJlZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVt
cCgpIGNvbnN0CiAgICAgewpAQCAtMTcwLDE0ICsxNzEsMTQgQEAgY2xhc3MgSklURGVsQnlWYWxH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklURGVs
QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBK
SVREZWxCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAg
ICAgSklURGVsQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigK
LSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9H
UFIsIEdQUlJlZyBzY3JhdGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRo
SnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMTk1LDQyICsxOTYsNTAgQEAgY2xhc3MgSklURGVsQnlJ
ZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRJ
bkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRJbkJ5
SWRHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJ
VFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2Vu
ZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRJ
bnN0YW5jZU9mR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKIHB1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiAg
ICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigpIHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZH
ZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAg
ICBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVn
IHNjcmF0Y2gyLAorICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3Vs
dCwKKyAgICAgICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHBy
b3RvdHlwZUlzS25vd25PYmplY3QgPSBmYWxzZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93
UGF0aEp1bXAoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1f
anVtcC5pc1NldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAg
ICB9CisKICAgICB2b2lkIGZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwg
TGlua0J1ZmZlciYgc2xvd1BhdGhMaW5rQnVmZmVyKTsKIAogcHJpdmF0ZToKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX2p1bXA7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1
bXA7CiB9OwogCi1jbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAK
ICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBK
U1ZhbHVlUmVncyByZXN1bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjUxLDE0ICsyNjAs
MTQgQEAgY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IgewogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhK
dW1wOwogfTsKIAotY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNp
bmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sq
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgYnJhbmQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKaW5kZXggZTc5Y2QzNmVmNTdkN2JkY2VjZTE3NjhkMDU4OGFmZWVkODg4
NTAxNS4uMjhhNjQzMzdlMmYwOGY1ZjIwYWRhNzM3YmI3NmJjYjQ3MzYyMjhmMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklU
OjplbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5
TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUg
YXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykK
IHsKICAgICBzd2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAg
IHJldHVybiBlbWl0SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAg
ICAgIHJldHVybiBlbWl0SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlW
YWxJbmZvKTsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVM
b2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91
YmxlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2Fz
ZSBKSVRDb250aWd1b3VzOgotICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJl
bnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xv
YWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklU
QXJyYXlTdG9yYWdlOgotICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVu
dEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VM
b2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjgsNiArMTI4LDEzIEBAIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KGNvbnN0IEZ1bmN0CiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAg
ICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICBl
eGNlcHRpb25DaGVjaygpOworfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gZnVuY3Rpb24pCiB7CkBAIC0xNTcsNiArMTY0LDE2IEBAIEFMV0FZU19JTkxJTkUg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
SlNWYWx1ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVu
Y3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0U3RvcmUoZHN0
LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBNZXRhZGF0YT4KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9m
aWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKIHsKQEAgLTE3MSw2ICsxODgsMTkgQEAg
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgTWV0YWRhdGE+CitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRh
ZGF0YSwgQWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1
ZUdQUjIsIHJldHVyblZhbHVlR1BSKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVH
UFIyLCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlciwgVmlydHVhbFJlZ2lzdGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5p
c0tub3duQ2VsbChyZWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
aW5kZXggYmQ1NWEzZDA1MTZkNDZiNjdhZTU5N2I2YzNhNGY1ODdiNWZkZDczMC4uNDVhMDc1MWM5
NmM2YTJhY2U4YjY0ZmYwNGYzNDkwM2NkZDFmNzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNjQsMTMgKzE2NCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0
YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQK
ICAgICAgICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAg
ICByZWdUNSwKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbnN0YW5jZU9mcy5h
cHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0x
ODYsNyArMTkxLDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAg
ICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDIsIHJlZ1QxKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6
ZSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOwor
ICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5j
ZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTcxOSw3ICsxNzMx
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAg
ICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBK
dW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rp
b24sIGFycmF5TW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExv
YWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51
bGxwdHIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dHJ1ZSkpKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTczNCw4ICsx
NzQ2LDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZh
bEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBw
YXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNf
aW5kZXhlZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5n
KCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAg
ICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hD
YWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUo
KSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNv
ZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9u
Q2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRk
cmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE3NjksMTEgKzE3ODYsMTIgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3QKIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIg
dHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNl
cyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlw
ZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVu
dEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIAogICAgIG1vdmUo
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwog
Ci0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwog
ICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVs
KCk7CkBAIC0xNzk5LDcgKzE4MTcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVt
ZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8p
OworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYnlWYWxJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVy
YXRpb248ZGVjbHR5cGUob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJl
c3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCwgcmVnVDEsIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAgICBjYWxs
ID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3Qs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1Qx
LCBieVZhbEluZm8pOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGls
YXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA4
ZGIzNTllYmQ4Y2QwNTY2OTczYjg2M2M0ODY3NDFhN2ZhZTIyNDVlLi40ZDc0MTI2YmUxZTNkZTQz
MGQzYTZkOWNiN2ZkZGI2ZGM4NmY3ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNjIsMTMgKzE2MiwxNSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0
YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQK
ICAgICAgICAgcmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAg
ICBJbnZhbGlkR1BSUmVnLAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0
U3RvcmVCb29sKGRzdCwgcmVnVDApOwpAQCAtMTE4Myw3ICsxMTg1LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1
cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5
cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMg
PSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFk
VHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3Vy
cmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0x
MTk4LDcgKzEyMDAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVy
dHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVC
bG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxp
bmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRv
Q1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVl
KCkpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJh
ZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoSnVtcChieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgp
KSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0
dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJU
YWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CiB9CiAKQEAgLTEyMzQsNyArMTIzNiw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBz
bG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUs
IGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2Rl
KGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNjAzZjkz
YTlhZmYyMWQ5ZGQ0YjFiYjQ5Nzk5YzljMmEzYWNmYzU3Li4xNmJkYTA5MWIwNTNjMTAzOWRkMzVl
Y2E3NTExYTRhYjc5OGViNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTEwMDIsNyArMTAwMiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YQogICAgIGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAg
ICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9v
a1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5l
cmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAg
IGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0
dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVy
aWMpOwogICAgIH0KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2Jh
bE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2Rl
KSk7CiB9CkBAIC0xMDk0LDcgKzEwOTcsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAg
ICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8v
IERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5B
ZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2Vu
ZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBi
eVZhbEluZm8sIGVjbWFNb2RlKSk7CkBAIC0xMjc4LDcgKzEyODQsMTAgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0ds
b2JhbE9iamVjdCoKICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJl
c3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgog
ICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyks
IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2st
PnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVS
Tl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yNTY3LDcgKzI1NzYsMTEgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1Zh
bHVlLCAoSlMKICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAg
ICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAg
ICAgICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUyksIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgICAgICBieVZhbElu
Zm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFz
SW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNjQ0NjdlOWEy
NWUxNDc3ZTFlYzA2MzVkNDA5NzU0ZDhlNzUzOTJlZi4uZDE3MmVkZjExN2Y3YTgzMWFlYzczZTll
NGRkMGY0YTYzMzQ1ZmU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTY5LDEyICs2OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICAgICAg
SklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSks
IHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpLCByZXN1bHRSZWdzLCByZWdUMik7CiAgICAgICAgIGlmIChpc09wZXJhbmRDb25z
dGFudEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c0ludDMyID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAg
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFk
ZFNsb3dDYXNlKCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAg
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBy
ZXN1bHRSZWdzKTsKQEAgLTkzLDggKzk2LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAog
ICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21f
Z2V0QnlWYWxJbmRleDsKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTExOCw3ICsx
MjEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKHByb2ZpbGUpLCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChv
cGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvbkdldEJ5VmFsT3B0aW1pemUpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVl
R1BSKTsKQEAgLTEzOCw3ICsxNDUsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xNTcsOSArMTY1LDEwIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5
VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
IAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3Rs
eSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRv
IHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlf
dmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xODIsMTAgKzE5MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVy
dHlHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAg
ICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1
bHRSZWdzKTsKQEAgLTIwMSw4ICsyMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4
OworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFs
SW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0yMjYsNyArMjM3LDExIEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjQ1LDcgKzI2MCw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBK
SVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5
ICsyNzksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlz
IGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAg
ICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQo
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNl
CisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKQEAgLTI4NSwxMCAr
MzAyLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2VHUFIsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJh
bmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVC
cmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpLCByZWdUMik7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxz
ZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBw
ZW5kKGdlbik7CiAKICAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0IHRoZSBl
bmQgb2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3RlcnMuCkBA
IC0zMDIsOCArMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKIHsKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBn
ZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwot
ICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRB
Y2Nlc3NJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTMyOCw5ICszNDcsMTQgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRy
YWl0czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVu
dFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAjZW5kaWYKKwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CiB9CiAKQEAgLTM0NiwxMCArMzcwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNr
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFj
Y2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1Nyw4ICszODQsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudAogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNj
ZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFj
Y2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9w
cml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQpAQCAtMzgzLDcgKzQwOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFp
dHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5
cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1By
aXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC00MTUsOCArNDQ1LDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogICAgIFBh
dGNoYWJsZUp1bXAgbm90SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0ludGVnZXJDb25z
dGFudCkgewotICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVn
VDEpOwotICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGF1dG8g
aXNJbnQzMiA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgICAgICAgICAgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQo
cmVnVDEpOworICAgICAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICB9CiAg
ICAgICAgIC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgICAgIHplcm9FeHRl
bmQzMlRvV29yZChyZWdUMSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwyMyArNDY4LDI0IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxl
KTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNs
b3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8p
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2Vz
ID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZh
bEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
KTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBDUkFTSCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd0Nh
c2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNl
KHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC00NTcsNyAr
NDk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVt
cExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCitKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUg
aW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3Zh
bHVlOwpAQCAtNDY1LDcgKzUwMiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWND
b250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogICAgIAog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBp
ZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gz
MihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgICAgICAg
ICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0
KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5r
KHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
cmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAgICAKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAg
ICBKdW1wIG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVz
cyhyZWdUMiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MTUsNyAr
NTYxLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJh
eVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKQEAgLTUyMyw3ICs1NjksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJh
eVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAg
ICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBl
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkg
eworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5
cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFw
ZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9i
YWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlz
Q29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJy
YXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBl
KSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0
KCkpKSk7CiAKQEAgLTU2OCw4ICs2MjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1p
dFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdUMSk7CiAKICAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9k
ZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHBy
b3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MSksIHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1
cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1F
OiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0
byByZWR1Y2UgY29kZSBzaXplLgpAQCAtNTgwLDcgKzYzNSwxMyBAQCBKSVRQdXRCeUlkR2VuZXJh
dG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1
dEtpbmQsCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgZ2VuLnNsb3dQ
YXRoSnVtcCgpLmxpbmsodGhpcyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0Jp
dHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3Bl
cmF0aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86
Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8o
KSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQo
anVtcCgpKTsKIApAQCAtNjM4LDggKzY5OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8Uwog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBhdXRv
KiBvcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUg
OiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRp
b24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
aXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0
QnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcyMSw4IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQg
aml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5ICs3
NDAsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIpOwog
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRp
b24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQu
Ci0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBC
eVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAg
ICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsKQEAgLTY5Niw4ICs3NjIs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QwLCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFi
bGVKdW1wKCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIFBhdGNoYWJsZUp1
bXAgZmFzdFBhdGhKbXA7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZWxzZSB7
CisgICAgICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgICAgICBhZGRTbG93
Q2FzZShmYXN0UGF0aEptcCk7CisgICAgfQogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgp
OwogICAgIApAQCAtNzQzLDcgKzgxNCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZU9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYx
LDcgKzgzNiw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKQEAgLTc3OSw5ICs4NTUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5
VmFsSW5mb0dQUiwgcHV0S2luZEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJl
Y3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5n
IHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1
bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKQEAgLTg0NiwxMSArOTIzLDE0IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgYmFzZSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQs
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVl
UmVncyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVl
UmVncyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgp
OwogICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAtODk4LDE1ICs5NzgsMTggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVl
KCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAg
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BS
ID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29s
ZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
QEAgLTkxOCw3ICsxMDAxLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3Jl
MzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpOwpAQCAtOTM1LDkgKzEwMTksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5
IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8g
dGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9p
ZF9wcmVwYXJlQ2FsbCIpOwpAQCAtOTU2LDEwICsxMDQxLDEzIEBAIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRTbG93Q2FzZSgpOwogICAgIG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTEwMDgsMTUgKzEwOTYsMTggQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5t
X2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZTsK
KyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fz
c2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMDI4LDcgKzExMTksOCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxs
R2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7
CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVz
cygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkgKzExMzcsMTAg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVs
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhp
cyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0g
ICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0
KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxz
ZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xMDY4LDggKzExNjEs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTExMTAsNyArMTIwMywxMSBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0bwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0
eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0
QnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAg
ICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CiAgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsxMjMwLDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nl
c3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0
UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTc2LDcgKzEyNzMsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5
SWREaXJlY3RPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgZWxz
ZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMDgsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNj
ZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3Ms
IHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5
SWRzLmFwcGVuZChnZW4pOwpAQCAtMTIzMyw4ICsxMzM0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAg
ICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNX
aXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTEyNzUsNyArMTM3NiwxMSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFk
YXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjk0LDcgKzEzOTksOCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2
bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMjsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzExLDkgKzE0MTcs
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwg
ZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVy
bmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
Z2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xMzU0LDcgKzE0NjEsMTEgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZFdpdGhU
aGlzT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRp
b25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BS
KTsKQEAgLTEzNzMsNyArMTQ4NCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEzOTIsOSArMTUwNCwxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlz
X3ByZXBhcmVDYQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VH
UFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRp
cmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5y
ZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1MzEsMTAgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJl
Zyk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMSksIHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3Qg
PyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNDY1LDcgKzE1NzcsMTEgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgZWxz
ZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCkBAIC0xNDgxLDcgKzE1OTcsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwog
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAg
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAg
ICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MTcsMTAgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
dmFsdWVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBj
YWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiBy
ZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBq
aXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAg
IGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjM5LDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAog
ICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU2NCw3ICsxNjgyLDEx
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbklu
QnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJl
ZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZS
ZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI3NTQsOCArMjg3Niw4IEBAIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQg
cHV0S2luZCwKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBy
ZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1Qx
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI3NjUsNyArMjg4
NywxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElk
KE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRv
ciBvbmx5IHByZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZl
IHRvIHJlbG9hZCB0aGUgdGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMo
KSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihn
ZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0
aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1l
LnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdl
bi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0
dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwog
CkBAIC0yODE3LDI5ICsyOTQ1LDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFs
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAgICBz
d2l0Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2Vz
ID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAg
ICAgICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBl
bWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAg
ICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5cGVG
b3JKSVRBcnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQotICAg
ICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJpZ1Vp
bnQ2NEFycmF5IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJyYXkg
LyBCaWdVaW50NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAgQVNT
RVJUKGlzRmxvYXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlw
ZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNs
b3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwg
bnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjg2
Niw4ICsyOTk0LDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBtX2Nv
ZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAgICAg
IkJhc2VsaW5lIHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAi
LCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRW
YWx1ZSgpKTsKICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5m
by0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZh
bEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAg
ICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRU
eXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRo
aXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5p
dCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3Rl
ZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KQEAgLTI5MDYsOCArMzA0MCwxMyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8q
IGJ5VmFsSW5mbywgUmV0dXJuQQogICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3
aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAl
cCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVC
bG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJ
bmZvLT5zdHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hKdW1wKGJ5VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkp
OwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVy
bkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFn
PihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
UHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1w
VGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xv
d09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2Ug
eworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdElu
ZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMp
KTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMjk0NCwxNSArMzA4Mywy
MCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3Zh
bCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBv
aW50ICVwIiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBw
cm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2sp
LmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+
c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0
S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9u
UHV0QnlWYWxHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0
ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlW
YWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAg
fQogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFu
c2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUg
dHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJ
bmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0
ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1
dEJ5VmFsRGlyZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNo
ZWFibGVJZGVudGlmaWVyKTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3Qg
SklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
UmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0yOTY4LDcgKzMxMTIsMTYgQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVT
aGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJl
Y3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hh
cGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1f
YmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBp
c0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMy
KERvdWJsZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOwor
CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBw
cm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKSk7CiAgICAgbG9hZERvdWJsZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVz
RWlnaHQpLCBmcFJlZ1QwKTsKQEAgLTI5NzcsNyArMzEzMCw3IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRD
b250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250
aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk5NSw3ICsz
MTQ4LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5n
LCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgewor
ICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5n
LCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQor
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBU
cnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJ
bmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDA0LDcg
KzMxNjYsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7
CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJl
Z2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzAyMyw3ICszMTg1LDE2IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3Rl
ZEltbTMyKC1BcnJheVN0b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93
UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAo
YnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihC
ZWxvd09yRXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRy
VGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0
Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VT
aGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
QWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBB
cnJheVN0b3JhZ2VTaGFwZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJh
bmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3Jh
Z2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMzAzNSw3ICszMjA2LDcgQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjpl
bWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJh
eVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMDYwLDcg
KzMyMzEsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlw
ZSh0eXBlKSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlz
Q29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5
cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5j
aDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxl
T3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKQEAgLTMxMTEsNyArMzI5Miw3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3Qg
SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBlZEFycmF5VHlwZSB0eXBlKQog
ewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwog
ICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAg
LTMxMzYsNyArMzMxNywxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0
IHNsb3dDYXNlczsKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVk
QXJyYXlUeXBlKHR5cGUpKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAg
IGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0
ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1
bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRT
dHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5
cGUodHlwZSkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJh
eVR5cGUodHlwZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRz
ID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJh
eVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIy
Yzc3MDQyODlhYmIwODJmOWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMGUzYmU2YWY4NDJjZTlkMDI2
MjEzNWRlZDU2YzliMGFlYmRlMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBh
eWxvYWRHUFIoKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VS
ZWdzLnRhZ0dQUigpKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLAotICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNl
UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdz
LnRhZ0dQUigpKTsKIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdz
LCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAg
LTI1Nyw4ICsyNTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0
QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRH
UFJSZWcpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAg
ICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJl
c3VsdFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywg
SW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdl
bik7CkBAIC0zOTMsOCArMzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVC
cmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBi
YXNlUmVncywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwg
YmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVC
cmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBi
YXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywg
SW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nl
cy5hcHBlbmQoZ2VuKTsKQEAgLTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRB
cnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1v
ZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQz
MlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3Vz
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29u
dGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbElu
Zm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAt
NTExLDcgKzUxMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgot
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkK
K0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4
aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOwpAQCAtNTIwLDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2Vu
ZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5m
byk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKENvbnRpZ3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNTcyLDcgKzU3
Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChP
cCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBP
cD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKQEAgLTU4MSw2ICs1ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbEluZm8pOwog
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNjYwLDggKzY2Miw4
IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcs
IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMu
YXBwZW5kKGdlbik7CkBAIC03MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZERp
cmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc0
OCw4ICs3NTAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCks
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJS
ZWcsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMu
YXBwZW5kKGdlbik7CkBAIC03OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAg
ICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMp
LCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMu
YXBwZW5kKGdlbik7CkBAIC04MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRH
UFJSZWcsCiAgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVj
dCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVElu
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9p
bkJ5SWRzLmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91
dGluZS5oCmluZGV4IDg4MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2Y2RmYWIuLjE2
ZDlkMWQzMGEwNjRiYTU5MjdlZDc4Y2QxZWQyODlmY2RlYmYzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorI2lmIFVTRShK
U1ZBTFVFNjQpCit1c2luZyBTdHJ1Y3R1cmVJRCA9IHVpbnQzMl90OworI2Vsc2UKK3VzaW5nIFN0
cnVjdHVyZUlEID0gU3RydWN0dXJlKjsKKyNlbmRpZgorCitjbGFzcyBBY2Nlc3NDYXNlOworCiAv
LyBUaGlzIGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFuZCBhbHNvIHRo
ZSBjbGFzcyB5b3Ugd2FudAogLy8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkgaWYgeW91IGhhdmUg
YSByb3V0aW5lIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJvbSB0aGUgR0MuIElm
IGluIGRvdWJ0LCB1c2Ugb25lIG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVzLiBCdXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5jcHAKaW5kZXggMWY3NjA2ODYyNzNkZGE4MWNiYjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4u
NDExNWJhMjVjZWQxNjIzYjNhMjg1MTdlY2I2ZDJiODU1OTgwZjY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nl
c3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiRnVsbENvZGVPcmlnaW4uaCIKQEAgLTY3LDcgKzY4LDcgQEAgUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGVSZWYs
IFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwKICAg
ICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYg
Y2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKLSAgICA6IEdD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlUmVmKQogICAgICwgbV92YXJpYW50cyhjYXNlcy5zaXplKCkpCiAgICAgLCBtX2Zh
c3RDb3VudHMoV1RGTW92ZShmYXN0Q291bnRzKSkKIHsKQEAgLTgwLDYgKzgxLDcgQEAgUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAg
ICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdQb2x5bW9ycGhpY0NhbGwoY2FsbGVyRnJhbWUs
IG1fY2FsbE5vZGVzLmFkZCgmaW5mbykpOwogICAgIH0KICAgICBXVEY6OnN0b3JlU3RvcmVGZW5j
ZSgpOworICAgIG1ha2VHQ0F3YXJlKHZtKTsKIH0KIAogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmU6On5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggOTA1ZjhkN2YyYWZiZjViMDA2MWVmM2Q3NWY3ZjY2NmViZDFk
Y2EwNC4uMjczZDc1OTUyMGZmNDBiZTRmMTFjMjRlYTU5M2Q5NDBkMjkzMTRlZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC03MSw4ICs3MSwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElD
Q2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVy
bmFsUHRyVGFnPiBjYWxsKQorc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gcmVh
ZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogeworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAg
IHJldHVybiBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9uUHRyVGFn
PigpOworICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCA9IHN0dWJJ
bmZvLm1fc2xvd1BhdGhDYWxsTG9jYXRpb247CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgaWYg
KGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAgICBGdW5j
dGlvblB0cjxKSVRUaHVua1B0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxs
VGFyZ2V0PEpJVFRodW5rUHRyVGFnPihjYWxsKTsKQEAgLTEwNSw2ICsxMDgsMTUgQEAgdm9pZCBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlv
bkNhbGw8SlNJbnRlcm5hbFAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbCwg
bmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0KIAorc3Rh
dGljIHZvaWQgcmVwYXRjaFNsb3dQYXRoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0Nh
bGxlZUZ1bmN0aW9uKQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAg
ICAgICAgc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdn
ZWQ8T3BlcmF0aW9uUHRyVGFnPigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG5ld0NhbGxlZUZ1bmN0aW9uKTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7
CiAgICAgR2l2ZVVwT25DYWNoZSwKICAgICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMDksNyArMjIx
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0g
YmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQg
PT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5h
bWVCeUlkOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwor
ICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlz
SlNBcnJheShiYXNlQ2VsbCkpIHsKQEAgLTIxOSw3ICsyMzEsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqCiAKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0g
SW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJh
eSo+KGJhc2VDZWxsKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5s
aW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemlu
Z0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8u
aW5pdEFycmF5TGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOSwx
MSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0g
QWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3Ro
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VD
ZWxsKSkgewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNo
ZVR5cGU6OlVuc2V0ICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1
YkluZm8pKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENh
Y2hlVHlwZTo6VW5zZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0Nh
Y2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9v
bCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0
aChzdHViSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5l
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dl
dEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5p
dFN0cmluZ0xlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
dHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTUsMTEg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNo
cG9pbnRTZXQoKQogICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9w
ZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5
KSB7Ci0KICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVB
Y2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNs
b3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5s
aW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0
Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3Bl
cnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVu
dHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9w
cmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvLmluaXRHZXRCeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBz
bG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0Mzcs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkdldEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2VWYWx1ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQz
OSw3ICs0NTEsNyBAQCB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYQogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVHZXRC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBwcm9wZXJ0eU5hbWUsIHNsb3Qs
IHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJl
UmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBw
cm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOwog
fQogCiAKQEAgLTUyOSw3ICs1NDEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogICAgICAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNs
YXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywg
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU0MCw3ICs1NTIsNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlLCBKU1Zh
bHVlIGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHRyeUNh
Y2hlQXJyYXlHZXRCeVZhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZSwgaW5kZXgsIHN0
dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0
QnlWYWxHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHBy
b3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90
LCBQdXRLaW5kIHB1dEtpbmQpIC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0KQpAQCAtNjM2LDcgKzY0OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAg
IGlmIChpc1Byb3h5ICYmIChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNl
dCB8fCBwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7
CiAKICAgICAgICAgaWYgKHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVh
YmxlUHV0KCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNs
b3Q6OkV4aXN0aW5nUHJvcGVydHkpIHsKQEAgLTY1OCw3ICs2NzAsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUg
PSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xk
U3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygo
SUNFdmVudDo6UHV0QnlJZFNlbGZQYXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRL
aW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90
LCBwdXRLaW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJ
ZFJlcGxhY2UobG9ja2VyLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZz
ZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRy
eUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MTMsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtODE1LDcgKzgyNyw3IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNh
Y2hlUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2Fj
aGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24o
c2xvdCwgcHV0S2luZCkpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5k
KSk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgRGVsQnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTg0Niw3ICs4NTgsNyBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSkKICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsK
ICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBA
IC04NzQsNyArODg2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRl
QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKHJl
c3VsdC5nZW5lcmF0ZWRTb21lQ29kZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNl
V2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1YkluZm8s
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg5MSw5ICs5MDMsOSBAQCB2b2lkIHJlcGF0Y2hEZWxl
dGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RGVsZXRlUAogICAgIGlmICh0cnlDYWNoZURlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywg
a2luZCwgZWNtYU1vZGUpID09IEdpdmVVcE9uQ2FjaGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChn
bG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpKSk7CiAgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKICAgICB9
CiB9CiAKQEAgLTkzNyw3ICs5NDksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVJbkJ5SUQoCiAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAg
ICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxh
Y2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUpOwogICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0SW5CeUlkU2VsZihsb2Nr
ZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTk4NCw3ICs5OTYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVJbkJ5SUQoCiAKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nh
c2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFz
ZSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKAorICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vz
c0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNj
ZXNzQ2FzZTo6SW5IaXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91
bmQgPyBzbG90LmNhY2hlZE9mZnNldCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1
bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsK
QEAgLTk5Myw3ICsxMDA1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5C
eUlEKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwot
ICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAg
ICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2Nr
LCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTAwNyw3ICsxMDE5LDcgQEAgdm9p
ZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU09iamVjdCoKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZv
KSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsK
KyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25JbkJ5SWQpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1By
aXZhdGVCcmFuZCgKQEAgLTEwMzIsNyArMTA0NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5
ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFkZEFj
Y2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkp
OwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpj
cmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUp
OwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3Zl
KG5ld0Nhc2UpKTsKIApAQCAtMTA0MCw3ICsxMDUyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkNoZWNrUHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihy
ZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xMDU0LDcgKzEwNjYsNyBAQCB2b2lkIHJlcGF0Y2hDaGVja1ByaXZh
dGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
awogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAg
IGlmICh0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CisgICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
U2V0UHJpdmF0ZUJyYW5kKApAQCAtMTA5MSw3ICsxMTAzLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3Bl
cnR5ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRBZGRB
Y2Nlc3NDYXNlLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVy
dHkpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBv
bGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdD
YXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJy
YW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKIAogICAgICAgICByZXN1bHQgPSBz
dHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVD
TUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTEwOTks
NyArMTExMSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVC
cmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kUmVwbGFj
ZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNCYXNlUHJvcGVy
dHkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMTEzLDcgKzExMjUsNyBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hl
U2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRT
dHJ1Y3R1cmUsICBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0
YW5jZU9mKApAQCAtMTEzMyw3ICsxMTQ1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlSW5zdGFuY2VPZigKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1
ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5z
dHJ1Y3R1cmUodm0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2Fz
ZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVl
KTsKICAgICAgICAgaWYgKHByb3RvdHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIHZhbHVlKSkgewpAQCAtMTE2NywxMCArMTE3OSw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICBMT0df
SUMoKElDRXZlbnQ6Okluc3RhbmNlT2ZSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIElkZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hKdW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKLSAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
fQogICAgIH0KICAgICAKQEAgLTExODUsNyArMTE5NCw3IEBAIHZvaWQgcmVwYXRjaEluc3RhbmNl
T2YoCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIGlmICh0cnlDYWNoZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZhbHVl
VmFsdWUsIHByb3RvdHlwZVZhbHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9uQ2Fj
aGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CisgICAg
ICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5z
dGFuY2VPZkdlbmVyaWMpOwogfQogCiBzdGF0aWMgdm9pZCBsaW5rU2xvd1BhdGhUbyhWTSYsIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IGNvZGVSZWYpCkBAIC0xMjAyLDcgKzEyMTEsNyBAQCBzdGF0aWMgdm9pZCBs
aW5rU2xvd0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0g
dmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIGxpbmtTbG93UGF0aFRvKHZt
LCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dT
dHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAg
ICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUo
dm0sIHZpcnR1YWxUaHVuaykpOwogfQogCiBzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVy
KEpTQ2VsbCogY2FsbGVlKQpAQCAtMTMyMCw3ICsxMzI5LDcgQEAgc3RhdGljIHZvaWQgbGlua1Zp
cnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJbmZvJiBjYWxs
TGlua0kKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4g
dmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIHJl
dmVydENhbGwodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5r
LCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6OmNyZWF0ZSh2bSwgdmlydHVhbFRodW5rKSk7CiAgICAgY2FsbExpbmtJbmZvLnNldENsZWFy
ZWRCeVZpcnR1YWwoKTsKIH0KIApAQCAtMTY0MSwxNCArMTY1MCwxNCBAQCB2b2lkIGxpbmtQb2x5
bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENhbAogCiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0QnlLaW5kIGtpbmQpCiB7Ci0gICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwotICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExv
Y2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFw
cHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgIElubGluZUFjY2Vz
czo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZv
aWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCiB7CiAgICAgdXNpbmcgRnVuY3Rpb25UeXBlID0gZGVjbHR5cGUoJm9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgRnVuY3Rpb25UeXBlIHVub3B0aW1p
emVkRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2Fs
bFRhcmdldChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9j
aywgc3R1YkluZm8pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIEZ1bmN0aW9uVHlwZSBvcHRp
bWl6ZWRGdW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0
cmljdE9wdGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3RPcHRpbWl6ZTsKQEAgLTE2NjUsNDUgKzE2NzQsNDEgQEAgdm9pZCByZXNldFB1dEJ5
SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAg
ICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0
T3B0aW1pemU7CiAgICAgfQogCi0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKLSAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBvcHRpbWl6ZWRGdW5jdGlvbik7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJB
c0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldERlbEJ5
KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5
S2luZCBraW5kKQogewogICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAgICAgICAgcmVwYXRj
aFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0
aW1pemUpOwogICAgIGVsc2UKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywg
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKLX0KLQotc3RhdGljIHZvaWQgcmVzZXRQ
YXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKLXsKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5z
bG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGlu
ZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJs
b2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsK
KyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1
YkluZm8pOwogfQogCi12b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5m
byk7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRDaGVja1ByaXZh
dGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsK
LSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNs
b3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxp
bmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVC
bG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlv
bik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRy
KFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU09iamVjdCogY2FsbGVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCAzMTM3OWRjNGU1YTlkYzJkYzZlYTQ5
MzE3Nzk0NzI2YTAwMjAzNTFhLi4zYTE5ZmQzNjU0OWQxYTg0ODA5Zjk0ZGFkYTJkZmJlNTcwMDBm
ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQp
Owogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZv
aWQgcmVzZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7
CiB2b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lk
IHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluc3RhbmNl
T2YoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZh
dGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFBy
aXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFs
UHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBjOWRl
NmE4YTM4YzExYjY5Mzc2MTljMWU1OTRhZDE0NTFiM2YxYTk5Li5lN2NkY2RhMzYzMzg0ZDM0NWM4
MWI0ODJkYTI3YjdkMWRjMmVjZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKQEAgLTUzOCw2ICs1MzgsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29s
IGNhblVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VUb3BMZXZlbEF3YWl0LCB0cnVl
LCBOb3JtYWwsICJhbGxvdyB0aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEg
bW9kdWxlLiIpIFwKICAgICB2KEJvb2wsIHZlcmJvc2VFeGVjdXRhYmxlUG9vbEFsbG9jYXRpb24s
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVNoYXJlZElDLCBpc0FS
TTY0KCksIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVkSUNJbk9wdGlt
aXppbmdKSVQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2
YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaAppbmRleCA4ZDA3YTI3NTc4MzM0MGJlYTRlMTBkZGE0OTE2M2QxM2I0OTgzZjEyLi5i
OGRkNGNiZDVkMjgxMDE1N2Y5YTk5YmQ5Y2IwZjA1NTFhMzZkOWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgU3RydWN0dXJlOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLXR5cGVkZWYgdWludDMyX3QgU3RydWN0dXJlSUQ7Cit1c2luZyBTdHJ1Y3R1cmVJRCA9IHVp
bnQzMl90OwogCiBpbmxpbmUgU3RydWN0dXJlSUQgbnVrZWRTdHJ1Y3R1cmVJREJpdCgpCiB7CkBA
IC01OCw3ICs1OCw3IEBAIGlubGluZSBTdHJ1Y3R1cmVJRCBkZWNvbnRhbWluYXRlKFN0cnVjdHVy
ZUlEIGlkKQogICAgIHJldHVybiBpZCAmIH5udWtlZFN0cnVjdHVyZUlEQml0KCk7CiB9CiAjZWxz
ZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLXR5cGVkZWYgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJRDsK
K3VzaW5nIFN0cnVjdHVyZUlEID0gU3RydWN0dXJlKjsKIAogaW5saW5lIFN0cnVjdHVyZUlEIG51
a2VkU3RydWN0dXJlSURCaXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IGJlYWM4NmViMGViOGNmNTEzOGVmYmZkYzM4MjM0NzQyYjhjYmRlMTEuLjRjMWJlNDE4MWZk
Mjc5ODM0ODBmYmI5NWI3M2U1NDE1YzdmNGM2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJWTS5oIgogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkFnZ3JlZ2F0ZUVy
cm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5oIgpA
QCAtNTY3LDYgKzU2OCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihD
b2RlRm9yQ2FsbCk7CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9y
KENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBtX3NoYXJlZEpJVFN0dWJzID0gbWFrZVVuaXF1
ZTxTaGFyZWRKSVRTdHViU2V0PigpOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCkBA
IC02NTUsNiArNjU3LDEwIEBAIFZNOjp+Vk0oKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3NjcmF0Y2hCdWZmZXJzLnNpemUoKTsgKytpKQogICAgICAgICBWTU1hbGxvYzo6ZnJlZSht
X3NjcmF0Y2hCdWZmZXJzW2ldKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEpJVCkKKyAgICBtX3No
YXJlZEpJVFN0dWJzID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiB2b2lkIFZNOjpwcmltaXRpdmVH
aWdhY2FnZURpc2FibGVkQ2FsbGJhY2sodm9pZCogYXJndW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAppbmRleCA5OGE3NWM2ZjhiOGRiMjc5ZDAyNmYzMmViZjNiYmNjNTQxYmFiMGY5
Li43NDIyYjlmNjc0ZTM1ZGMwNTExNGQ3ZTQ4MDM5Y2ViYWYwNjEyNmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE3NSw2ICsxNzUsNyBAQCBjbGFzcyBSZWdpc3RlckF0T2Zm
c2V0TGlzdDsKIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAjZW5kaWYKIGNsYXNzIFNoYWRvd0No
aWNrZW47CitjbGFzcyBTaGFyZWRKSVRTdHViU2V0OwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsK
IGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsKQEAgLTg0
NiwxMSArODQ3LDEzIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SklUVGh1bmtzPiBqaXRTdHViczsKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldENUSVN0dWIoVGh1bmtHZW5lcmF0b3IpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRKSVRTdHViU2V0PiBtX3NoYXJlZEpJVFN0dWJzOwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKICNlbmRpZgorCiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRI
b3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430426</attachid>
            <date>2021-06-02 17:40:38 -0700</date>
            <delta_ts>2021-06-08 14:01:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210602174037.patch</filename>
            <type>text/plain</type>
            <size>432031</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
Mzc3OTI5MDRlNmFkYmExZTIwZGFkZDVjNDBiZTIyZjU3YzA4YzEwLi5jYjQ2YmJkMzhiZGIyMWY0
OTNlMWQ5OTBjZDk1YjBmNzQ2ODQ0Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOTEgQEAKKzIwMjEtMDYtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbm9u
LXJlcGF0Y2hpbmcgSUMgZm9yIEJhc2VsaW5lIEpJVCBpbiBBUk02NC4KKyAgICAgICAgVGhpcyBk
b2VzIG5vdCB3b3JrIGluIG5vbi1BUk02NCBhcmNoaXRlY3R1cmVzIChpbmNsdWRpbmcgWDY0KSBk
dWUgdG8gdGhlIHVzZSBvZiBsaW5rLXJlZ2lzdGVyLgorCisgICAgICAgIDEuIFdlIGFkZCBub24t
cmVwYXRjaGluZyBJQywgd2hpY2ggaXMgZW5hYmxlZCBvbmx5IGluIEJhc2VsaW5lIGR1ZSB0byBw
ZXJmb3JtYW5jZSByZWFzb24uIFdlIGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgZXhpc3Rpbmcg
SUMgaW4gREZHIGFuZCBGVEwuIE5vbi1yZXBhdGNoaW5nIGluY2x1ZGVzIGZhc3QtcGF0aCwgYW5k
IHNsb3ctcGF0aCdzIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgMi4gV2Ugc3RpbGwga2Vl
cCBJbmxpbmVBY2Nlc3MgaW4gYWxsIHRpZXJzLiBSZW1vdmluZyB0aGF0IGNhdXNlcyAwLjMgfiAx
LjAlIHJlZ3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLiBUaGlzCisgICAgICAgICAgIG1lYW5zIHRo
YXQgd2Ugc3RpbGwgbmVlZCBzb21lIHJlcGF0Y2hpbmcgd2hlbiB3ZSBmaXJzdCBpbnRyb2R1Y2Ug
c3R1YnMuCisgICAgICAgIDMuIFdlIGFkZCBhIG1lY2hhbmlzbSB0byBzaGFyZSBnZW5lcmF0ZWQg
Y29kZSBzdHVicyBpbiBub24tcmVwYXRjaGluZyBJQy4gQ3VycmVudGx5LCBnZXR0ZXIgLyBzZXR0
ZXIgLyBjdXN0b20KKyAgICAgICAgICAgYWNjZXNzb3JzIGFyZSBleGNsdWRlZCBzaW5jZSB0aGVp
ciBjb2RlIHJlbGllcyBvbiBKU0dsb2JhbE9iamVjdCwgQ29kZUJsb2NrIGV0Yy4gd2hpY2ggYXJl
IG5vdCBpbmNsdWRlZCBpbgorICAgICAgICAgICBBY2Nlc3NDYXNlJ3MgZGF0YSBzdHJ1Y3R1cmUu
CisgICAgICAgIDQuIFRoaXMgcGF0Y2ggc3RpbGwgcmVsaWVzIG9uIHRoYXQgQ29kZUJsb2NrIHdp
bGwgYmUgZGVzdHJveWVkIHN5bmNocm9ub3VzbHkgc2luY2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhh
dCBzaGFyaW5nLWhhc2gtdGFibGUKKyAgICAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBhbHJlYWR5
LWRlYWQgSklUIGNvZGUgc3R1YnMuIFdlIGNhbiBmaXggaXQgKGUuZy4gYW5ub3RhdGluZyBlcG9j
aCB0byB0aGVzZSBzdHVicywgYnVtcCB0aGVtIGluCisgICAgICAgICAgIGZpbmFsaXplVW5jb25k
aXRpb25hbGx5KSwgYnV0IHdlIGF2b2lkIGRvaW5nIHRoYXQgdG8gcHJldmVudCBmcm9tIGZ1cnRo
ZXIgZW5sYXJnaW5nIHRoaXMgcGF0Y2guIFRoaXMgcGF0Y2ggaXMgYWxyZWFkeQorICAgICAgICAg
ICBzaWduaWZpY2FudCBpbiBpdHMgc2l6ZS4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0
cmFsIGluIEpldFN0cmVhbTIgYW5kIFNwZWVkb21ldGVyMi4gQnV0IGl0IG9mZmVycyB0aGUgd2F5
IHRvIHJlbW92ZSBzb21lIGNvZGUgZ2VuZXJhdGlvbiBpbiBCYXNlbGluZS4KKworICAgICAgICAq
IGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxvY2F0
aW9uT2YpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpj
cmVhdGVDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0
ZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1
cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlND
OjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpl
cXVhbEluU2hhcmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6QWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6Oktl
eTo6S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJT
ZXQ6Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpl
cXVhbCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xh
dG9yOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRy
YW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRl
clRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2lu
dGVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0Ojph
ZGQpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpyZW1vdmUpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpmaW5kKToKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbElu
Zm8uaDoKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpzZXRVcCk6CisgICAgICAgIChKU0M6OkJ5
VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZv
OjpvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCk6CisgICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6
b2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlU2hhcmVkSUMgY29uc3QpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRTY3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZSk6CisgICAg
ICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyk6CisgICAgICAg
IChKU0M6OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUNvZGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXApOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VP
ZkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZBY2Nlc3NDYXNl
OjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
aDoKKyAgICAgICAgKiBieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL01vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aGFz
aCBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpvcGVy
YXRvcj09KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJh
dG9yIT0pOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAg
ICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludCk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6c3VjY2VlZCk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjph
ZGRDYXNlcyk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlKToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0V2VhayBjb25zdCk6CisgICAgICAg
IChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAgKiBieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRp
b25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0
aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OlByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlBy
b3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mQ29kZVB0cik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dQYXRoU3RhcnRMb2NhdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5m
bzo6cGF0Y2hhYmxlSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFwcGVuZENhbGwpOgorICAgICAg
ICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQ
YXRoSUNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVC
eUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJp
dmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNl
dFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mRm9yQ2VsbHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeUlkRmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeUlkRGlyZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmdldFByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVByaXZhdGVCcmFuZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0
QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6
CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bGxPcGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAgICAgICog
ZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2Fs
bEtleTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxL
ZXk6OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENh
bGxLZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxL
ZXk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFs
Q2FsbCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2Fs
bEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OkFyZ0NvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hSZWdBcmcpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OnB1c2hFeHRyYVJlZ0FyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaE5vbkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSQXJnKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRHUFJFeHRyYUFyZyk6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkU3RhY2tBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFBva2UpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1bGF0ZVBva2VPZmZzZXQpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6c3RhY2tBbGlnbmVkKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjptYXJzaGFsbEFy
Z3VtZW50UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1l
bnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWdu
ZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVO
VF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0
ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNFbnRyeUltcGwpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxw
ZXJzOjpzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbCk6CisgICAgICAgICogaml0L0dDQXdh
cmVKSVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGlu
ZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjptYWtlR0NBd2FyZSk6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGlu
ZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2VKSVRTdHVi
Um91dGluZTo6QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lOjpjb21wdXRlSGFzaCk6CisgICAgICAgIChKU0M6Ok1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUp
OgorICAgICAgICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxl
cjo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAo
SlNDOjpjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1
YlJvdXRpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aDoKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU6OmtleXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU6OndlYWtSZWZlcmVuY2VzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lOjpoYXNoIGNvbnN0KToKKyAgICAg
ICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjp1c2VTaGFyZWRJQyk6CisgICAgICAgICogaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUSW5saW5lQ2FjaGVHZW5lcmF0
b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6
SklUQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFs
aXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9u
KToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6
SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9y
OjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlWYWxHZW5lcmF0
b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVs
QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0
QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93
UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVs
QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpz
bG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91YmxlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdl
TG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRTdHViUm91dGluZS5oOgorICAgICAg
ICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSk6Cisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFy
Z2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNsb3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeUlE
KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hl
Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluc3Rh
bmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6
OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAgICAgICAo
SlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAgICAgICAg
KEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0SW5CeUlEKToKKyAgICAgICAg
KEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVzZXRDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0U2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpT
Qzo6cmVzZXRQYXRjaGFibGVKdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5o
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorCiAyMDIxLTA1LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBVbmNoZWNrZWRDb25kaXRpb24gLyBVbmNoZWNrZWRMb2NrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IGExNDM5NDg1ZmRjNjE1
YTQ2NTJmMDE1NDIzMGExNWYyNDdkMDAzOTMuLjc5ZWVmMmMyMDY1ZGQxNzM1YjhmNDIwM2I3NzNk
OGM0OWY1NmE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oCkBAIC0yMzQsOCArMjM0LDggQEAgY2xhc3MgTGlua0J1ZmZlciB7CiAgICAgdGVtcGxh
dGU8UHRyVGFnIHRhZz4KICAgICBDb2RlTG9jYXRpb25DYWxsPHRhZz4gbG9jYXRpb25PZihDYWxs
IGNhbGwpCiAgICAgewotICAgICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TGlua2Fi
bGUpKTsKLSAgICAgICAgQVNTRVJUKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSk7CisgICAg
ICAgIC8vIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOworICAgICAgICAv
LyBBU1NFUlQoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKTsKICAgICAgICAgcmV0dXJuIENv
ZGVMb2NhdGlvbkNhbGw8dGFnPihnZXRMaW5rZXJBZGRyZXNzPHRhZz4oYXBwbHlPZmZzZXQoY2Fs
bC5tX2xhYmVsKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCmluZGV4IGEyNDVlNzdlNDNlNzBjMGVh
YTI0Mzk2NDNhZGExZmMwMzRjYzc0MWQuLmU1YjBiMmZmNzg5MGI0ZmRiMjIwMWZhODYxYjc0M2Vj
YjEwNGMxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTIyMCwxOSArMjIwLDE5IEBAIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogICAgICAgICBy
ZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRH
UFIsIHRhZ0dQUik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVz
cyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJl
c3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1
bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CiAgICAgICAgIEFTU0VSVCghT3B0aW9u
czo6dXNlSklUQ2FnZSgpIHx8IGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3Rlciwg
dGFnKTsKKyAgICAgICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAotICAg
IEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOwotICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwor
ICAgICAgICBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIGNhbGxPcGVyYXRpb24oY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPiBvcGVyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKaW5kZXggMTJhOTdhMmQyNWQ1ZWJkMWU5OWE1ZTVhYzI5YzIyODkzYmE4MzhmOS4u
MDY1MWQzYWM5Y2EzNGZmMzYxY2JhZTNiNmIyNmQ4Y2E5YTBhN2UyMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBB
Y2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0
eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29uZGl0aW9uU2V0
LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNl
OjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNl
dCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQor
UmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+
JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0
eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKK1JlZlB0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgIFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7
CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNz
Q2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2
bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZp
ZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3ND
YXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVs
ZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1
cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwogICAgIEFTU0VSVCghbmV3U3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUs
IHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVj
a1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNz
Q2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3RydWN0
dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgc3Ry
dWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVy
ZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNldFByaXZhdGVCcmFu
ZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRl
QnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0p
KTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAorUmVmUHRy
PEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKICAgICBWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8uY2FjaGVUeXBl
KCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09iamVjdCogQWNjZXNzQ2FzZTo6YWx0ZXJuYXRl
QmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRpdGlvblNldCgpLnNsb3RCYXNlQ29uZGl0aW9u
KCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25z
dAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEFjY2Vzc0Nh
c2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSgq
dGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC04MDcsNiArODA3LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgK
ICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlID09IENvbW1pdHRlZCk7CiAgICAgbV9zdGF0ZSA9
IEdlbmVyYXRlZDsKIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5t
X2dsb2JhbE9iamVjdDsKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpzdGF0ZS5qaXQ7CiAgICAg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0YXRlLnN0dWJJbmZvOwogICAgIFZNJiB2
bSA9IHN0YXRlLm1fdm07CkBAIC04NTMsNyArODU0LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc01vbm9Qcm90bygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVy
ZS0+cHJvdG90eXBlRm9yTG9va3VwKHN0YXRlLm1fZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JM
b29rdXAoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHByb3RvdHlwZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihhc09iamVjdChwcm90b3R5cGUpKSwgYmFz
ZUZvckFjY2Vzc0dQUik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC05NjQsNiAr
OTY1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVn
cygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJl
ZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwog
ICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTEw
NjEsNiArMTA2NCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9w
ZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZv
R1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTE0
NCw2ICsxMTQ5LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3Bl
cnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9H
UFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC0xMjA1
LDYgKzEyMTIsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVy
dHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQ
Uik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKQEAgLTEzMTcsNiArMTMyNiw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQ
Uik7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxs
b2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNDE3LDcgKzE0MjgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7CiAKICAgICAgICAgaWYgKGNvbmRp
dGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFByb3BlcnR5
Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3VyZVdhdGNoYWJpbGl0eSkpIHsKLSAg
ICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvbmRpdGlvbik7CisgICAgICAgICAg
ICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxvY2ssIGNvbmRpdGlvbik7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xNDM1LDcgKzE0NDYsNyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAg
ICAgICAgIC8vIFdlIHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFzIGEgd2VhayByZWZlcmVuY2UgdGhh
dCBpc24ndCBvdGhlcndpc2UgbGlzdGVkIGFueXdoZXJlLgogICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAgc3Rh
dGUud2Vha1JlZmVyZW5jZXMuYXBwZW5kKFdyaXRlQmFycmllcjxKU0NlbGw+KHZtLCBjb2RlQmxv
Y2ssIHN0cnVjdHVyZSkpOworICAgICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5hcHBlbmQoc3Ry
dWN0dXJlLT5pZCgpKTsKIAogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoY29uZGl0aW9uLm9iamVjdCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZCgKQEAgLTE1ODIsNyArMTU5MywxMiBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAg
IC8vIFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRoZXIg
b3Igbm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNpdGUu
Ci0gICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0g
c3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsKKyAgICAgICAgUmVn
aXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAg
ICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAgIGV4dHJhUmVnaXN0
ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgorICAgICAgICBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7
CiAKICAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwgPSBb
Jl0oQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBib29sIGNh
bGxIYXNSZXR1cm5WYWx1ZSkgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmU7
CkBAIC0xNzEyLDYgKzE3MjgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMp
OwogICAgICAgICAgICAgYWNjZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xvd1BhdGgodm0sIGpp
dCk7CisKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAgICAgICAgICAgICAg
IGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGpp
dC5qdW1wKCkpOwpAQCAtMTcyMyw4ICsxNzQwLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNp
emVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1i
ZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9y
UmVnaXN0ZXJQcmVzZXJ2YXRpb24pLAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIGludCBzdGFja1BvaW50ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZz
ZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJT
dGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0
ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CisgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCksIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAgICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIoKTsKICAgICAgICAg
ICAgIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBjYWxs
SGFzUmV0dXJuVmFsdWUpOwogCkBAIC0xODQ1LDcgKzE4NjIsMTQgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAg
IHNraXBCYXJyaWVyLmFwcGVuZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2NyYXRjaEdQUiwgc2Ny
YXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICAg
ICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
ZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgIGlm
IChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3Rl
cnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgICAg
ICBhdXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9y
Q2FsbFdpdGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisKICAgICAg
ICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJT
bG93UGF0aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICBh
dXRvIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTg3NSw2
ICsxODk5LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAg
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0g
SW52YWxpZEdQUlJlZzsKQEAgLTE5MzMsNiArMTk1OSwxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAg
IFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAgICAgICAgICAgICBl
eHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAgICAgICAgICAgIGV4
dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgICAg
ICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIp
OworI2VuZGlmCiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0
YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMDYxLDggQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOworICAgICAgICBp
ZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgICAgICBBU1NFUlQobmV3
U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5
RGVsZXRpb24pOwpAQCAtMjIwMyw2ICsyMjM1LDEwMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNr
Q29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKK2Jvb2wgQWNjZXNzQ2FzZTo6ZXF1YWxJblNoYXJpbmcoY29uc3QgQWNj
ZXNzQ2FzZSYgbGhzLCBjb25zdCBBY2Nlc3NDYXNlJiByaHMpCit7CisgICAgLy8gV2UgZG8gbm90
IGNhcmUgbV9zdGF0ZS4KKyAgICAvLyBBbmQgd2Ugc2F5ICJmYWxzZSIgaWYgZWl0aGVyIG9mIHRo
ZW0gaGF2ZSBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLgorICAgIGlmIChsaHMubV9wb2x5UHJvdG9B
Y2Nlc3NDaGFpbiB8fCByaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChsaHMuYWRkaXRpb25hbFNldCgpIHx8IHJocy5hZGRpdGlvbmFsU2V0
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChsaHMubV90eXBlICE9IHJocy5t
X3R5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fb2Zmc2V0ICE9IHJo
cy5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV92aWFQcm94
eSAhPSByaHMubV92aWFQcm94eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMu
bV9zdHJ1Y3R1cmUuZ2V0KCkgIT0gcmhzLm1fc3RydWN0dXJlLmdldCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2lkZW50aWZpZXIgIT0gcmhzLm1faWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9jb25kaXRpb25TZXQgIT0gcmhz
Lm1fY29uZGl0aW9uU2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGxo
cy5tX3R5cGUpIHsKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBUcmFuc2l0aW9uOgorICAgIGNh
c2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgorICAgIGNhc2UgRGVs
ZXRlTWlzczoKKyAgICBjYXNlIFJlcGxhY2U6CisgICAgY2FzZSBNaXNzOgorICAgIGNhc2UgR2V0
R2V0dGVyOgorICAgIGNhc2UgSW5IaXQ6CisgICAgY2FzZSBJbk1pc3M6CisgICAgY2FzZSBBcnJh
eUxlbmd0aDoKKyAgICBjYXNlIFN0cmluZ0xlbmd0aDoKKyAgICBjYXNlIERpcmVjdEFyZ3VtZW50
c0xlbmd0aDoKKyAgICBjYXNlIFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIENoZWNr
UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgSW5kZXhl
ZEludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZENvbnRpZ3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CisgICAg
Y2FzZSBJbmRleGVkU2NvcGVkQXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREaXJlY3RB
cmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4TG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlVaW50OENsYW1wZWRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQxNkxvYWQ6
CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheUludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDMyTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6CisgICAgY2FzZSBJbmRl
eGVkVHlwZWRBcnJheUZsb2F0NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0cmluZ0xvYWQ6Cisg
ICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBj
YXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBHZXR0ZXIgYW5kIFNl
dHRlciByZWxpZXMgb24gQ29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5nIGltcG9zc2libGUu
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1c3RvbVZhbHVlR2V0
dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2FzZSBDdXN0b21WYWx1
ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7CisgICAgICAgIC8vIFRo
ZXkgYXJlIGVtYmVkZGluZyBKU0dsb2JhbE9iamVjdCB0aGF0IGFyZSBub3QgdGllZCB0byBzaGFy
aW5nIEpJVFN0dWJSb3V0aW5lLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Y2FzZSBJbnRyaW5zaWNHZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBsaHNkLm1faW50cmlu
c2ljRnVuY3Rpb24gPT0gcmhzZC5tX2ludHJpbnNpY0Z1bmN0aW9uOworICAgIH0KKworICAgIGNh
c2UgTW9kdWxlTmFtZXNwYWNlTG9hZDogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9tb2R1
bGVOYW1lc3BhY2VPYmplY3QgPT0gcmhzZC5tX21vZHVsZU5hbWVzcGFjZU9iamVjdAorICAgICAg
ICAgICAgJiYgbGhzZC5tX21vZHVsZUVudmlyb25tZW50ID09IHJoc2QubV9tb2R1bGVFbnZpcm9u
bWVudAorICAgICAgICAgICAgJiYgbGhzZC5tX3Njb3BlT2Zmc2V0ID09IHJoc2QubV9zY29wZU9m
ZnNldDsKKyAgICB9CisKKyAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CisgICAgY2FzZSBJbnN0YW5j
ZU9mTWlzczogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3RhbmNlT2ZBY2Nlc3ND
YXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNl
PigpOworICAgICAgICByZXR1cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNkLm1fcHJvdG90eXBl
OworICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmgKaW5kZXggYmRkMWIyMzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2ZhNzA2OC4uZTZjMzg4
ODM2NWUzOTUwZGVlZjBiOTkwMmI1M2YwYzRhZjcwNzM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpZiBFTkFC
TEUoSklUKQogCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkdD
QXdhcmVKSVRTdHViUm91dGluZS5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JIYXNoLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC03OSw3ICs4Miw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwogLy8gV2Ugd2lsbCBzb21ldGltZXMgYnVmZmVyIGNv
bW1pdHRlZCBBY2Nlc3NDYXNlcyBpbiB0aGUgUG9seW1vcnBoaWNBY2Nlc3Mgb2JqZWN0IGJlZm9y
ZSBnZW5lcmF0aW5nCiAvLyBjb2RlLiBUaGlzIGFsbG93cyB1cyB0byBvbmx5IHJlZ2VuZXJhdGUg
b25jZSB3ZSd2ZSBhY2N1bXVsYXRlZCAoaG9wZWZ1bGx5KSBtb3JlIHRoYW4gb25lIG5ldwogLy8g
QWNjZXNzQ2FzZS4KLWNsYXNzIEFjY2Vzc0Nhc2UgeworY2xhc3MgQWNjZXNzQ2FzZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBY2Nlc3NDYXNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiBwdWJsaWM6CiAgICAg
ZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CkBAIC0xNDcsMTkgKzE1MCwxOSBAQCBjbGFzcyBB
Y2Nlc3NDYXNlIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlVHlw
ZT4obmV3IEFjY2Vzc0Nhc2VUeXBlKGFyZ3VtZW50cy4uLikpOwogICAgIH0KIAotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgPSBp
bnZhbGlkT2Zmc2V0LAogICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0mLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsCisgICAgc3RhdGljIFJlZlB0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9u
KFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIFJlZjxBY2Nl
c3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSk7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVDaGVja1ByaXZh
dGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZN
JiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3Rh
dGljIFJlZlB0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCiAgICAg
QWNjZXNzVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgU3RhdGUgc3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CkBAIC0yNTMsMTEgKzI1Niw0MSBAQCBjbGFz
cyBBY2Nlc3NDYXNlIHsKICNlbHNlCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koU3RydWN0dXJlU3R1YkluZm8mKSB7IH0KICNlbmRpZgotICAgIAorCisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IG1f
c3RydWN0dXJlIGlzIGFscmVhZHkgZGVzdHJveWVkLiBXZSBhcmUgZGVzdHJveWluZyBKSVRTdHVi
Um91dGluZSwgYW5kIHRoaXMgZGVzdHJ1Y3Rpb24gaXMgZHJpdmVuCisgICAgICAgIC8vIGJ5IENv
ZGVCbG9jaydzIGRlc3RydWN0b3IgKHR5cGljYWxseSkuIEFuZCBhdCB0aGF0IHRpbWUsIGl0IGlz
IHBvc3NpYmxlIHRoYXQgdGhpcyBzdHJ1Y3R1cmUgaXMgYWxyZWFkeSBkZXN0cm95ZWQgYmVmb3Jl
CisgICAgICAgIC8vIENvZGVCbG9jayBnZXRzIGRlc3Ryb3llZC4gQnV0IGhlcmUsIHdlIGRvIG5v
dCBjYXJlIGFib3V0IHRoZSBsaXZlbmVzcyBvZiB0aGlzIHN0cnVjdHVyZSBzaW5jZSB0aGUgb3du
ZXIgc2hvdWxkIGtlZXAgaXQsCisgICAgICAgIC8vIGFuZCBpZiBpdCBpcyBkZWFkLCBpdCBpcyBv
bmx5IHBvc3NpYmxlIGluIHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBvd25lci4gV2UganVzdCBnZXQg
YSBwb2ludGVyIHZhbHVlIHZpYSB1bnZhbGlkYXRlZEdldCgpLgorICAgICAgICByZXR1cm4gY29t
cHV0ZUhhc2gobV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90
eXBlKSwgbV92aWFQcm94eSwgbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKSwgbV9vZmZzZXQp
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsSW5TaGFyaW5nKGNvbnN0IEFjY2Vzc0Nh
c2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NDYXNlKFZN
JiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Jiwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKLSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nh
c2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIp
ID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJiBvdGhlcikKKyAgICAgICAg
OiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQorICAgICAgICAsIG1fc3RhdGUoV1RGTW92
ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KFdURk1vdmUob3RoZXIubV92
aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RGTW92ZShvdGhlci5tX29mZnNldCkpCisg
ICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhlci5tX3N0cnVjdHVyZSkpCisgICAgICAg
ICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5tX2NvbmRpdGlvblNldCkpCisgICAgICAg
ICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKG90aGVyLm1fcG9seVByb3RvQWNjZXNz
Q2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKG90aGVyLm1faWRlbnRpZmll
cikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQor
ICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9zdGF0ZShvdGhlci5t
X3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHkob3RoZXIubV92aWFQcm94eSkKKyAgICAgICAg
LCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5t
X3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlvblNldChvdGhlci5tX2NvbmRpdGlvblNl
dCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0NoYWluKG90aGVyLm1fcG9seVByb3RvQWNj
ZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlmaWVyKG90aGVyLm1faWRlbnRpZmllcikKKyAg
ICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9yPShjb25zdCBBY2Nlc3NDYXNlJikgPSBk
ZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBtX3N0YXRlID0gUHJpbW9yZGlhbDsgfQpA
QCAtMjc1LDcgKzMwOCw3IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogCiAgICAgLy8gRklYTUU6IFRo
aXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNjZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJh
dGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUo
KSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFjdGlvbiB0aGF0IG11c3QgYmUgcGVyZm9y
bWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBpbiB3aGljaCB0aGUgY2FzZQogICAgIC8v
IHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdhdGNocG9pbnQgc2V0cyB0aGF0IHdpbGwg
bmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0OCwxNTEgQEAgY2xhc3MgQWNjZXNzQ2Fz
ZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCitjbGFzcyBT
aGFyZWRKSVRTdHViU2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRT
dHViU2V0KTsKK3B1YmxpYzoKKyAgICBTaGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisg
ICAgc3RydWN0IEhhc2ggeworICAgICAgICBzdHJ1Y3QgS2V5IHsKKyAgICAgICAgICAgIEtleSgp
ID0gZGVmYXVsdDsKKworICAgICAgICAgICAgS2V5KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFs
dWVHUFIsIEdQUlJlZyBleHRyYUdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzLCBBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAg
ICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQ
UihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAg
ICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0
dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJz
KHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChi
aXR3aXNlX2Nhc3Q8QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigxKSkpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nhc3Q8
QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0K
KworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmIGEsIGNvbnN0
IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dyYXBw
ZWQgPT0gYi5tX3dyYXBwZWQKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2Jhc2VHUFIgPT0g
Yi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92
YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJh
R1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1Yklu
Zm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5tX3Vz
ZWRSZWdpc3RlcnM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZyaWVuZCBib29sIG9w
ZXJhdG9yIT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGEubV93cmFwcGVkICE9IGIubV93cmFwcGVkOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7
IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBH
UFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAg
ICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgICAgICBSZWdpc3RlclNldCBtX3Vz
ZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXAubV93cmFwcGVkKQor
ICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIHAubV93cmFwcGVk
LT5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBL
ZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0g
YjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAgICBzdHJ1Y3QgU2VhcmNo
ZXIgeworICAgICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7CisgICAgICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZTo6Y29tcHV0ZUhhc2go
c2VhcmNoZXIubV9rZXlzLCBzZWFyY2hlci5tX3dlYWtSZWZlcmVuY2VzKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGEsIGNv
bnN0IFNlYXJjaGVyJiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhLm1f
YmFzZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVH
UFIgPT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9
PSBiLm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09
IGIubV9zdHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVy
cyA9PSBiLm1fdXNlZFJlZ2lzdGVycykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRv
JiBhdmVjID0gYS5tX3dyYXBwZWQtPmtleXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
YXV0byYgYnZlYyA9IGIubV9rZXlzOworICAgICAgICAgICAgICAgICAgICBpZiAoYXZlYy5zaXpl
KCkgIT0gYnZlYy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJ2
ZWMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vz
c0Nhc2U6OmVxdWFsSW5TaGFyaW5nKCphdmVjW2luZGV4XSwgKmJ2ZWNbaW5kZXhdKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYXdlYWsgPSBhLm1fd3JhcHBlZC0+
d2Vha1JlZmVyZW5jZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYndlYWsg
PSBiLm1fd2Vha1JlZmVyZW5jZXM7CisgICAgICAgICAgICAgICAgICAgIGlmIChhd2Vhay5zaXpl
KCkgIT0gYndlYWsuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gYXdlYWsu
c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdl
YWtbaV0gIT0gYndlYWtbaV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAg
ICAgICAgR1BSUmVnIG1fdmFsdWVHUFI7CisgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAg
ICAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVn
aXN0ZXJzOworICAgICAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBt
X2tleXM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYgbV93ZWFrUmVm
ZXJlbmNlczsKKyAgICB9OworCisgICAgc3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKiBzdHViKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3R1Yi0+aGFzaCgpOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5IGtleSwgQWNjZXNzQ2Fz
ZUpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4ga2V5
Lm1fd3JhcHBlZCA9PSBzdHViOworICAgICAgICB9CisgICAgfTsKKworICAgIHZvaWQgYWRkKEhh
c2g6OktleSYmIGtleSkKKyAgICB7CisgICAgICAgIG1fc3R1YnMuYWRkKGtleSk7CisgICAgfQor
CisgICAgdm9pZCByZW1vdmUoQWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsK
KyAgICAgICAgYXV0byBpdGVyID0gbV9zdHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHVi
KTsKKyAgICAgICAgaWYgKGl0ZXIgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1
YnMucmVtb3ZlKGl0ZXIpOworICAgIH0KKworICAgIEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZSog
ZmluZChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIpCisgICAgeworICAgICAgICBhdXRvIGVudHJ5
ID0gbV9zdHVicy5maW5kPFNoYXJlZEpJVFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9yPihz
ZWFyY2hlcik7CisgICAgICAgIGlmIChlbnRyeSAhPSBtX3N0dWJzLmVuZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5LT5tX3dyYXBwZWQ7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PEhhc2g6OktleSwgSGFzaCwgSGFzaDo6S2V5VHJh
aXRzPiBtX3N0dWJzOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmluZGV4IGZjOThmNGU0MDBiOGZj
NmNjYjg4ZGYwY2FhNGM1YTU1NTM2NzljODQuLmIyMjZmYjE2ZjVkYjc0NGY3ZmU1NTZiZWM3NThk
N2NlYTA0ZTRhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eVZhbEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZv
LmgKQEAgLTI0NCwxMCArMjQ0LDggQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAgICAgewogICAgIH0K
IAotICAgIHZvaWQgc2V0VXAoQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJ
bmRleEp1bXAsIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1bXAs
IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRs
ZXIsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQsIENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQorICAgIHZvaWQg
c2V0VXAoQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9u
SGFuZGxlciwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwg
Q29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCiAgICAg
ewotICAgICAgICB0aGlzLT5ub3RJbmRleEp1bXAgPSBub3RJbmRleEp1bXA7Ci0gICAgICAgIHRo
aXMtPmJhZFR5cGVKdW1wID0gYmFkVHlwZUp1bXA7CiAgICAgICAgIHRoaXMtPmV4Y2VwdGlvbkhh
bmRsZXIgPSBleGNlcHRpb25IYW5kbGVyOwogICAgICAgICB0aGlzLT5kb25lVGFyZ2V0ID0gZG9u
ZVRhcmdldDsKICAgICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0ID0gYmFkVHlw
ZU5leHRIb3RQYXRoVGFyZ2V0OwpAQCAtMjYyLDggKzI2MCwyMSBAQCBzdHJ1Y3QgQnlWYWxJbmZv
IHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogCi0gICAgQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXA7Ci0gICAgQ29kZUxvY2F0aW9uSnVtcDxK
U0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcDsKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU2xvd09wZXJhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1f
c2xvd09wZXJhdGlvbik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTm90SW5kZXhK
dW1wVGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9ub3RJbmRl
eEp1bXBUYXJnZXQpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkJhZFR5cGVKdW1w
VGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9iYWRUeXBlSnVt
cFRhcmdldCk7IH0KKworICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3Bl
cmF0aW9uOworCisgICAgdW5pb24geworICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7CisgICAgICAgIENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9ub3RJbmRleEp1bXA7CisgICAgfTsKKyAgICB1bmlv
biB7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2Jh
ZFR5cGVKdW1wVGFyZ2V0OworICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJU
YWc+IG1fYmFkVHlwZUp1bXA7CisgICAgfTsKKwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7CiAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYTM2OWUxMTAwOTEwYTc2YjNlMmRj
Yjg4Yzc5MjUwNmZjMDA3NGU1NC4uNjJmNzNkZDg5ZWFlNTY1YjllYWJmYWJlNjgzZWU5NzdmOWVk
ODlmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAt
NDIwLDYgKzQyMCwxMSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB7
CiAgICAgICAgIHJldHVybiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAgICAg
fQorCisgICAgYm9vbCB1c2VTaGFyZWRJQygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
SklUQ29kZTo6dXNlU2hhcmVkSUMoaml0VHlwZSgpKTsKKyAgICB9CiAgICAgCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggMGMzYzQxMjFkNTg2NjI3ZWE5NTA0MWJmNzE3MGRjN2M5ZDUwYWJiYS4uNGVhMGI5Y2RjYzcx
NjJmZTkzYmI2NzQ5YzI4NjA3NTYzNzFhM2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtNDcs
NyArNDcsNyBAQCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIG1fY3VzdG9tU2xvdEJhc2Uu
c2V0TWF5QmVOdWxsKHZtLCBvd25lciwgY3VzdG9tU2xvdEJhc2UpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFj
Y2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAgIGJvb2wgdmlhUHJv
eHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwKICAgICBz
dGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQpAQCAtNjEsMTgg
KzYxLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUoCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNs
b3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwg
aWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFk
ZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWlu
KSkpOwogICAgIHJlc3VsdC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7CiAgICAgcmVz
dWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9t
QWNjZXNzb3JQdHJUYWc+KGN1c3RvbUdldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpj
cmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9u
U2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4s
IGJvb2wgdmlhUHJveHksIAogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBj
dXN0b21TZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKIHsKICAgICBBU1NFUlQodHlw
ZSA9PSBTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCB0eXBlID09IEN1c3Rv
bUFjY2Vzc29yU2V0dGVyKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwg
aWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIG51
bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZt
LCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNl
dCwgdmlhUHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9IGN1c3RvbVNldHRl
ciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21TZXR0ZXIpIDogbnVs
bHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTEsOSArOTEsOSBAQCBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFj
Y2Vzc0Nhc2UmIG90aAogICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6
Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwog
ICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzks
NiArMTM5LDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVy
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVn
cyk7CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNlR1BSID0gSW52YWxp
ZEdQUlJlZzsKQEAgLTIyMyw2ICsyMjUsMTEgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
OjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAg
ICBmb3IgKEZQUlJlZyByZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxG
b3JDQ2FsbC5zZXQocmVnKTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVkZShS
ZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisjaWYgQ1BVKEFSTTY0
KQorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOworICAgIGlmIChj
b2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2Fs
bC5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogCiAgICAgQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3Jh
dGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0LT5nZW5lcmF0b3IoKS0+cnVu
KGppdCwgcGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IGE4NDg4NDU4ZjRhYmQyYWFkMmViYWY2
MmIyOGEzM2M0MTg2MDQwODcuLmMzNjczYTRmMTRiZjA3ODU2NjBjNTY0Yjc4MzJhNWRiNDQ2Yjcy
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuaApAQCAtNTMsMTcgKzUzLDE3IEBAIGNsYXNzIEdldHRlclNldHRl
ckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7CiAKICAgICB2
b2lkIGVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgRE9NSklU
OjpHZXR0ZXJTZXR0ZXIqLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nh
c2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAgICAgICAgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50
U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3Vz
dG9tR2V0dGVyLAogICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIHN0ZDo6b3B0aW9u
YWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
Jik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYs
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZN
JiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmLCBib29sIHZpYVByb3h5ID0g
ZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21T
ZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsKIAog
ICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5h
bDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsK
KyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5HZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhmYWZkOThkMGIyODU5M2NiYmIw
NTdiYWU5NmZiMzIxYS4uMjE5NDJjNDM1YmVlYzE0YzE1ODYzOTVlM2Q2NDExMzZlMjI4ODhhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAK
QEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBHUFJSZWcgZ2V0U2NyYXRj
aFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52YWx1
ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BS
KTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsK
ICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkpCiAgICAgICAgIHJldHVybiBJ
bnZhbGlkR1BSUmVnOwpAQCAtMzc5LDggKzM4MSw1NCBAQCBib29sIElubGluZUFjY2Vzczo6Z2Vu
ZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmUq
CiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZvaWQgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3ZvaWQgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFy
ZWRJQygpKSB7CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBhdXRvIGp1bXAg
PSBqaXQuanVtcCgpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVj
YXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgor
ICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7CisgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5j
b2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRp
b25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7CisgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHRhcmdl
dCk7CisKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNj
ZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4g
dGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpIHsKKyAgICAgICAg
Ly8gSWYgaXQgaXMgbm90IEdldEJ5SWQtbGlrZS10aGluZywgd2UgZG8gbm90IGVtaXQgbm9wIHNs
ZWQgKGUuZy4gR2V0QnlWYWwpLgorICAgICAgICAvLyBUaGUgY29kZSBpcyBhbHJlYWR5IGFuIGlu
ZGlyZWN0IGp1bXAsIGFuZCBvbmx5IHRoaW5nIHdlIHNob3VsZCBkbyBpcyByZXBsYWNpbmcgbV9j
b2RlUHRyLgorICAgICAgICBpZiAoc3R1YkluZm8uaGFzQ29uc3RhbnRJZGVudGlmaWVyKSB7Cisg
ICAgICAgICAgICAvLyBJZiBtX2NvZGVQdHIgaXMgcG9pbnRpbmcgdG8gc3R1YkluZm8uc2xvd1Bh
dGhTdGFydExvY2F0aW9uLCB0aGlzIG1lYW5zIHRoYXQgSW5saW5lQWNjZXNzIGNvZGUgaXMgbm90
IGEgc3R1YiBvbmUuCisgICAgICAgICAgICAvLyBXZSByZXdyaXRlIHRoaXMgd2l0aCB0aGUgc3R1
Yi1iYXNlZCBkaXNwYXRjaGluZyBjb2RlIG9uY2UsIGFuZCBjb250aW51ZSB1c2luZyBpdCB1bnRp
bCB3ZSByZXNldCB0aGUgY29kZS4KKyAgICAgICAgICAgIGlmIChzdHViSW5mby5tX2NvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSA9PSBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24uZXhl
Y3V0YWJsZUFkZHJlc3MoKSkgeworICAgICAgICAgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CisK
KyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnN0
dWJJbmZvKSwgc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgaml0LmNh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworCisgICAgICAgICAgICAgICAg
Ym9vbCBuZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIoaml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCksIExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKKworICAgICAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBzdHViSW5mby5kb25lTG9jYXRpb24pOworCisg
ICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGlu
ZUFjY2VzczogbGlua2luZyBzdHViIGNhbGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAo
KTsKQEAgLTM5NCw2ICs0NDIsMjYgQEAgdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWIKICAgICBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNv
bnN0YW50IGp1bXAiKTsKIH0KIAordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcElu
QWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBD
Q2FsbEhlbHBlcnMgaml0OworCisgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKworICAgIC8v
IFdlIGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBiZSBq
dW1waW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KKyAgICBib29sIG5lZWRzQnJhbmNoQ29t
cGFjdGlvbiA9IGZhbHNlOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIHN0dWJJbmZv
LnN0YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsIG5lZWRzQnJh
bmNoQ29tcGFjdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkp
OworICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRp
b24pOworCisgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFj
Y2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpy
ZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHJld2lyZVN0dWJBc0p1
bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5saW5lQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQWNjZXNzLmgKaW5kZXggZjQ5YjM1YjhmMjI2NDA2YzdmYjI2ZmZiYjQ4ODZiMmI4NDcxZDEy
ZC4uZWI3NmZmMzk2ZDI4OGVjZGJlM2FmMTAxN2YzMjQzYWFhNzQ0MGFjZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaApAQCAtMTA0LDEwICsxMDQs
MTQgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsKICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUFy
cmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwogICAgIHN0YXRpYyBib29s
IGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3RhdGlj
IGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsK
LSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKICAgICBzdGF0aWMgYm9vbCBn
ZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVyZSopOwogICAg
IHN0YXRpYyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAK
KyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUNv
ZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXBJbkFj
Y2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5B
Y2Nlc3NOb3RVc2luZ0lubGluZUNvZGUoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
KyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOworCiAgICAgLy8gVGhpcyBpcyBoZWxwZnVsIHdoZW4gZGV0ZXJtaW5p
bmcgdGhlIHNpemUgb2YgYW4gSUMgb24KICAgICAvLyB2YXJpb3VzIHBsYXRmb3Jtcy4gV2hlbiBh
ZGRpbmcgYSBuZXcgdHlwZSBvZiBJQywgaW1wbGVtZW50CiAgICAgLy8gaXRzIHBsYWNlaG9sZGVy
IGNvZGUgaGVyZSwgYW5kIGxvZyB0aGUgc2l6ZS4gVGhhdCB3YXkgd2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCmlu
ZGV4IDIxZjI0NTNiYWM3YWZhZTc3MjQxY2IwNGEyNWQyMGZkZDk5M2JjMzQuLjk5NDkwOGQ2OGI2
MmJiZTA2ZTA5YWEwYjM3ZTc3YzExMGM2NjkyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcApAQCAtMzIsMTEg
KzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5j
ZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU09iamVjdCogcHJvdG90eXBlKQog
ewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEluc3RhbmNlT2ZB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IHByb3RvdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3ND
YXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHByb3Rv
dHlwZSkpOwogfQogCiB2b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0
cmVhbSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1hKSBjb25zdApAQCAtNDUsOSArNDUsOSBAQCB2
b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21t
YVByaW50ZXImIGNvbW1hKSBjb25zdAogICAgIG91dC5wcmludChjb21tYSwgInByb3RvdHlwZSA9
ICIsIEpTVmFsdWUocHJvdG90eXBlKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4g
SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uo
KnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vz
c0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Rh
bmNlT2ZBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2UuaAppbmRleCA2OWUyYjMxYWE5NGE1OWQzMGRmYjRjYWYyMjQ0OTlkNjAy
Nzc4NDdjLi5hZDcxZTY5NDJmNDQ5MmZhOGFiZGVhYWM3ZWEwZmM0NmI3MDc5ZTdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nh
c2UuaApAQCAtMzQsMTUgKzM0LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSW5zdGFuY2VP
ZkFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEFjY2Vzc0Nhc2U7CisgICAgZnJpZW5kIGNsYXNzIEFjY2Vzc0Nhc2U7CiAgICAg
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiwgQWNjZXNz
VHlwZSwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLAogICAg
ICAgICBKU09iamVjdCogcHJvdG90eXBlKTsKICAgICAKICAgICBKU09iamVjdCogcHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAKICAgICB2b2lkIGR1
bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFj
Y2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgfkluc3RhbmNlT2ZBY2Nl
c3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRleCA2MzAxZGMyMzM2
OTMzZDY3NmMzYmU5ZTkwYzYwMTg5YTEzMTczODE3Li4zNGIxYTgwMjc4ODk1ZjcxYWJmZTY4Mjk2
OWNkZTQzMGYzMmU3ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCkBAIC0zOSwxOCArMzks
MTggQEAgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX2ludHJpbnNpY0Z1bmN0aW9uLnNl
dCh2bSwgb3duZXIsIGludHJpbnNpY0Z1bmN0aW9uKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nl
c3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5z
aWNGdW5jdGlvbiwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogSW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZTo6fkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKQogewogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6
Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6
OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uo
KnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggNjI4NzAwNDE1ODczMWQ1YjhmZWI1MDYzNTNkZTU1
OWI2NDQ3NjQ0Ni4uNDdhZjFhMmJmMWRkNmNiOTEzNjI2MzIxMDE5M2I0N2EzZmYyYWI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgc3RhdGljIGJvb2wg
Y2FuRW1pdEludHJpbnNpY0dldHRlcihKU0Z1bmN0aW9uKiwgU3RydWN0dXJlKik7CiAgICAgdm9p
ZCBlbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rp
b24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7Cisg
ICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+SW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKaW5kZXgg
Mjk1NmRkMGNkNWQwZWFlNjFhMDhlM2RjNzY1YmY3NDM0NDFjNWY4ZC4uYzI5YzFkZGZhZjQ4MTU1
NjYxNTE3MDg1YTg4ZTE5YTA3M2FiZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcApAQCAt
NDUsMTggKzQ1LDE4IEBAIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6Ok1vZHVsZU5hbWVzcGFj
ZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAgbV9tb2R1bGVFbnZp
cm9ubWVudC5zZXQodm0sIG93bmVyLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJv
bm1lbnQqIG1vZHVsZUVudmlyb25tZW50LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKK1JlZjxB
Y2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0Nl
bGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1v
ZHVsZUVudmlyb25tZW50LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKIHsKLSAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
KHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZp
cm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNl
T2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKIH0KIAogTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZTo6fk1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKQogewogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xv
bmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNs
b25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZT4gcmVzdWx0KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAg
YXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRo
aXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFj
ZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlLmgKaW5kZXggOTJhMGI4YTM1YjU0NzE2MjQxMzBkNjUwNjUzZDA1YmY1
ZDc5MzM3Ny4uZDQzOTUwYmYwNjMxMzdjZjc3M2I4NGM0YWFlNDk0NGIwNGM5YTNiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5oCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25t
ZW50LmdldCgpOyB9CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3Njb3BlT2Zmc2V0OyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsK
KyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZp
cm9ubWVudCosIFNjb3BlT2Zmc2V0KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBlbWl0KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRocm91Z2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmlu
ZGV4IDNkMjMzZmFkMTMzOTJkZTAyYmYzYjNjOTdmZDA2NDdmMGQxYWFmZjMuLmJlNzNmZGI1ZTVh
N2E5ZmYxYjc1MjcyMDI1MjkzY2I2MmE1ODQ0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCIKICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9GaXhlZFZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtODksNiArOTAsMzIgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBtX2Rh
dGEtPm1fdmVjdG9yLmVuZCgpOwogICAgIH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAor
ICAgIHsKKyAgICAgICAgSGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChhdXRvJiBjb25kaXRp
b24gOiAqdGhpcykKKyAgICAgICAgICAgIGFkZChoYXNoZXIsIGNvbmRpdGlvbi5oYXNoKCkpOwor
ICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBsaHMsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiByaHMpCisgICAgeworICAgICAgICBpZiAobGhzLnNp
emUoKSAhPSByaHMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBh
dXRvIGxpdGVyID0gbGhzLmJlZ2luKCk7CisgICAgICAgIGF1dG8gcml0ZXIgPSByaHMuYmVnaW4o
KTsKKyAgICAgICAgZm9yICg7IGxpdGVyICE9IGxocy5lbmQoKTsgKytsaXRlciwgKytyaXRlcikg
eworICAgICAgICAgICAgaWYgKCEoKmxpdGVyID09ICpyaXRlcikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIHJocykKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOworICAgIH0KICAgICAKICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0YjljODdlODlhN2QwOWEw
MTUuLmViZGRjMTc0MTA3MDEwMTMxZTAxMWYxMjk1NmQzM2EwODY0MTI5ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApA
QCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1fY29kZSk7CiB9CiAK
LXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1
cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQoCi0gICAgICAg
IHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29uZGl0aW9uKTsKKyAg
ICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEluc3Rh
bGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBjb25kaXRpb24p
OwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQpAQCAt
NzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVTY3JhdGNo
KCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsKICAgICByZXN0b3Jl
U2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKKyAgICBpZiAoaml0
LT5jb2RlQmxvY2soKS0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsKKyAgICBl
bHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29uc3QgUmVn
aXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKQpA
QCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9OwogfQog
Ci1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFj
a0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRF
eGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQogewogICAg
IFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMoKTsK
ICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBs
aXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBleHRy
YVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZv
clJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJhU3RhY2tQ
YWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBvbHltb3Jw
aGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nl
c3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2Vy
LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxD
YXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2Fz
ZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3MgYWZ0ZXIg
ZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2luYWxDYXNl
c1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JpZ2luYWxD
YXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAgICAgIGF1
dG8gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwogCiAgICAgICAgIC8v
IEFkZCBpdCBvbmx5IGlmIGl0IGlzIG5vdCByZXBsYWNlZCBieSB0aGUgc3Vic2VxdWVudCBjYXNl
cyBpbiB0aGUgbGlzdC4KICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtMjg3LDggKzI5
MCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2Vz
KAogICAgICAgICBjYXNlc1RvQWRkLmFwcGVuZChXVEZNb3ZlKG15Q2FzZSkpOwogICAgIH0KIAot
ICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRh
TG9nKCJjYXNlc1RvQWRkOiAiLCBsaXN0RHVtcChjYXNlc1RvQWRkKSwgIlxuIik7CisgICAgZGF0
YUxvZ0xuSWYoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgImNhc2VzVG9BZGQ6
ICIsIGxpc3REdW1wKGNhc2VzVG9BZGQpKTsKIAogICAgIC8vIElmIHRoZXJlIGFyZW4ndCBhbnkg
Y2FzZXMgdG8gYWRkLCB0aGVuIGZhaWwgb24gdGhlIGdyb3VuZHMgdGhhdCB0aGVyZSdzIG5vIHBv
aW50IHRvIGdlbmVyYXRpbmcgYQogICAgIC8vIG5ldyBzdHViIHRoYXQgd2lsbCBiZSBpZGVudGlj
YWwgdG8gdGhlIG9sZCBvbmUuIFJldHVybmluZyBudWxsIHNob3VsZCB0ZWxsIHRoZSBjYWxsZXIg
dG8ganVzdApAQCAtMzM5LDE2ICszNDEsMTUgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgICAgIG1fbGlzdC5hcHBlbmQoV1RGTW92ZShj
YXNlVG9BZGQpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkFmdGVyIGFkZENhc2VzOiBtX2xpc3Q6ICIs
IGxpc3REdW1wKG1fbGlzdCksICJcbiIpOworICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNj
ZXNzSW50ZXJuYWw6OnZlcmJvc2UsICJBZnRlciBhZGRDYXNlczogbV9saXN0OiAiLCBsaXN0RHVt
cChtX2xpc3QpKTsKIAogICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpCdWZmZXJl
ZDsKIH0KIAogQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2Fz
ZSgKLSAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIFJlZjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCiB7Ci0gICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CisgICAg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3QWNjZXNzZXM7CiAgICAgbmV3QWNjZXNz
ZXMuYXBwZW5kKFdURk1vdmUobmV3QWNjZXNzKSk7CiAgICAgcmV0dXJuIGFkZENhc2VzKGxvY2tl
ciwgdm0sIGNvZGVCbG9jaywgc3R1YkluZm8sIFdURk1vdmUobmV3QWNjZXNzZXMpKTsKIH0KQEAg
LTM1OSw5ICszNjAsMTIgQEAgYm9vbCBQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRXZWFrKFZNJiB2
bSkgY29uc3QKICAgICAgICAgaWYgKCFhdChpKS52aXNpdFdlYWsodm0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBmb3IgKGNvbnN0IFdyaXRlQmFycmllcjxKU0NlbGw+
JiB3ZWFrUmVmZXJlbmNlIDogbV93ZWFrUmVmZXJlbmNlcykgewotICAgICAgICBpZiAoIXZtLmhl
YXAuaXNNYXJrZWQod2Vha1JlZmVyZW5jZS5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKG1fc3R1YlJvdXRpbmUpIHsKKyAgICAgICAgZm9yIChTdHJ1Y3R1cmVJRCB3
ZWFrUmVmZXJlbmNlIDogbV9zdHViUm91dGluZS0+d2Vha1JlZmVyZW5jZXMoKSkgeworICAgICAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1cmUod2Vha1JlZmVyZW5j
ZSk7CisgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC00MTksOCArNDIzLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKIHsKICAg
ICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0gICAg
aWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2co
IlJlZ2VuZXJhdGUgd2l0aCBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCksICJcbiIpOworICAg
IGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UsICJSZWdlbmVy
YXRlIHdpdGggbV9saXN0OiAiLCBsaXN0RHVtcChtX2xpc3QpKTsKIAogICAgIEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZSBzdGF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSk7CiAKQEAgLTQ0MCw3
ICs0NDMsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIHVuc2lnbmVkIHNyY0luZGV4
ID0gMDsKICAgICB1bnNpZ25lZCBkc3RJbmRleCA9IDA7CiAgICAgd2hpbGUgKHNyY0luZGV4IDwg
bV9saXN0LnNpemUoKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gc29t
ZUNhc2UgPSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7CisgICAgICAgIFJlZlB0cjxBY2Nl
c3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKICAgICAgICAg
CiAgICAgICAgIC8vIElmIHRoZSBjYXNlIGhhZCBiZWVuIGdlbmVyYXRlZCwgdGhlbiB3ZSBoYXZl
IHRvIGtlZXAgdGhlIG9yaWdpbmFsIGluIG1fbGlzdCBpbiBjYXNlIHdlCiAgICAgICAgIC8vIGZh
aWwgdG8gcmVnZW5lcmF0ZS4gVGhhdCBjYXNlIG1heSBoYXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0
IGFyZSB1c2VkIGJ5IHRoZSBjb2RlIHRoYXQgaXQKQEAgLTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogICAgIGlmIChzdHViSW5mby52LnRoaXNUYWdHUFIgIT0gSW52YWxp
ZEdQUlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udi50aGlzVGFnR1BSKTsK
ICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcp
CisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogCiAgICAg
c3RhdGUuc2NyYXRjaEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAt
NTAwLDEyICs1MDUsNiBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxv
Y2spOwotICAgIHN0YXRlLmppdCA9ICZqaXQ7Ci0KLSAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRS
ZWdpc3RlclN0YXRlID0KLSAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6
Ok5vRXh0cmFTcGFjZSk7CiAKICAgICBib29sIGdlbmVyYXRlZEZpbmFsQ29kZSA9IGZhbHNlOwog
CkBAIC01MTksMTQgKzUxOCwzMSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICBn
ZW5lcmF0ZWRGaW5hbENvZGUgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJPcHRpbWl6ZWQgY2FzZXM6
ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7Ci0gICAgCisgICAgZGF0YUxvZ0xuSWYoUG9seW1v
cnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1
bXAoY2FzZXMpKTsKKworICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7CisgICAgYm9vbCBkb2Vz
SlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGZhbHNlOworICAgIGJvb2wgY2FuQmVTaGFyZWQgPSB0cnVl
OworICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKKyAgICBGaXhlZFZlY3RvcjxSZWZQ
dHI8QWNjZXNzQ2FzZT4+IGtleXMoY2FzZXMuc2l6ZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IDA7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKSB7CisgICAgICAgIGRvZXNDYWxscyB8
PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01hcmspOworICAgICAgICBpZiAoZW50cnkt
PnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpHZXR0ZXIgfHwgZW50cnktPnR5cGUoKSA9PSBBY2Nlc3ND
YXNlOjpTZXR0ZXIpCisgICAgICAgICAgICBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IHRydWU7
CisgICAgICAgIGtleXNbaW5kZXhdID0gZW50cnk7CisgICAgICAgICsraW5kZXg7CisgICAgfQor
ICAgIHN0YXRlLm1fZG9lc0NhbGxzID0gZG9lc0NhbGxzOworICAgIHN0YXRlLm1fZG9lc0pTR2V0
dGVyU2V0dGVyQ2FsbHMgPSBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxsczsKKyAgICAvLyBHZXR0ZXIg
LyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2ggaXMgdGll
ZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVh
YmxlLgorICAgIGlmIChkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykKKyAgICAgICAgY2FuQmVTaGFy
ZWQgPSBmYWxzZTsKKwogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UncmUgY29udmluY2VkIHRoYXQg
J2Nhc2VzJyBjb250YWlucyB0aGUgY2FzZXMgdGhhdCB3ZSB3YW50IHRvIEpJVCBub3cgYW5kIHdl
CiAgICAgLy8gd29uJ3QgY2hhbmdlIHRoYXQgc2V0IGFueW1vcmUuCiAgICAgCiAgICAgYm9vbCBh
bGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayA9IHRydWU7Ci0gICAgYm9vbCBoYXNKU0dldHRlclNl
dHRlckNhbGwgPSBmYWxzZTsKICAgICBib29sIG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrID0gZmFs
c2U7CiAgICAgYm9vbCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29s
IG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayA9IGZhbHNlOwpAQCAtNTQyLDEwICs1NTgsNDcgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgfQogICAgICAgICBjb21taXQobG9ja2Vy
LCB2bSwgc3RhdGUud2F0Y2hwb2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sICpuZXdDYXNlKTsK
ICAgICAgICAgYWxsR3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2sgJj0gbmV3Q2FzZS0+Z3VhcmRlZEJ5
U3RydWN0dXJlQ2hlY2soc3R1YkluZm8pOwotICAgICAgICBpZiAobmV3Q2FzZS0+dHlwZSgpID09
IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0
dGVyKQotICAgICAgICAgICAgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsID0gdHJ1ZTsKKyAgICAgICAg
aWYgKG5ld0Nhc2UtPnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0g
ZmFsc2U7CisgICAgfQorICAgIGlmIChuZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgfHwgbmVlZHNT
dHJpbmdQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrKQorICAgICAgICBj
YW5CZVNoYXJlZCA9IGZhbHNlOworCisgICAgYXV0byBmaW5pc2hDb2RlR2VuZXJhdGlvbiA9IFsm
XShSZWZQdHI8QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9z
dHViUm91dGluZSA9IFdURk1vdmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZN
b3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNB
Y2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIlJldHVybmluZzogIiwgbV9zdHViUm91dGluZS0+Y29k
ZSgpKTsKKworICAgICAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKKyAgICAgICAgbV9saXN0
LnNocmlua1RvRml0KCk7CisKKyAgICAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6S2luZCBy
ZXN1bHRLaW5kOworICAgICAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjptYXhBY2Nl
c3NWYXJpYW50TGlzdFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCisgICAgICAgICAgICBy
ZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxDb2RlOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJl
c3VsdDo6R2VuZXJhdGVkTmV3Q29kZTsKKworICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlv
blJlc3VsdChyZXN1bHRLaW5kLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICB9
OworCisgICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZq
aXQ7CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKSB7CisgICAgICAgIGlmIChz
dGF0ZS5tX2RvZXNKU0dldHRlclNldHRlckNhbGxzKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZl
IG5vIGd1YXJhbnRlZSB0aGF0IHN0YWNrLXBvaW50ZXIgaXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhp
cyBpcyBub3QgYSBwcm9ibGVtIGlmIHdlIGFyZSBub3QgaGF2aW5nIEpTIGdldHRlciAvIHNldHRl
ciBjYWxscyBzaW5jZSBzdGFjay1wb2ludGVyIGlzCisgICAgICAgICAgICAvLyBjYWxsZWUtc2F2
ZSByZWdpc3RlciBhbmQgaXQgaXMga2VwdCBiZXlvbmQgY2FsbHMuIEhvd2V2ZXIsIG91ciBKUyBl
eGVjdXRhYmxlIGNhbGwgZG9lcyBub3Qgc2F2ZSBzdGFjay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRq
dXN0aW5nIHN0YWNrLXBvaW50ZXIgYWZ0ZXIKKyAgICAgICAgICAgIC8vIEpTIGdldHRlciAvIHNl
dHRlciBjYWxscy4gQnV0IHRoaXMgY291bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwg
c3RhY2stcG9pbnRlciwgYW5kIG1ha2VzIFBBQyB0YWdnaW5nIGJyb2tlbi4KKyAgICAgICAgICAg
IC8vIFRvIGVuc3VyZSBQQUMtdGFnZ2luZyB3b3JrLCB3ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9p
bnRlciB0byB0aGUgYXBwcm9wcmlhdGUgb25lLgorICAgICAgICAgICAgaml0LmFkZFB0cihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICog
c2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKICAgICB9CiAKKyAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KKyAg
ICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7Cisg
ICAgCiAgICAgaWYgKGNhc2VzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGlzIGlzIHN1cGVy
IHVubGlrZWx5LCBidXQgd2UgbWFrZSBpdCBsZWdhbCBhbnl3YXkuCiAgICAgICAgIHN0YXRlLmZh
aWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuanVtcCgpKTsKQEAgLTY5MCw3ICs3NDMsNyBAQCBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdD
U2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4
Y2VwdGlvbkhhbmRsZXJzID0gbnVsbHB0cjsKICAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmc7Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9S
ZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBoYXNKU0dldHRlclNldHRlckNhbGwpIHsK
KyAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGRv
ZXNKU0dldHRlclNldHRlckNhbGxzKSB7CiAgICAgICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBo
YW5kbGVyLgogICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxl
IHdoZW4gZG9pbmcgZ2VuZXJpY1Vud2luZCBmcm9tIGEgcHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4K
ICAgICAgICAgLy8gTm90ZSBhbHNvIHRoYXQgdGhpcyBpcyBub3QgcmVhY2hhYmxlIGZyb20gY3Vz
dG9tIGdldHRlci9zZXR0ZXIuIEN1c3RvbSBnZXR0ZXIvc2V0dGVycyB3aWxsIGhhdmUgCkBAIC03
MzAsNDggKzc4Myw2MyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICBjYWxsU2l0
ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcgPSBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0
aW9uSGFuZGxpbmcoKTsKICAgICB9CiAKKyAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygp
KSB7CisgICAgICAgIGZhaWx1cmUubGluaygmaml0KTsKKyAgICAgICAgLy8gSW4gQVJNNjQsIHdl
IGRvIG5vdCBwdXNoIGFueXRoaW5nIG9uIHN0YWNrIHNwZWNpYWxseS4KKyAgICAgICAgLy8gU28g
d2UgY2FuIGp1c3QganVtcCB0byB0aGUgc2xvdy1wYXRoIGV2ZW4gdGhvdWdoIHRoaXMgdGh1bmsg
aXMgY2FsbGVkIChub3QganVtcGVkKS4KKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0YWls
IGNhbGwgdG8gdGhlIHRodW5rIHdoaWNoIGNhbGxzIHRoZSBzbG93IHBhdGggZnVuY3Rpb24uCisg
ICAgICAgIC8vIEFuZCB3ZSBzaG91bGQgZWxpbWluYXRlIElDIHNsb3ctcGF0aCBnZW5lcmF0aW9u
IGluIEJhc2VsaW5lSklULgorICAgICAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d1BhdGhTdGFydExvY2F0aW9uKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfQorCisg
ICAgUmVmUHRyPEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZT4gc3R1YjsKKyAgICBGaXhlZFZlY3Rv
cjxTdHJ1Y3R1cmVJRD4gd2Vha1JlZmVyZW5jZXMoV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNl
cykpOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkgJiYgY2FuQmVTaGFyZWQpIHsK
KyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXIgc2VhcmNoZXIgeworICAgICAgICAg
ICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAg
ICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ubV9z
dHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAg
ICAgICBrZXlzLAorICAgICAgICAgICAgd2Vha1JlZmVyZW5jZXMsCisgICAgICAgIH07CisgICAg
ICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJjaGVyKTsKKyAgICAgICAg
aWYgKHN0dWIpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50
ZXJuYWw6OnZlcmJvc2UsICJGb3VuZCBleGlzdGluZyBjb2RlIHN0dWIgIiwgc3R1Yi0+Y29kZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIp
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNv
ZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9u
Q2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAg
ICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAg
IGRhdGFMb2coIkRpZCBmYWlsIHRvIGFsbG9jYXRlLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklm
KFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UsICJEaWQgZmFpbCB0byBhbGxvY2F0
ZS4iKTsKICAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdhdmVVcDsKICAg
ICB9CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzdWNjZXNzTGFi
ZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAKLSAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUu
c3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxvY2stPnVzZVNo
YXJlZElDKCkpCisgICAgICAgIEFTU0VSVChzdGF0ZS5zdWNjZXNzLmVtcHR5KCkpOworICAgIGVs
c2UgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVs
KTsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CisgICAgfQogICAgIAotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVy
bmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywg
c3R1YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0
dWIgZm9yICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoUG9seW1v
cnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBz
dHViSW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1
YiBmb3IgIiwgbGlzdER1bXAoY2FzZXMpKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4gY29kZSA9IEZJTkFMSVpFX0NPREVfRk9SKAogICAgICAgICBj
b2RlQmxvY2ssIGxpbmtCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiJXMi
LCB0b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZvciAiLCAqY29kZUJsb2NrLCAiICIsIHN0dWJJbmZv
LmNvZGVPcmlnaW4sICIgd2l0aCByZXR1cm4gcG9pbnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAiLCBs
aXN0RHVtcChjYXNlcykpLmRhdGEoKSk7Ci0KLSAgICBib29sIGRvZXNDYWxscyA9IGZhbHNlOwot
ICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDog
Y2FzZXMpCi0gICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNU
b01hcmspOwotICAgIAotICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShj
b2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRl
Lm1fY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNh
bGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7Ci0gICAgbV93YXRjaHBvaW50cyA9IFdU
Rk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwotICAgIGlmICghc3RhdGUud2Vha1JlZmVyZW5jZXMu
aXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVC
YXJyaWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKLSAgICBpZiAo
UG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiUmV0
dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCi0gICAgbV9saXN0ID0gV1RGTW92
ZShjYXNlcyk7Ci0gICAgbV9saXN0LnNocmlua1RvRml0KCk7Ci0gICAgCi0gICAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5kOwotICAgIGlmIChtX2xpc3Quc2l6ZSgpID49
IE9wdGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29k
ZSkKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRl
ZEZpbmFsQ29kZTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOwotICAgIAotICAgIHJldHVybiBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0KHJlc3VsdEtpbmQsIGNvZGUuY29kZSgpKTsKKyAgICBzdHViID0gY3JlYXRl
SUNKSVRTdHViUm91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVu
Y2VzKSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0
ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBj
YWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworCisgICAgaWYgKGNvZGVCbG9jay0+
dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBpZiAoY2FuQmVTaGFyZWQpCisgICAgICAgICAgICB2
bS5tX3NoYXJlZEpJVFN0dWJzLT5hZGQoU2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5KHN0dWJJ
bmZvLmJhc2VHUFIsIHN0dWJJbmZvLnZhbHVlR1BSLCBzdHViSW5mby5yZWdzLnRoaXNHUFIsIHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsIHN0dWIuZ2V0KCkp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHVi
KSk7CiB9CiAKIHZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCAy
OTIwMzI2ZGNjOTE1NDc0YjNmMWVlYjdmNzI1ZTZhYjM0YWVjYjQxLi43N2Q3MmYzMGQ1MzdhNjIy
YzliNWQ1NzUzZTVlMzVjM2NjYTljYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMTQxLDEwICsxNDEsMTAgQEAgY2xh
c3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIC8vIFdoZW4gdGhpcyBmYWlscyAocmV0dXJucyBH
YXZlVXApLCB0aGlzIHdpbGwgbGVhdmUgdGhlIG9sZCBzdHViIGludGFjdCBidXQgeW91IHNob3Vs
ZCBub3QgdHJ5CiAgICAgLy8gdG8gY2FsbCB0aGlzIG1ldGhvZCBhZ2FpbiBmb3IgdGhhdCBQb2x5
bW9ycGhpY0FjY2VzcyBpbnN0YW5jZS4KICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENh
c2VzKAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiwgMj4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
PiwgMj4pOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlKAotICAgICAgICBj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAgY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIFJlZjxBY2Nlc3NDYXNlPik7CiAgICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCByZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAg
ICAKQEAgLTE3OSwxNiArMTc5LDE1IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBm
cmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlv
blN0YXRlOwogICAgIAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiwgMj4gTGlzdFR5cGU7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+
LCAyPiBMaXN0VHlwZTsKICAgICAKICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNP
blN0cnVjdHVyZVN0dWJJbmZvPiYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwKICAg
ICAgICAgQWNjZXNzQ2FzZSYpOwogCiAgICAgTGlzdFR5cGUgbV9saXN0OwotICAgIFJlZlB0cjxK
SVRTdHViUm91dGluZT4gbV9zdHViUm91dGluZTsKKyAgICBSZWZQdHI8QWNjZXNzQ2FzZUpJVFN0
dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50
c09uU3RydWN0dXJlU3R1YkluZm8+IG1fd2F0Y2hwb2ludHM7Ci0gICAgRml4ZWRWZWN0b3I8V3Jp
dGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBzdHJ1Y3QgQWNjZXNz
R2VuZXJhdGlvblN0YXRlIHsKQEAgLTE5Niw2ICsxOTUsOCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJh
dGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAKICAgICAgICAgLCBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAg
LCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNlKQorICAgICAgICAsIG1fZG9lc0NhbGxz
KGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRp
b25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZF
eGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNpdGVJbmRleChmYWxz
ZSkKQEAgLTIyMywxMCArMjI0LDEyIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewog
ICAgIEZQUlJlZyBzY3JhdGNoRlBSIHsgSW52YWxpZEZQUlJlZyB9OwogICAgIEVDTUFNb2RlIG1f
ZWNtYU1vZGUgeyBFQ01BTW9kZTo6c2xvcHB5KCkgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0
Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKLSAgICBWZWN0b3I8V3Jp
dGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOworICAgIFZlY3RvcjxTdHJ1Y3R1cmVJ
RD4gd2Vha1JlZmVyZW5jZXM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9z
OworICAgIGJvb2wgbV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA6IDE7CisgICAgYm9vbCBtX2Rv
ZXNDYWxscyA6IDE7CiAKLSAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJik7CisgICAgdm9pZCBpbnN0YWxsV2F0Y2hwb2ludChDb2RlQmxvY2sq
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOwogCiAgICAgdm9pZCByZXN0b3JlU2Ny
YXRjaCgpOwogICAgIHZvaWQgc3VjY2VlZCgpOwpAQCAtMjQ4LDcgKzI1MSw3IEBAIHN0cnVjdCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBjYWxjdWxhdGVM
aXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAKICAgICBTcGlsbFN0
YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0
JiBleHRyYSA9IHsgfSk7Ci0gICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0
YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCk7CisgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVy
U2V0JiBleHRyYSA9IHsgfSk7CiAKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0
YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oY29uc3QgU3BpbGxTdGF0ZSYpOwogICAgIHZv
aWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGNvbnN0IFNwaWxsU3RhdGUm
LCBjb25zdCBSZWdpc3RlclNldCYgZG9udFJlc3RvcmUgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4
IGNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1MGVlYTZhM2IzNGU3NWZhOWQuLjRiZjc4MGVkMzE3NjZl
ZGU2YmNjNTYwNDQ2YTUwNzlhY2JjYzEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTM4LDE5ICszOCwx
OSBAQCBQcm94eWFibGVBY2Nlc3NDYXNlOjpQcm94eWFibGVBY2Nlc3NDYXNlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2NlcwogICAgIG1fdmlhUHJveHkgPSB2aWFQcm94eTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNy
ZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4g
UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0
aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3ND
aGFpbikKIHsKICAgICBBU1NFUlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0gTWlzcyB8fCB0eXBl
ID09IEdldEdldHRlciB8fCB0eXBlID09IFJlcGxhY2UpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBl
LCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwg
YWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRl
bnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0
aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKIFByb3h5YWJs
ZUFjY2Vzc0Nhc2U6On5Qcm94eWFibGVBY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxB
Y2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb3h5YWJsZUFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgUHJveHlhYmxlQWNj
ZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm94eWFi
bGVBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJveHlhYmxlQWNjZXNzQ2FzZS5oCmluZGV4IGRjMzllMjZjYTJmNGIyYjdhYmExMmI1YTU1ZjMy
NjY0NDEwZWZhNWMuLmU4NDM4NWNhNzVjOWY3NTJlOGU4ZTE2Y2RkZTBhYmNhYzdiY2M0ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3ND
YXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vz
c0Nhc2UuaApAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIFByb3h5YWJsZUFjY2Vzc0Nhc2UgOiBw
dWJsaWMgQWNjZXNzQ2FzZSB7CiAKICAgICBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0LmdldCgpOyB9CiAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFj
Y2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUq
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCgpLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0KCksCiAgICAgICAgIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwgV2F0Y2hwb2lu
dFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFp
bj4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1h
UHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgflByb3h5YWJsZUFjY2Vzc0Nhc2UoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKaW5kZXggYzhlNmJjNjNhMzZhMzliODQ1OGI5MDBjYjJhNTJlZjRmMTUxMTIwZi4uOGRm
NTgxZTQ2NGYwZTAyZTM0Nzc1NWZjNzkwZDI3Y2I4OTQyNWE0MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC01Miw2
ICs1Miw3IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpCiAgICAgLCBwcm9wZXJ0eUlzSW50MzIo
ZmFsc2UpCiAgICAgLCBwcm9wZXJ0eUlzU3ltYm9sKGZhbHNlKQogeworICAgIHJlZ3MudGhpc0dQ
UiA9IEludmFsaWRHUFJSZWc7CiB9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjp+U3RydWN0dXJlU3R1
YkluZm8oKQpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0
VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjph
ZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2Vy
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRUNN
QU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIFJl
ZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsK
IApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1
YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVz
dWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1
YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNv
ZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAgICAgICAgcmVzdWx0
ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIGFjY2Vzc0Nh
c2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChTdHJ1
Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2co
IkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAsOSArMTcxLDkgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhp
Y0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwg
Mj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAy
PiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHVi
SW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAgICAgYXV0byBwcmV2
aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVCbG9j
aywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nhc2UpCiAgICAgICAg
ICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXNDYXNlKSk7CiAgICAg
ICAgICAgICAKQEAgLTI3Niw3ICsyNzcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNl
dChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwogICAg
ICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldEluc3RhbmNlT2YoKnRo
aXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAgICAgICAgcmVzZXRE
ZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDg4MjU2
OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLmIyZTU4YTg5NTJkNDVjNTRmOWNl
YzQ2NTg1ZmI0NTBlMjJkZDllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIFN0cnVj
dHVyZVN0dWJJbmZvIHsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0
dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0
SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRl
bnRpZmllcik7CiAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01B
TW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+KTsKIAogICAgIHZv
aWQgcmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayopOwogCkBA
IC0xMzMsMTIgKzEzMyw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICAgICAgcmV0
dXJuIGlubGluZVNpemU7CiAgICAgfQogCi0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFs
UHRyVGFnPiBwYXRjaGFibGVKdW1wKCkKLSAgICB7IAotICAgICAgICBBU1NFUlQoYWNjZXNzVHlw
ZSA9PSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mKTsKLSAgICAgICAgcmV0dXJuIHN0YXJ0Lmp1bXBB
dE9mZnNldDxKU0ludGVybmFsUHRyVGFnPigwKTsKLSAgICB9Ci0KICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKApAQCAt
MzQ0LDE5ICszMzgsMzAgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogcHVibGljOgogICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydDsgLy8gVGhpcyBp
cyBlaXRoZXIgdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUgSUMgZm9yICpieUlkIGNhY2hlcy4gb3Ig
dGhlIGxvY2F0aW9uIG9mIHBhdGNoYWJsZSBqdW1wIGZvciAnaW5zdGFuY2VvZicgY2FjaGVzLgog
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbjsKLSAg
ICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9u
OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0
YXJ0TG9jYXRpb247CiAKKyAgICB1bmlvbiB7CisgICAgICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJ
bnRlcm5hbFB0clRhZz4gbV9zbG93UGF0aENhbGxMb2NhdGlvbjsKKyAgICAgICAgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247CisgICAgfTsKKworICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRhZz4gbV9jb2RlUHRyOworCisgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24pOyB9CisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0KKwogICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUjsKLSAgICBHUFJSZWcgdmFs
dWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BSUmVnIH07CisgICAgR1BSUmVn
IHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9uIHsKICAgICAgICAgR1BSUmVn
IHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAgIH0gcmVnczsKKyAgICBH
UFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBGSVhNRTogWzMyLWJpdHNdIENo
ZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlzIHVzZWQgc29tZXdoZXJlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDhhZGVhZDUw
ZjQ1NTZjZmYyNWU3YzdjOTk3ODMwNGQ0MTc3MDk3NDcuLjQ3NjU0YTc2ZGI1YTExM2YwZmNiNmJm
NjhhM2QyMmFjYmM2YTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMg
Q0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbExpbmtSZWNvcmQoZnVu
Y3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwogICAg
IH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICB9CiAg
ICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggMjVhMTIxOWZkZDQzYmRmZTNj
MDdiOGEyNzRkZjhlMGU1Nzg4ZDJiNS4uYmEzOWZmYWM3ZGJmMzg5ZWJmYjhiYzUwNmQ0MDllMTc1
MDBhZDIzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0
aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhH
ZW5lcmF0b3IuaApAQCAtMTg5LDYgKzE4OSw4IEBAIGNsYXNzIENhbGxSZXN1bHRBbmRBcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0CiAg
ICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOwogfTsKIAorCisKIHRlbXBs
YXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJl
c3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVj
dWxhdGl2ZUpJVCogaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCkBAIC0yNjQsNiArMjY2LDY3
IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92
ZSgKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5
cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2NsYXNzIENhbGxSZXN1
bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVibGljOgorICAgIENhbGxS
ZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAgICAgICBKdW1wVHlwZSBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9u
QWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LCBSZXN1
bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBDYWxsU2xv
d1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20sIGppdCwgc3BpbGxNb2Rl
LCByZXF1aXJlbWVudCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1YkluZm9H
UFIpCisgICAgICAgICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Moc2xvd1BhdGhPcGVyYXRp
b25BZGRyZXNzKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9h
cmd1bWVudHMoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAg
LCBtX3N0dWJJbmZvKHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVt
cGxhdGU8c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQgdW5wYWNrQW5kR2VuZXJh
dGUoU3BlY3VsYXRpdmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJbmRl
eC4uLj4pCisgICAgeworICAgICAgICBBU1NFUlQoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSk7CisgICAgICAgIHRoaXMtPnNldFVwKGppdCk7CisgICAgICAgIG1fc3R1Yklu
Zm8tPm1fc2xvd09wZXJhdGlvbiA9IG1fZnVuY3Rpb247CisgICAgICAgIGppdC0+bV9qaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm9HUFIp
OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxSZXN1bHRUeXBlLCBOb1Jlc3Vs
dFRhZz46OnZhbHVlKQorICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlw
ZT4obV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIHN0ZDo6Z2V0PEFyZ3VtZW50c0luZGV4Piht
X2FyZ3VtZW50cykuLi4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBqaXQtPmNhbGxPcGVy
YXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZXh0cmFjdFJl
c3VsdCh0aGlzLT5tX3Jlc3VsdCksIHN0ZDo6Z2V0PEFyZ3VtZW50c0luZGV4PihtX2FyZ3VtZW50
cykuLi4pOworICAgICAgICB0aGlzLT50ZWFyRG93bihqaXQpOworICAgIH0KKworICAgIHZvaWQg
Z2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KSBmaW5hbAorICAgIHsKKyAgICAg
ICAgdW5wYWNrQW5kR2VuZXJhdGUoaml0LCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0
dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPj46OnZhbHVlPigpKTsKKyAgICB9CisK
KyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgbV9z
bG93UGF0aE9wZXJhdGlvbkFkZHJlc3M7CisgICAgRnVuY3Rpb25UeXBlIG1fZnVuY3Rpb247Cisg
ICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOworICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBtX3N0dWJJbmZvOworfTsKKworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBl
LCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rp
b24sCisgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1
aXJlbWVudCByZXF1aXJlbWVudCwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4u
IGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1l
bnRzU2xvd1BhdGhJQ0dlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBl
LCBBcmd1bWVudHMuLi4+Pihmcm9tLCBqaXQsIHN0dWJJbmZvLCBzdHViSW5mb0dQUiwgc2xvd1Bh
dGhPcGVyYXRpb25BZGRyZXNzLCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVz
dWx0LCBhcmd1bWVudHMuLi4pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlw
ZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAor
ICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJl
dHVybiBzbG93UGF0aElDQ2FsbChmcm9tLCBqaXQsIHN0dWJJbmZvLCBzdHViSW5mb0dQUiwgc2xv
d1BhdGhPcGVyYXRpb25BZGRyZXNzLCBmdW5jdGlvbiwgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNo
ZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRChERkdfSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCAwYWY1ZGQ5ODM5YzgwMjE2ZWY4YmNmMGRlNjNkZTNiYzg5NWIzYThhLi45MjQ4MDI5NzA1MGZl
YjVhOTg3ZWQ5ZGY1YzkyNzFiNzYwODI4MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTA0NSwyNCArMTA0NSwzNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFj
Y2Vzc1R5cGUpCiAKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAg
IGNhc2UgQ2VsbFVzZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2Us
IGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7Cisg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7
CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpK
dW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9T
cGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBzdGQ6Om9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSBy
ZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDcwLDcgKzEwODIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBO
ZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMTA4NiwyNyArMTA5OCwzOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkK
IHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2Vs
bFVzZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlLmdwcigpKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOwor
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BS
ID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNlLnVzZSgp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlw
ZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVn
cywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
SklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5
cGVkVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgICAg
IEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBs
YWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdz
KCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAg
ICAgICAgIGJhc2UudXNlKCk7CkBAIC0xMTE1LDcgKzExMzksNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vz
c1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZv
cm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAg
LTExMzAsMTQgKzExNTQsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRG
bHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7Cisg
ICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c2NyYXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5
bG9hZEdQUigpOwpAQCAtMTE0NywyMCArMTE3NiwzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVn
aXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAg
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNj
cmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJ
VCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkRGR0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1Yklu
Zm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwK
KyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
IH0KICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
LAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9w
dGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTExODksMjIgKzEyMzMsMjcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQ
UlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlz
LCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGtleSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAK
KyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYg
KEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0
dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOwogCisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2Rl
LT5jaGlsZDIoKSk7CisKICAgICAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMigp
LCBTcGVjQ2VsbCkpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChrZXlSZWdzKSk7CiAKQEAgLTEyMTMsMjAgKzEyNjIsMzUgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BS
KTsKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwg
c2NyYXRjaEdQUik7CiAKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICgh
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJ
bmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtl
eVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAg
fQogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1
c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZW5kaWYK
IAogICAgICAgICBtX2ppdC5hZGREZWxCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTEy
NTUsOSArMTMxOSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwo
Tm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlJZChOb2RlKiBu
b2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1Zh
bHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UsIFBheWxvYWRXb3JkKTsK
IAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1w
bGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
fQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIApAQCAtMTI2NywxNCArMTMzNywyNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIEpJ
VEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3Mp
OworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAor
ICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKLSAgICBhdXRv
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRo
aXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAotICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkp
OworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBO
ZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAg
ICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9CiAK
ICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzU4OSw5ICszNjcwLDE5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBub2RlLT5vcCgpID09IEdldFByaXZhdGVOYW1lKTsKICAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN5bWJv
bFVzZSk7Ci0gICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwogCisg
ICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdz
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwg
MSkpOworCiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRS
ZWdpc3RlcnMoKTsKQEAgLTM2MDIsMTQgKzM2OTMsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlMKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkp
OwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1
c2VkUmVnaXN0ZXJzLAotICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7Cisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgYmFzZSwgcHJvcGVydHksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1
YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xv
d1BhdGhDYWxsID0gWyZdKGF1dG8gYmFzZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxs
ID0gWyZdKGF1dG8gYmFzZSkgeworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUs
CisgICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwKKyAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9w
ZXJ0eS5wYXlsb2FkR1BSKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplLAogICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwKQEAgLTM2MTcsOCArMzcxNCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTCiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBiYXNlSXNLbm93bkNlbGwKLSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xv
d1BhdGhDYWxsKGJhc2UpOworICAgICAgICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRo
SUNDYWxsKGJhc2UpOwogCiAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYz
MCwyOCArMzcyNyw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5h
bWVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDAp
LnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7
CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQog
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VS
ZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVy
OjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0
UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGls
ZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNl
UmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGws
IE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1
YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3Bp
bGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzc1
MCwyOSArMzg1OSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5h
bWUoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lQnlJZChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJ
bmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzY3JhdGNo
R1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVy
aW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAgICAgLy8gdG8gY2hlY2sgaXQg
aGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNE
ZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRp
cmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgY2FjaGVkUHV0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1v
ZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRW
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLQogICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUu
Z3ByKCk7CiAKICAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIGJyYW5kR1BSKTsK
QEAgLTM3ODYsMTYgKzM5MDYsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNr
UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAotICAg
ICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZv
R1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1
YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uQ2hl
Y2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJh
bmRHUFIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
KyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRP
cHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAg
ICB9CiAKICAgICBtX2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzgw
Niw5ICszOTM0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVC
cmFuZChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVC
cmFuZChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gQ2VsbFVzZSk7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwog
CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBs
YWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9
CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBicmFuZEdQUiA9
IGJyYW5kVmFsdWUuZ3ByKCk7CiAKQEAgLTM4MjAsMTYgKzM5NTQsMjQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogCiAgICAgSklUQ29t
cGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJ
VCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNl
ZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBn
ZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5v
UmVzdWx0LCAKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5k
R1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQ
UiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAg
ICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0K
IAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsK
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTQ3LDIy
ICs0MDg5LDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0
YW5jZShOb2RlKiBub2RlKQogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlw
ZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRj
aDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd0Nhc2UpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBK
SVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1
bHRHUFIsCi0gICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5
bG9hZEdQUigpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiwKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigp
KS5pc1R5cGUoU3BlY09iamVjdCB8IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKLSAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwor
ICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoc2xvd0Nhc2UpOwotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBwcm90b3R5cGVSZWdz
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBl
UmVncyk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0
aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpA
QCAtMzk3Myw2ICs0MTIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YoTm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTgwLDEzICs0MTI5LDE4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhp
cyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcHJvdG90eXBl
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKLSAgICAgICAgY29tcGlsZUluc3Rh
bmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOworICAgICAg
ICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
SlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRj
aEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAKICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzk5NiwxMiArNDE1MCwx
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQog
ICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIAorICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvdG90eXBlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIAorICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAg
ICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVSZWdz
IHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcHJvdG90
eXBlUmVncyA9IHByb3RvdHlwZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAtNDAxNyw3ICs0MTc3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkK
ICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChwcm90b3R5cGVSZWdzKTsKICAgICAKLSAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxz
KG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBJ
bnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CisgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhu
b2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIHNj
cmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKICAgICAKICAgICBkb25lLmxpbmso
Jm1faml0KTsKICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAt
MTMwNDcsNDYgKzEzMjA3LDY0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0luZGV4
U3RyaW5nKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlk
Rmx1c2goTm9kZSogbm9kZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1
YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5m
b0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQ
UiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1
dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAo
KSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCksIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9kZSkKIHsK
KyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHVi
SW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIo
KTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNh
Y2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtp
bmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9k
ZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAg
IGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3Ms
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1
dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
IH0KQEAgLTE0NzE4LDE4ICsxNDg5NiwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNt
YU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7
CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsK
ICAgICBpZiAoc3BpbGxNb2RlID09IERvbnRTcGlsbCkgewogICAgICAgICAvLyBXZSd2ZSBhbHJl
YWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGls
bCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAg
ICAgICB1c2VkUmVnaXN0ZXJzLnNldCh2YWx1ZVJlZ3MsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAorICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywg
aWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2
YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLAogICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0
S2luZCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CkBAIC0xNDczOSw5ICsx
NDkxOSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CiAKLSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
SUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRz
KCkpOworICAgIH0KIAogICAgIG1faml0LmFkZFB1dEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDc0YzE1ZTY5N2Uy
Y2MzMmY2ZTliMmU3YzI1YTZlMThjMTNkNDBkNmIuLjg2OGJmZjcwZjk0ZjhlMjExMWE0NjhkZGVh
NDk1MzIxNzQ1ZmIzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTcxOSwxNiArNzE5LDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsK
IAogICAgIHZvaWQgY29tcGlsZUNoZWNrRGV0YWNoZWQoTm9kZSopOwogCi0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQs
IFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlk
KENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGls
bFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0
dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hl
ZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwp
OwogICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lkIGNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGls
bFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhU
aGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0
JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2b2lkIGNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIs
IEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAg
dm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJn
ZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9u
ZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBj
YWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUs
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0
aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBh
eWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBH
UFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZv
aWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JO
b25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJS
ZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXls
b2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExp
c3QoKSk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQoTm9kZSopOwpAQCAt
NzUxLDcgKzc1MSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGdlbmVyaWNK
U1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAg
ICAgYm9vbCBnZW5lcmljSlNWYWx1ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNl
KTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFs
dWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRH
UFQsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CisgICAgdm9pZCBjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dD
YXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZihO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSopOwpAQCAtOTQ5LDYgKzk0OSwyNiBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlw
ZW5hbWUgUmVzdWx0UmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVuYWJsZV9p
Zl90PAorICAgICAgICBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAor
ICAgIHZvaWQ+CisgICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVz
cywgUmVzdWx0UmVnVHlwZSByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3Ms
IGFyZ3MuLi4pOworICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCksIHJlc3VsdCk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAhRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46Omhhc1Jlc3VsdCwKKyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3Ms
IGFyZ3MuLi4pOworICAgICAgICBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpub25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCkpOworICAgIH0KKwogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihW
X0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsK
ICAgICAgICAgLy8gRG8gbm90IHJlZ2lzdGVyIENvZGVCbG9jayogYXMgYSB3ZWFrLXBvaW50ZXIu
CkBAIC05ODgsNiArMTAwOCwxMyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJl
dHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVu
ZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBwcmVw
YXJlRm9yRXh0ZXJuYWxDYWxsKCk7CisgICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4o
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgbV9qaXQuYXBwZW5kQ2Fs
bChhZGRyZXNzKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRPcGVyYXRp
b25DYWxsKGNvbnN0IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAg
ewogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CkBAIC0xMDEwLDYgKzEwMzcsMjgg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAK
KyAgICB2b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MsIEdQUlJlZyByZXN1bHQpCisgICAgeworICAgICAgICBhcHBlbmRDYWxsKGFkZHJlc3MpOwor
ICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2ppdC5t
b3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQg
YXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVn
IHJlc3VsdDEsIEdQUlJlZyByZXN1bHQyKQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRy
ZXNzKTsKKyAgICAgICAgbV9qaXQuc2V0dXBSZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOworICAg
IH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mg
YWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChhZGRyZXNzLCByZXN1bHRSZWdzLmdwcigp
KTsKKyNlbHNlCisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoYWRkcmVzcywgcmVzdWx0UmVn
cy5wYXlsb2FkR1BSKCksIHJlc3VsdFJlZ3MudGFnR1BSKCkpOworI2VuZGlmCisgICAgfQorCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggZjEyZjg2ZjBkNjg5YzU0NjAzZWYwZGYzYzA3N2EyMTRiZTFmOTMwMy4uNTI2NDZhOTYx
ZmZiODViYzQ5ZGNhMTJmNGY5NTAwMTc3NTNmNzQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xNjgsMTUgKzE2
OCwxNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UsIEdQUlJl
ZyYgdGFnR1BSLCBHUFJSZWcmIHBheWxvYWRHUFIsCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwg
QWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2Rl
T3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNz
VHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLnRhZ0dQUigpLCBi
YXNlLnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBp
ZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJ
ZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BS
KCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0
aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoCi0gICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9u
ZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFn
R1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogeworICAgIFVO
VVNFRF9QQVJBTShzdHViSW5mb0dQUik7CiAgICAgLy8gVGhpcyBpcyBhIGhhY2t5IGZpeCBmb3Ig
d2hlbiB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGRlY2lkZXMgdG8gYWxpYXMgdGhlIGJhc2UgcGF5
bG9hZCB3aXRoIHRoZSByZXN1bHQgdGFnLiBUaGlzIG9ubHkgaGFwcGVucwogICAgIC8vIGluIHRo
ZSBjYXNlIG9mIEdldEJ5SWRGbHVzaC9HZXRCeUlkRGlyZWN0Rmx1c2gsIHdoaWNoIGhhcyBhIHJl
bGF0aXZlbHkgZXhwZW5zaXZlIHJlZ2lzdGVyIGFsbG9jYXRpb24gc3RvcnkgYWxyZWFkeSBzbyB3
ZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvCiAgICAgLy8gdHJpcCBvdmVyIG9uZSBtb3ZlIGluc3Ry
dWN0aW9uLgpAQCAtMjAwLDggKzIwMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoCiAgICAgCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENh
bGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3Jp
Z2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0
ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBi
YXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiksIHR5cGUpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVn
cyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBJbnZhbGlkR1BSUmVnLCB0eXBlKTsK
ICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCkBAIC0yMjgsMTUg
KzIyOSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCi0gICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BS
LCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0
VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0KQogeworICAgIFVOVVNFRF9QQVJBTShzdHViSW5mb0dQUik7CiAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICAKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRl
bnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1Zh
bHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUikpOworICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRH
UFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiksIEludmFsaWRHUFJS
ZWcpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIz
NDEsOCArMjM0Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChi
YXNlUmVncy50YWdHUFIoKSkpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgICAg
ICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgYmFz
ZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAKICAgICAg
ICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSku
aXNUeXBlKFNwZWNTdHJpbmcpKQogICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKQEAgLTM0MDUsNyArMzQwNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdH
UFIgPSByZXN1bHRUYWcuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQ
UiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJh
c2VHUFIsIEludmFsaWRHUFJSZWcsIHRoaXNHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGNhY2hlZEdl
dEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJhc2VH
UFIsIEludmFsaWRHUFJSZWcsIHRoaXNHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIsIG5vZGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzQyNSw3ICszNDI3LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbm90Q2Vs
bExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpKTsK
ICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwodGhp
c1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVRhZ0dQUiwgYmFzZVBh
eWxvYWRHUFIsIHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwor
ICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSLCBy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIEludmFsaWRHUFJSZWcsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IGVmOGJhMzg2OGU4NTg3YzE0YzM3NDAyYjhiYzM4NDMwOWM4MTIwYTAu
LjI5MzAzMGZkMWU0MmMwMzk0Y2YyNmMzOGI1YTVkMzYwNTkxZjIxZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTQ3LDEy
ICsxNDcsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2Up
CiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmln
aW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
LCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGls
bFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5
SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIGlkZW50aWZpZXIsIHNsb3dQYXRo
VGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIo
KSwgcmVzdWx0LmdwcigpLCBzdHViSW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQs
IG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFy
Z2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwpAQCAtMTYwLDI2ICsxNjAsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAg
ICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdl
IGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJh
c2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxz
ZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHR5cGUpOworICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSLCB0eXBlKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwK
LSAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBi
YXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9u
KHR5cGUpLAorICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAg
ICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVk
LAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogICAgIAogICAgIG1faml0
LmFkZEdldEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMTg3
LDIwICsxOTcsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlz
KENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAgICB1c2VkUmVnaXN0ZXJz
LnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQodGhpc0dQUiwgZmFs
c2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgIGlmIChz
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChz
dHViSW5mb0dQUiwgZmFsc2UpOwogICAgIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BS
KSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpKTsKKyAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQ
UiksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlzR1BSKSwgc3R1YkluZm9H
UFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhU
YXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
c09wdGltaXplLAotICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6
OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAg
fQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0yNjgx
LDE2ICsyNzAxLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwotCisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9w
ZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
cHJvcGVydHkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAg
ICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogCisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CisKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFu
ZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAg
ICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwpAQCAtMjcwMCw4ICsyNzI3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGJhc2VHUFIpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1
c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BS
KTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMjcxMiwxMSArMjczOSwxOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwK
LSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5
R1BSKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuYWRk
R2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg0LDkgKzQwMTksMTYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRCeUlkV2l0
aFRoaXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNl
ICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZv
LmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+
Z3ByKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CkBAIC0zOTk0LDE0ICs0MDM2LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgICAg
ICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQ
UiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgCiAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
c3R1YkluZm87CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisK
KyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1Yklu
Zm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BS
ID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC00MDEzLDcgKzQwNjIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKSk7CiAgICAg
ICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVS
ZWdzKHRoaXNWYWx1ZUdQUikpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwor
ICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggODMwZmJiODNlZGEw
ZjU4NWNjZDYwNTc2ZmJjZmQ2MjNjYTVjNWM3ZC4uMzI5ODZhNzcwM2U4MTQwN2QzNGM5MzE1ZTlh
NzZjYTUxNmFkNjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMzk3OCw2ICszOTc4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAog
ICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxl
ID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC0zOTk5
LDEwICs0MDAwLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiks
IHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RD
ZWxsOwogICAgICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQwMTYsMTMgKzQwMTgs
MjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90
Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhK
dW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5
R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9H
UFIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQ
YXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDExMCw2ICs0MTI0LDcg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90
Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwogCkBAIC00MTMwLDEwICs0MTQ1LDExIEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOwog
ICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAg
ICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+Ojpj
cmVhdGUoCi0gICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCi0gICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhicmFuZEdQUikpOworICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6
RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUs
CisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICBpZiAoIWJh
c2VJc0NlbGwpCkBAIC00MTU5LDEzICs0MTc1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAK
ICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAg
ICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
YXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJS
ZWcsCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQ
UikuY2FsbCgpOworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGw7CisgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZU
TEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBhcHBy
b3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBicmFu
ZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFw
cHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVn
LAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBi
cmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBqaXQu
anVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00NTE2
LDYgKzQ1NDQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OnJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElD
KEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBp
cyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9sYXRpbGUg
cmVnaXN0ZXJzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUyODQ4CkBAIC00NTM4LDEwICs0NTY3LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVyIGNhbGwgSUNzIGdlbmVyYXRlZCBieSB0aGUg
UHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7
CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJS
ZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQdXRCeUlkR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCi0gICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBh
dGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAorICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgR1BSSW5mbzo6cGF0Y2hw
b2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCiAgICAgICAgICAgICAgICAgICAgIHB1dEtp
bmQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7
CkBAIC00NTUzLDEyICs0NTg0LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9
IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJSZWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdw
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRp
Zmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW5lcmF0b3ItPnNsb3dQ
YXRoRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwg
cGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNb
MF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBn
ZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sx
XS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigp
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxs
KHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01MjM5LDYgKzUyODIsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsK
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAgICAgUmVmUHRyPFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBv
aW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtNTI1OSwxMCArNTMwMywxMSBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBw
YXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNb
MV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJd
LmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxp
ZEdQUlJlZzsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5
VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0
QnlWYWwsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVl
UmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZTo6R2V0QnlWYWwsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlH
UFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlz
U3RyaW5nOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJ
c0ludDMyID0gcHJvcGVydHlJc0ludDMyOwpAQCAtNTI4MCwxMyArNTMyNSwyNSBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVn
aW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1
bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIp
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXpl
LCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRo
Q2FsbCk7CkBAIC01ODM2LDcgKzU4OTMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BS
SW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gMTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDIgOiAxOwogCiAgICAgICAgIFJlZlB0
cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAg
ICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtNTg1Niw5
ICs1OTEzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBhdXRv
IGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpOwogICAgICAgICAgICAgICAgIGF1
dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgICAgIGF1dG8gc2Ny
YXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICAgICAgYXV0byBzdHVi
SW5mb0dQUiA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMu
Z3BTY3JhdGNoKDEpIDogSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFz
ZS5ncHIoKSAhPSByZXR1cm5HUFIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigp
ICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5H
UFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJhc2Uu
Z3ByKCkgIT0gc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAh
PSBzY3JhdGNoR1BSKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKQEAgLTU4NzQsNyArNTkzMyw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocGFy
YW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJ
Zk5vdENlbGwoSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CkBAIC01ODg0LDE5
ICs1OTQzLDIwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
YXV0byBnZW5lcmF0b3IgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNp
dGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBz
dWJzY3JpcHRWYWx1ZSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVl
UmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BS
LCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0o
KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwot
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KSk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpG
VExKSVQpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+
c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9u
ZSA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKApA
QCAtNTkwNSwxMiArNTk2NSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVu
Y3Rpb24sIHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlw
dCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQ
YXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0
dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJ
bmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJldHVy
bkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVu
Y3Rpb24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVn
aW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjI0Miw4ICsxMjMxNCw4IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwog
CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5k
bGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9p
bnQpOwpAQCAtMTIyNjAsMTAgKzEyMzMyLDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBh
cmFtcyktPmp1bXBzKGppdCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRj
aCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9
IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdw
cigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSks
IHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0
UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGpp
dC5sYWJlbCgpOwpAQCAtMTIyNzQsMTIgKzEyMzQ4LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGlu
aygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xv
d1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJh
bXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdC
aXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3By
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygp
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1z
WzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjQ4Niw3ICsxMjU3Miw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVS
ZWdpc3Rlcihwcm90b3R5cGUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDI7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAzIDogMjsK
ICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21l
RWFybHlSZWdpc3RlciB9OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIApAQCAtMTI1MDIsNiArMTI1ODgs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm90b3R5
cGVHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNo
MkdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5n
cFNjcmF0Y2goMikgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lSnVtcDsKICAgICAgICAgICAgICAgICBpZiAo
IXZhbHVlSXNDZWxsKSB7CkBAIC0xMjUyMywxMCArMTI2MTAsMTIgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRD
cmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVh
dGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3Jh
dGNoR1BSLAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZU
TEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQ
UiwgcHJvdG90eXBlR1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAg
ICAgICAgc2NyYXRjaDJHUFIsIHByb3RvdHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKApAQCAtMTI1MzcsMTIg
KzEyNjI2LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0
LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBv
cHRpbWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXph
dGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHZhbHVl
R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2
YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwo
c2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEzOTg2LDYgKzE0MDg3LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVy
KGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAog
ICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIEdldEJ5SWRGbHVzaC9HZXRCeUlkRGlyZWN0
Rmx1c2gsIHdlIG1pZ2h0IGdldCBzb21lIHBlcmZvcm1hbmNlIGJvb3N0IGlmIHdlIGNsYWltIHRo
YXQgaXQKICAgICAgICAgLy8gY2xvYmJlcnMgdm9sYXRpbGUgcmVnaXN0ZXJzIGxhdGUuIEl0J3Mg
bm90IG5lY2Vzc2FyeSBmb3IgY29ycmVjdG5lc3MsIHRob3VnaCwgc2luY2UgdGhlCkBAIC0xNDAx
NCwxMCArMTQxMTYsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAv
LyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5z
Y2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisg
ICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwor
CiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCB0eXBlKTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgc3R1YkluZm9HUFIsIHR5
cGUpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7
CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7
CkBAIC0xNDAzMCwxMiArMTQxMzQsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2lu
ID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
aWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0
aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwg
cGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+
b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFy
YW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxp
bmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5y
ZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTE0MDYw
LDggKzE0MTc2LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTE0MDgzLDEwICsxNDE5
OSwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxs
c2l0ZSBpbmRleC4KICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpG
VExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAg
ICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+
OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1z
WzJdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5n
cHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSksIHN0dWJJbmZvR1BSKTsKIAogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQwOTks
MTIgKzE0MjE3LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJl
bCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1p
emF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0
aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5m
b0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJh
d0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxs
KHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKaW5kZXggMmFkZDQ5NGM1MzJhYWVhOGVlM2QxMWNlMTIy
NzgxMTg5MzU2YWQ0Zi4uYjRlNDc1OGU1OGZiMWU3OTI2YzZhMDcxODM3MzE1ODk4N2M3NmQ1NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcApAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiBzdGF0aWMgY29u
c3RleHByIHNpemVfdCB3b3JkU2l6ZSA9IDg7CiAKIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQ
YXRoQ2FsbENvbnRleHQoCi0gICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxw
ZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlcikKKyAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVt
QXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyLCBHUFJSZWcgaW5kaXJlY3RDYWxsVGFyZ2V0UmVn
aXN0ZXIpCiAgICAgOiBtX2ppdChqaXQpCiAgICAgLCBtX251bUFyZ3MobnVtQXJncykKICAgICAs
IG1fcmV0dXJuUmVnaXN0ZXIocmV0dXJuUmVnaXN0ZXIpCkBAIC02Myw2ICs2Myw4IEBAIFNsb3dQ
YXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQoCiAgICAgbV9jYWxsaW5nQ29udmVu
dGlvblJlZ2lzdGVycy5tZXJnZShtX2FyZ3VtZW50UmVnaXN0ZXJzKTsKICAgICBpZiAocmV0dXJu
UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJl
Z2lzdGVycy5zZXQoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgIGlmIChpbmRpcmVjdENh
bGxUYXJnZXRSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBtX2NhbGxpbmdDb252
ZW50aW9uUmVnaXN0ZXJzLnNldChpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgbV9j
YWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5maWx0ZXIodXNlZFJlZ2lzdGVycyk7CiAgICAgICAg
IAogICAgIHVuc2lnbmVkIG51bWJlck9mQ2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMgPQpAQCAt
MTE0LDcgKzExNiwxMiBAQCBTbG93UGF0aENhbGxDb250ZXh0Ojp+U2xvd1BhdGhDYWxsQ29udGV4
dCgpCiAKIFNsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0
KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3Vt
ZW50UmVnaXN0ZXJzLCBtX29mZnNldCk7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3Ro
dW5rU2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIDAp
OworfQorCitTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdl
dChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykgY29uc3QKK3sKKyAgICByZXR1cm4gU2xv
d1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBudWxscHRyLCBtX2FyZ3VtZW50UmVnaXN0ZXJz
LCBtX29mZnNldCwgYWRkcmVzcy5vZmZzZXQpOwogfQogCiBTbG93UGF0aENhbGwgU2xvd1BhdGhD
YWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGNhbGxUYXJnZXQpCkBAIC0xMzMsNiArMTQwLDIyIEBAIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENh
bGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4
dDo6bWFrZUNhbGwoVk0mIHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbFRhcmdldCkKK3sK
KyAgICBTbG93UGF0aENhbGxLZXkga2V5ID0ga2V5V2l0aFRhcmdldChjYWxsVGFyZ2V0KTsKKyAg
ICBTbG93UGF0aENhbGwgcmVzdWx0ID0gU2xvd1BhdGhDYWxsKG1faml0LmNhbGwoSklUVGh1bmtQ
dHJUYWcpLCBrZXkpOworCisgICAgbV9qaXQuYWRkTGlua1Rhc2soCisgICAgICAgIFtyZXN1bHQs
ICZ2bV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGh1bmsgPQorICAgICAgICAgICAgICAgIHZtLmZ0
bFRodW5rcy0+Z2V0U2xvd1BhdGhDYWxsVGh1bmsodm0sIHJlc3VsdC5rZXkoKSk7CisKKyAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhyZXN1bHQuY2FsbCgpLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRUaHVua1B0clRhZz4odGh1bmsuY29kZSgpKSk7CisgICAgICAgIH0pOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihT
dGF0ZSYgc3RhdGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKICAgICBpZiAoY29kZU9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCmluZGV4IDcw
ZDI4OGUwM2YxZDhkODFmMjc3ZjZiODIxN2FjOWYzZmE4MGMxMmEuLmQ2ZjI4NTQ5YTMxYjMzNWRk
NWI1NzU5YWNlMjEwZjQ4MmE4MzFkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuaApAQCAtNTQsMTUgKzU0LDE3IEBAIGNsYXNzIFNsb3dQYXRoQ2FsbCB7
CiAvLyBUaGlzIHdpbGwgYmUgYW4gUkFJSSB0aGluZ3kgdGhhdCB3aWxsIHNldCB1cCB0aGUgbmVj
ZXNzYXJ5IHN0YWNrIHNpemVzIGFuZCBvZmZzZXRzIGFuZCBzdWNoLgogY2xhc3MgU2xvd1BhdGhD
YWxsQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgU2xvd1BhdGhDYWxsQ29udGV4dChSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcg
cmV0dXJuUmVnaXN0ZXIpOworICAgIFNsb3dQYXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNl
ZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVy
blJlZ2lzdGVyLCBHUFJSZWcgaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIH5TbG93
UGF0aENhbGxDb250ZXh0KCk7CiAKICAgICAvLyBOT1RFOiBUaGUgY2FsbCB0aGF0IHRoaXMgcmV0
dXJucyBpcyBhbHJlYWR5IGdvaW5nIHRvIGJlIGxpbmtlZCBieSB0aGUgSklUIHVzaW5nIGFkZExp
bmtUYXNrKCksCiAgICAgLy8gc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgeW91IHRvIGxpbmsgaXQg
eW91cnNlbGYuCiAgICAgU2xvd1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KTsKKyAgICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0m
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpOwogCiBwcml2YXRlOgogICAgIFNsb3dQYXRoQ2FsbEtl
eSBrZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkg
Y29uc3Q7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKSBjb25zdDsKICAgICAKICAgICBSZWdpc3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJz
OwogICAgIFJlZ2lzdGVyU2V0IG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnM7CkBAIC04Miw3
ICs4NCw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogewogICAgIFNsb3dQYXRoQ2Fs
bCBjYWxsOwogICAgIHsKLSAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRS
ZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwg
c2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPHZvaWQoQXJndW1lbnRUeXBlcy4uLik+KGFyZ3Vt
ZW50cy4uLik7CiAgICAgICAgIGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBmdW5jdGlvbik7
CiAgICAgfQpAQCAtMTE3LDYgKzExOSw0OCBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigK
ICAgICAgICAgcmVzdWx0LCBhcmd1bWVudHMuLi4pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZt
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIEND
YWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRhcmdldCwKKyAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRHUFIsIEFyZ3VtZW50VHlwZXMuLi4gYXJn
dW1lbnRzKQoreworICAgIFNsb3dQYXRoQ2FsbCBjYWxsOworICAgIHsKKyAgICAgICAgU2xvd1Bh
dGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3Vt
ZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAg
aml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPHZvaWQoQXJndW1lbnRUeXBlcy4uLik+
KGZ1bmN0aW9uLCBhcmd1bWVudHMuLi4pOworICAgICAgICBjYWxsID0gY29udGV4dC5tYWtlQ2Fs
bCh2bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGZ1bmN0aW9u
Lm9mZnNldCkpOworICAgIH0KKyAgICBpZiAoZXhjZXB0aW9uVGFyZ2V0KQorICAgICAgICBleGNl
cHRpb25UYXJnZXQtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKHZtKSk7CisgICAgcmV0
dXJuIGNhbGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93
UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4LAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLAorICAgIEFyZ3VtZW50
VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIGlmIChjYWxsU2l0ZUluZGV4KSB7CisgICAgICAg
IGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2Fs
bFNpdGVJbmRleC5iaXRzKCkpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmly
dHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkp
OworICAgIH0KKyAgICByZXR1cm4gY2FsbE9wZXJhdGlvbih2bSwgdXNlZFJlZ2lzdGVycywgaml0
LCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZ3VtZW50cy4uLik7Cit9
CisKK0NhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmLCBDb2Rl
T3JpZ2luKTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRo
Q2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFN0YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJn
dW1lbnRzKQoreworICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKAorICAgICAgICBzdGF0ZS52bSgp
LCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKHN0YXRlLCBj
b2RlT3JpZ2luKSwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwKKyAgICAgICAgcmVzdWx0LCBh
cmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmNwcAppbmRleCAyZDMwNmM2MjAzM2E4MzkwOGU2ZmNjNmFiOWU2ZTg0Y2Zl
ODFlY2FhLi5jNGU3ZTgyNjFmZDQ3MzZiMWQzMzcyYmVmNTUxM2VmZTVhYTM5YTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdm9pZCBTbG93
UGF0aENhbGxLZXk6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJp
bnQoIjx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBt
X29mZnNldCwgIiwgY2FsbFRhcmdldCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1
dGFibGVBZGRyZXNzKCkpLCAiLCBhcmd1bWVudFJlZ2lzdGVycyA9ICIsIG1fYXJndW1lbnRSZWdp
c3RlcnMsICI+Iik7CisgICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJl
Z2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGluZGlyZWN0T2Zmc2V0ID0gIiwg
bV9pbmRpcmVjdE9mZnNldCwgIiwgY2FsbFRhcmdldCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFy
Z2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAiLCBhcmd1bWVudFJlZ2lzdGVycyA9ICIsIG1fYXJn
dW1lbnRSZWdpc3RlcnMsICI+Iik7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCmluZGV4IDA4
NmFlMDBlZTU4NTUyYzdjZTgzZDcwNTIwZTc2MTM4NDJiZGQzM2QuLjBjZTYxZjI2YmE5NTBiOTNm
YzNhOGVjMTliNTY3NDFhZTEwMDBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuaApAQCAtNTEsMTEgKzUxLDEyIEBAIGNsYXNzIFNsb3dQYXRo
Q2FsbEtleSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KAogICAgICAgICBjb25zdCBSZWdp
c3RlclNldCYgc2V0LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQsIGNv
bnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycywKLSAgICAgICAgcHRyZGlmZl90IG9m
ZnNldCkKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCwgaW50MzJfdCBpbmRpcmVjdE9mZnNldCkK
ICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoc2V0KQogICAgICAgICAsIG1fY2FsbFRhcmdldChj
YWxsVGFyZ2V0LnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKSkKICAgICAgICAgLCBtX2FyZ3Vt
ZW50UmVnaXN0ZXJzKGFyZ3VtZW50UmVnaXN0ZXJzKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKKyAgICAgICAgLCBtX2luZGlyZWN0T2Zmc2V0KGluZGlyZWN0T2Zmc2V0KQogICAgIHsKICAg
ICB9CiAgICAgCkBAIC02MywxMCArNjQsMTEgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAg
ICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxUYXJnZXQ7IH0KICAgICBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3Rl
cnMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50UmVnaXN0ZXJzOyB9CiAgICAgcHRyZGlmZl90
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgaW50MzJfdCBpbmRpcmVj
dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaXJlY3RPZmZzZXQ7IH0KICAgICAKICAgICBT
bG93UGF0aENhbGxLZXkgd2l0aENhbGxUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBjYWxsVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2Vk
UmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9mZnNldCgpKTsK
KyAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJn
ZXQsIGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9mZnNldCgpLCBpbmRpcmVjdE9mZnNldCgpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkBAIC03NiwxMyAr
NzgsMTEgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxL
ZXkoRW1wdHlWYWx1ZVRhZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6
OkVtcHR5VmFsdWUpCi0gICAgICAgICwgbV9vZmZzZXQoMCkKICAgICB7CiAgICAgfQogICAgIAog
ICAgIFNsb3dQYXRoQ2FsbEtleShEZWxldGVkVmFsdWVUYWcpCiAgICAgICAgIDogbV91c2VkUmVn
aXN0ZXJzKFJlZ2lzdGVyU2V0OjpEZWxldGVkVmFsdWUpCi0gICAgICAgICwgbV9vZmZzZXQoMCkK
ICAgICB7CiAgICAgfQogICAgIApAQCAtOTMsMTggKzkzLDIwIEBAIGNsYXNzIFNsb3dQYXRoQ2Fs
bEtleSB7CiAgICAgewogICAgICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzID09IG90aGVyLm1f
dXNlZFJlZ2lzdGVycwogICAgICAgICAgICAgJiYgbV9jYWxsVGFyZ2V0ID09IG90aGVyLm1fY2Fs
bFRhcmdldAotICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQ7CisgICAg
ICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldAorICAgICAgICAgICAgJiYgbV9p
bmRpcmVjdE9mZnNldCA9PSBvdGhlci5tX2luZGlyZWN0T2Zmc2V0OwogICAgIH0KICAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMu
aGFzaCgpICsgUHRySGFzaDx2b2lkKj46Omhhc2gobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRy
ZXNzKCkpICsgbV9vZmZzZXQ7CisgICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMuaGFzaCgp
ICsgUHRySGFzaDx2b2lkKj46Omhhc2gobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkp
ICsgbV9vZmZzZXQgKyBtX2luZGlyZWN0T2Zmc2V0OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBS
ZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPiBtX2NhbGxUYXJnZXQ7CiAgICAgUmVnaXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsK
LSAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7CisgICAgcHRyZGlmZl90IG1fb2Zmc2V0IHsgMCB9Owor
ICAgIGludDMyX3QgbV9pbmRpcmVjdE9mZnNldCB7IDAgfTsKIH07CiAKIHN0cnVjdCBTbG93UGF0
aENhbGxLZXlIYXNoIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAppbmRl
eCBkYmZlZDQ0ZDVhMTJhYWRkZDI3NmE5MzMxMzNjMGIzNmM4NjYxM2FkLi5kOTIwMmEzZDQxOWU1
Y2IyYTU5ZTMxZmJlODVhNGFkNTNiZTQ5NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoCiAgICAg
c2F2ZUFsbFJlZ2lzdGVycyhqaXQsIGJ1ZmZlcik7CiAgICAgCiAgICAgLy8gVGVsbCBHQyBtYXJr
IHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNh
bGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1
ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAg
ICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3Jh
dGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NP
ZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJ
bkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKIAogICAgIGppdC5sb2FkUHRyKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5w
ZWVrKApAQCAtMjAwLDEzICsyMDAsMjAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICAg
ICAgY3VycmVudE9mZnNldCArPSBzaXplb2YoZG91YmxlKTsKICAgICB9CiAgICAgCi0gICAgaml0
LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAg
ICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJnR1BSMCwgQXNzZW1ibHlIZWxwZXJzOjpBZGRy
ZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7
CisgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpub25BcmdH
UFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJnR1BSMSwgQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9m
ZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAKLSAgICBy
ZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIGtleS5hcmd1bWVudFJlZ2lzdGVycygpKTsKKyAgICBS
ZWdpc3RlclNldCBkb250Q2xvYmJlciA9IGtleS5hcmd1bWVudFJlZ2lzdGVycygpOworICAgIGlm
ICgha2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgZG9udENsb2JiZXIuc2V0KEdQUkluZm86Om5v
bkFyZ0dQUjApOworICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwgV1RGTW92ZShkb250Q2xv
YmJlcikpOwogCi0gICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVy
YXRpb25QdHJUYWcpOworICAgIEFzc2VtYmx5SGVscGVyczo6Q2FsbCBjYWxsOworICAgIGlmIChr
ZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFn
KTsKKyAgICBlbHNlCisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpub25BcmdHUFIwLCBrZXkuaW5kaXJlY3RPZmZzZXQoKSksIE9wZXJhdGlvblB0clRhZyk7
CiAKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJbmZvOjpub25QcmVz
ZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwpAQCAtMjMyLDcgKzIzOSw4
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1
bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RlRMVGh1bmspOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQo
KSk7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
Y2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIs
IHRvQ1N0cmluZyhrZXkpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCAzNTRmOTU0N2I0YWJmMzI4OTZkMWNlYjRlYTIw
MGZiYjRhNGRlY2NkLi4wODRiMzhlZjgxMjUyNzUzOTdlNmEzOGI1YzYyNzY3NGMwZjM0ZTRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5o
IgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmll
dy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCkBAIC02NTIsNyArNjUzLDcgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAgYXV0byBjYWxsTG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKSVRDb21waWxhdGlvblB0clRhZz4oY2FsbCk7CiAg
ICAgICAgIGxpbmtCdWZmZXIuYWRkTWFpblRocmVhZEZpbmFsaXphdGlvblRhc2soWz0sICZ2bV0g
KCkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sICppbmZvKTsKLSAgICAgICAg
ICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1
YWxUaHVuaywgdm0pKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRT
dHViUm91dGluZTo6Y3JlYXRlKHZtLCB2aXJ0dWFsVGh1bmspKTsKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRodW5rLmNvZGUoKSkpOwogICAgICAgICB9
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4
IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcyZDg5ZTdkODZiZTkuLmU5MDk2YjU3NzNmMzIx
NzMxNjllNzNmYWUzNDExMTg4Njk4OTdlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuaApAQCAtMjA3LDcgKzIwNyw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogCiAgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8g
dHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBpbiByZWdpc3RlciBvbiAzMi1iaXQg
YXJjaGl0ZWN0dXJlcy4KICAgICAvLyBleHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQg
YXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkK
ICAgICAgICAgewpAQCAtMjE5LDggKzIxOSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJ
bnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEs
IHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVk
IGYsIHVuc2lnbmVkIGc+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBi
LCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVu
c2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYs
IHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVj
dGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGlu
YXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwpAQCAtMjMwLDY1ICsyMzAsNzQgQEAgY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBj
cm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOwogICAgICAgICB9CiAK
LSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRp
b24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMg
KyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwg
R1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0
aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAg
ICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAg
ICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0
aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51
bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAx
LCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0
aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAg
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVz
dWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJl
c3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0Fy
ZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc1Nv
dXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmNy
b3NzRGVzdGluYXRpb25zW251bUNyb3NzU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVn
QXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQu
Z3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0
LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzICsgMSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRl
c3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAgIHJlc3Vs
dC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1
bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRk
R1BSQXJnKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlz
KTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkKKyAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQog
Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3Rh
Y2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAg
ICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEs
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBS
UmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAg
cmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2Uo
KQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSArIDE+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAg
ICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCkBAIC0zMzEsMTIgKzM0
MCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25l
ZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSB1bnNp
Z25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5z
aWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tl
KQogICAgIHsKICAgICAgICAgLy8gQ2xhbmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhl
IHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVu
IHRoZXkgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVn
CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BB
cmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAK
KyAgICAgICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQUnMpOworCiAgICAgICAgIGN1cnJlbnRHUFJB
cmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CiAgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBu
dW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1p
dHMiKQpAQCAtMzUwLDE1ICszNjEsMTUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFz
c2VtYmx5SGVscGVycyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNp
Z25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUg
YXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1
bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVu
c2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVu
dCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZz
ZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBwb2tlKGFy
ZywgcG9rZU9mZnNldCk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxp
Z25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1
bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVu
c2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
bm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQg
cG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJy
ZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2Up
OworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJy
ZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHJldHVybiAhKHBva2VP
ZmZzZXQgJiAxKTsKICAgICB9CiAKQEAgLTM3Niw4ICszODcsOCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogCiAgICAg
Ly8gQXZvaWQgTVNWQyBvcHRpbWl6YXRpb24gdGltZSBleHBsb3Npb24gYXNzb2NpYXRlZCB3aXRo
IF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRlbXBsYXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19J
TkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3Rl
cihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAg
ewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAg
ICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVyczsKQEAgLTM5MiwzMSArNDAzLDMxIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdz
Li4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBG
UFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJn
cy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VS
UkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBh
c3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVn
aXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBB
cmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywg
YXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxB
cmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwg
YXJncy4uLik7CiAgICAgfQpAQCAtNDI0LDggKzQzNSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKICNpZiBD
UFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
RlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAg
ICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5U
X1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdz
IHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2OSwyNSArNDgwLDI1IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1
cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRy
YUFyZygpLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIHBhc3Mg
RlAgYXJndW1lbnQgb24gc3RhY2suCi0gICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkp
IHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBp
ZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFy
ZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyku
YWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjpl
bmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0PgotICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50
QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CkBAIC00OTcsMzQgKzUwOCwz
NCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KLSAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBB
cmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5z
aWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
czsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdD
b3VudChHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEg
PT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAx
LCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQ
b2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJz
LCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJn
R1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFk
ZFBva2UoKSwgYXJncy4uLik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICB9IGVs
c2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQ
UkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwotICAgICAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAyKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDIpOwogICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRk
UG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1
ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBw
YXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJl
Z3MuYXJnQ291bnQocGF5bG9hZC5ncHIoKSk7CkBAIC01NDQsOSArNTU1LDkgQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBwb2tlQXJn
dW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5v
bkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6
OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRK
U1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1
ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50
UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VS
ZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIoKSk7CkBAIC01NjksMTEgKzU4MCwxMSBAQCBjbGFzcyBD
Q2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5
cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAg
ICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwg
c3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0
aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBv
ZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5v
dyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVu
dHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVl
cy4KICAgICAgICAgLy8gSWYgd2UgZXZlciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxv
YXRpbmcgcG9pbnQgYXJndW1lbnRzIHdlIHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9n
aWMgZm9yIGJvdGggdHlwZXMsIHdoaWNoIHNvdW5kcwpAQCAtNTkxLDQ2ICs2MDIsNDYgQEAgY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
KTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAg
IEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENV
UlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRl
Z3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENV
UlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVk
SW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAg
ICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxD
VVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50
ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihD
VVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3Rl
ZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BS
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAg
ICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50
ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3Bv
aW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25z
dF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46
OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+
Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJn
cy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3Mu
Li4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4u
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
IEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lm
X3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVy
ZSo+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRT
dHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJn
LmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNjM5LDggKzY1MCw4IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI3VuZGVmIFJFU1VMVF9UWVBFCiAK
ICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2U+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25l
IGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTY1NSwzMSArNjY2
LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICBzZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6
ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByRGVzdGluYXRpb25zKSwg
Y2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnBy
U291cmNlcykpOwogICAgIH0KIAotcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzRW50cnlJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJncy4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgdXNpbmcgRmlyc3RBcmd1bWVudFR5cGUgPSB0eXBlbmFt
ZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+
OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwg
Q2FsbEZyYW1lKj46OnZhbHVlKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8v
IFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVz
cyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdz
KSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNp
bmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAgICAgICAg
ICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5
KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LCBhcmdzLi4uKTsKKyAgICAgICAgfQorICAgIH0KIAotI2RlZmluZSBGSVJTVF9BUkdVTUVOVF9U
WVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1
bWVudFR5cGU8MD4KK3B1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNl
dHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHMoQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAg
ICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdz
IG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdz
KSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlv
bjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJn
cy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFy
Z0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9B
UkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4g
YXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENh
bGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5j
ZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0
aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0g
c2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAg
c2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFy
Z0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CisgICAgICAgIHNl
dHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwg
MCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGZ1bmN0aW9uR1BSLCBHUFJJbmZvOjpub25B
cmdHUFIwKSwgYXJncy4uLik7CiAgICAgfQogCi0jdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJl
c3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNF
bnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwPigpLnB1c2hOb25BcmcoYWRkcmVzcy5iYXNlLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJn
cy4uLik7CisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJS
ZWcgZGVzdEIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3
YXJlSklUU3R1YlJvdXRpbmUuY3BwCmluZGV4IGY3YWEzMjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIz
YjRhYWVhMDVkYjYuLmVmZTI3YjFkMTc3YWQ2ZTJlMjgyZWE3YTc4ZmVmODkzYjBhODk1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJB
Y2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9u
RGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTM4LDE4ICszOSwyMiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Ci0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVk0mIHZtKQorR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29k
ZSkKICAgICA6IEpJVFN0dWJSb3V0aW5lKGNvZGUpCiB7Ci0gICAgdm0uaGVhcC5tX2ppdFN0dWJS
b3V0aW5lcy0+YWRkKHRoaXMpOwogfQogCiBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6On5HQ0F3YXJl
SklUU3R1YlJvdXRpbmUoKSB7IH0KIAordm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1ha2VH
Q0F3YXJlKFZNJiB2bSkKK3sKKyAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRpbmVzLT5hZGQodGhp
cyk7CisgICAgbV9pc0dDQXdhcmUgPSB0cnVlOworfQorCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91
dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB7Ci0gICAgaWYgKG1faXNKZXR0aXNvbmVkKSB7
CisgICAgaWYgKG1faXNKZXR0aXNvbmVkIHx8ICFtX2lzR0NBd2FyZSkgewogICAgICAgICAvLyBU
aGlzIGNhc2UgaXMgbmVlZGVkIGZvciB3aGVuIHRoZSBzeXN0ZW0gc2h1dHMgZG93bi4gSXQgbWF5
IGJlIHRoYXQKICAgICAgICAgLy8gdGhlIEpJVCBzdHViIHJvdXRpbmUgc2V0IGdldHMgZGVsZXRl
ZCBiZWZvcmUgd2UgZ2V0IGFyb3VuZCB0byBkZWxldGluZwogICAgICAgICAvLyB0aGlzIGd1eS4g
SW4gdGhhdCBjYXNlIHRoZSBHQyBpbmZvcm1zIHVzIHRoYXQgd2UncmUgamV0dGlzb25lZCBhbHJl
YWR5CkBAIC03NCwxMCArNzksMzUgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmRlbGV0
ZUZyb21HQygpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK0FjY2Vzc0Nhc2VKSVRTdHViUm91dGlu
ZTo6QWNjZXNzQ2FzZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtSZWZlcmVu
Y2VzKQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQor
ICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCisgICAgLCBtX3dlYWtSZWZlcmVuY2VzKFdURk1v
dmUod2Vha1JlZmVyZW5jZXMpKQoreworfQorCit2b2lkIEFjY2Vzc0Nhc2VKSVRTdHViUm91dGlu
ZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCit7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRKSVRTdHVi
cykKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7CisgICAgQmFz
ZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCit1bnNpZ25lZCBBY2Nlc3NDYXNlSklUU3R1
YlJvdXRpbmU6OmNvbXB1dGVIYXNoKGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNl
Pj4mIGtleXMsIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYgd2Vha1JlZmVyZW5jZXMp
Cit7CisgICAgSGFzaGVyIGhhc2hlcjsKKyAgICBmb3IgKGF1dG8mIGtleSA6IGtleXMpCisgICAg
ICAgIFdURjo6YWRkKGhhc2hlciwga2V5LT5oYXNoKCkpOworICAgIGZvciAoYXV0byYgc3RydWN0
dXJlSUQgOiB3ZWFrUmVmZXJlbmNlcykKKyAgICAgICAgV1RGOjphZGQoaGFzaGVyLCBzdHJ1Y3R1
cmVJRCk7CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKIE1hcmtpbmdHQ0F3YXJlSklU
U3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBj
b25zdCBKU0NlbGwqIG93bmVyLAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vz
c0Nhc2U+PiYmIGtleXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtSZWZlcmVuY2Vz
LCBjb25zdCBKU0NlbGwqIG93bmVyLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMs
IEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcykKLSAgICA6IEdDQXdhcmVKSVRTdHVi
Um91dGluZShjb2RlLCB2bSkKKyAgICA6IEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZShjb2RlLCB2
bSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcykpCiAgICAgLCBtX2NlbGxz
KGNlbGxzLnNpemUoKSkKICAgICAsIG1fY2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5m
b3MpKQogewpAQCAtMTA2LDkgKzEzNiw5IEBAIHZvaWQgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91
dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAK
IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1
YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sICBjb25zdCBKU0NlbGwq
IG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYm
IGNhbGxMaW5rSW5mb3MsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4+JiYga2V5cywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1JlZmVyZW5jZXMsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxs
TGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4
Y2VwdGlvbkhhbmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGVy
Q2FsbFNpdGVJbmRleCkKLSAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwg
dm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKKyAgICA6IE1hcmtpbmdH
Q0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vh
a1JlZmVyZW5jZXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiAgICAg
LCBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgbV9jb2RlT3JpZ2luUG9vbCgmbV9j
b2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlci0+Y29kZU9yaWdpbnMoKSkKQEAgLTE1Miw4ICsx
ODIsMTAgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6
b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB9CiAKIAotUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVK
SVRTdHViUm91dGluZSgKK1JlZjxBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlDSklU
U3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiYgY29kZSwKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYg
a2V5cywKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcywKICAg
ICBWTSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBib29sIG1ha2VzQ2FsbHMs
CkBAIC0xNjUsMTggKzE5NywyNSBAQCBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKAogICAgIGlmICghbWFrZXNDYWxscykgewogICAgICAgICAvLyBBbGxvY2F0aW5nIENh
bGxMaW5rSW5mb3MgbWVhbnMgd2Ugc2hvdWxkIGhhdmUgY2FsbHMuCiAgICAgICAgIEFTU0VSVChj
YWxsTGlua0luZm9zLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpJ
VFN0dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNz
Q2FzZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtS
ZWZlcmVuY2VzKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoY29kZUJsb2NrRm9yRXhjZXB0aW9u
SGFuZGxlcnMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkpKTsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXIoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29k
ZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4
KSk7CisgICAgICAgIGF1dG8gc3R1YiA9IGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0sIFdURk1vdmUoa2V5cyksIFdURk1vdmUo
d2Vha1JlZmVyZW5jZXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNv
ZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRl
eCkpOworICAgICAgICBzdHViLT5tYWtlR0NBd2FyZSh2bSk7CisgICAgICAgIHJldHVybiBzdHVi
OwogICAgIH0KIAotICAgIGlmIChjZWxscy5pc0VtcHR5KCkgJiYgY2FsbExpbmtJbmZvcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZShjb2Rl
LCB2bSk7CisgICAgaWYgKGNlbGxzLmlzRW1wdHkoKSAmJiBjYWxsTGlua0luZm9zLmlzRW1wdHko
KSkgeworICAgICAgICBhdXRvIHN0dWIgPSBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2VKSVRTdHVi
Um91dGluZShjb2RlLCB2bSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrUmVmZXJlbmNlcykp
KTsKKyAgICAgICAgc3R1Yi0+bWFrZUdDQXdhcmUodm0pOworICAgICAgICByZXR1cm4gc3R1YjsK
KyAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRT
dHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3Mp
KSk7CisgICAgYXV0byBzdHViID0gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtSZWZlcmVuY2VzKSwg
b3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7CisgICAgc3R1Yi0+bWFrZUdD
QXdhcmUodm0pOworICAgIHJldHVybiBzdHViOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmlu
ZGV4IDQ4YmVmYmM0ODdmY2EyNTcwYzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQuLjdmNzU2ODBiYWQy
MjkyZWViYzY2MGQ4MjZjZGUzOWI3Zjk1NjlmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOCw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBERkcgewogY2xhc3MgQ29kZU9yaWdpblBvb2w7CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CiBj
bGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIApAQCAtNTQsMTIg
KzU2LDE0IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5v
dCBnZXQgcmVjbGFpbWVkIGFsbCBhdCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGlu
ZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
LCBWTSYpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+Jik7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGlu
ZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZN
JiB2bSkKKyAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoVk0mIHZtLCBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtKSk7CisgICAgICAgIGF1dG8gc3R1YiA9IGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgc3R1Yi0+bWFrZUdDQXdhcmUodm0pOworICAgICAg
ICByZXR1cm4gc3R1YjsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpA
QCAtNjksNiArNzMsOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklU
U3R1YlJvdXRpbmUgewogICAgIH0KICAgICAKICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOworCisg
ICAgdm9pZCBtYWtlR0NBd2FyZShWTSYpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZvaWQgb2Jz
ZXJ2ZVplcm9SZWZDb3VudCgpIG92ZXJyaWRlOwpAQCAtODEsMTQgKzg3LDQ0IEBAIGNsYXNzIEdD
QXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAKICAgICBib29s
IG1fbWF5QmVFeGVjdXRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9pc0dDQXdhcmUgeyBmYWxzZSB9OworfTsKKworY2xhc3MgQWNj
ZXNzQ2FzZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEdDQXdhcmVKSVRTdHViUm91dGluZTsKKworICAgIEFj
Y2Vzc0Nhc2VKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYs
IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmKTsKKworICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mIGtleXMoKSBjb25zdCB7IHJldHVybiBtX2tleXM7IH0KKyAgICBj
b25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mIHdlYWtSZWZlcmVuY2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWFrUmVmZXJlbmNlczsgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIW1faGFzaCkKKyAgICAgICAgICAgIG1faGFzaCA9IGNvbXB1dGVI
YXNoKG1fa2V5cywgbV93ZWFrUmVmZXJlbmNlcyk7CisgICAgICAgIHJldHVybiBtX2hhc2g7Cisg
ICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IEZpeGVkVmVjdG9y
PFJlZlB0cjxBY2Nlc3NDYXNlPj4mLCBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mKTsK
KworcHJvdGVjdGVkOgorICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIG92ZXJyaWRlOwor
Citwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4gbV9rZXlzOworICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiBtX3dlYWtSZWZlcmVu
Y2VzOwogfTsKIAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gbWFyayBvbmUgYWRkaXRpb25h
bCBvYmplY3QgZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgogLy8gcm91dGluZSBpcyBrbm93biB0byBi
ZSBleGVjdXRpbmcuCi1jbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGlj
IEdDQXdhcmVKSVRTdHViUm91dGluZSB7CitjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lIDogcHVibGljIEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZTsKKwogICAgIE1hcmtpbmdHQ0F3YXJl
SklUU3R1YlJvdXRpbmUoCi0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3Rv
cjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYm
KTsKICAgICB+TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogICAgIAog
cHJvdGVjdGVkOgpAQCAtMTA3LDkgKzE0Myw5IEBAIGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIC8vIGZvciBuZXcgZXhj
ZXB0aW9uIGhhbmRsZXJzIHRvIHVzZSB0aGUgc2FtZSBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleC4K
IGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDog
cHVibGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogcHVibGljOgotICAgIHR5cGVk
ZWYgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIEJhc2U7CisgICAgdXNpbmcgQmFzZSA9IE1hcmtpbmdH
Q0F3YXJlSklUU3R1YlJvdXRpbmU7CiAKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhj
ZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4m
LCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRl
eCk7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRW
ZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiwg
Y29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5r
SW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOwogICAgIH5HQ0F3
YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigpIGZpbmFsOwogCiAgICAgdm9p
ZCBhYm91dFRvRGllKCkgZmluYWw7CkBAIC0xMjksOSArMTY1LDEwIEBAIGNsYXNzIEdDQXdhcmVK
SVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdH
Q0F3YXJlSklUCiAvLyBhcHByb3ByaWF0ZS4gR2VuZXJhbGx5IHlvdSBvbmx5IG5lZWQgdG8gcGFz
cyBwb2ludGVycyB0aGF0IHdpbGwgYmUgdXNlZAogLy8gYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgdG8g
QysrIG9yIEpTLgogLy8gCi0vLyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0
aW5lKAorLy8gUmVmPEFjY2Vzc0Nhc2VKSVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91
dGluZSgKIC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4mIGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4+JiYga2V5cywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBib29s
IG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQyLDggKzE3OSw4IEBAIGNsYXNzIEdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtp
bmdHQ0F3YXJlSklUCiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQgdXAg
d2l0aCBtb3JlIGNvZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1SZWY8SklUU3R1YlJv
dXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJv
b2wgbWFrZXNDYWxscywKK1JlZjxBY2Nlc3NDYXNlSklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlDSklU
U3R1YlJvdXRpbmUoCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBrZXlzLCBGaXhl
ZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrUmVmZXJlbmNlcywgVk0mLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFn
PENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
Rm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhh
bmRsaW5nQ2FsbFNpdGVJbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5k
ZXggOGY0NWIzNzdjMTY5NmE1MTZhODQzMDBiODkyMWY2YWRkNmEzZDRkZC4uMDY3YWJmZjFkNmFk
MjAwNzU0NTE4MDA3N2IwYzRhNTVjNzc3MjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgKQEAgLTQ2MCw2ICs0NjAsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwog
I2VuZGlmCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lz
dGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVh
eDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIg
PSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OnIxMDsg
Ly8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBAIC02NTIsNiArNjUzLDcgQEAgY2xhc3MgR1BS
SW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI2ID0gQVJNNjRS
ZWdpc3RlcnM6Ong2OyAvLyByZWdUNgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3Vt
ZW50R1BSNyA9IEFSTTY0UmVnaXN0ZXJzOjp4NzsgLy8gcmVnVDcKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25BcmdHUFIwID0gQVJNNjRSZWdpc3RlcnM6Ong4OyAvLyByZWdUOAorICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7
IC8vIHJlZ1Q5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBB
Uk02NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IEFSTTY0UmVnaXN0
ZXJzOjp4MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlZTFhNGUzN2ZmYzI3N2Rj
ZDk2ZDRiMDIyYjc3MjdjNWJiZjc0MjNkLi45YjgyM2VjODQyM2EyZWYzZmNlOWIzYjMwYTAwYjYz
MTNjMzY5MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC05MzEsMTIgKzkzMSwx
MiBAQCB2b2lkIEpJVDo6bGluaygpCiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBieVZhbENv
bXBpbGF0aW9uSW5mbyA6IG1fYnlWYWxDb21waWxhdGlvbkluZm8pIHsKICAgICAgICAgICAgIFBh
dGNoYWJsZUp1bXAgcGF0Y2hhYmxlTm90SW5kZXhKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8u
bm90SW5kZXhKdW1wOwotICAgICAgICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRp
b25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICAgICAgICAgIGlmIChKdW1wKHBh
dGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1
bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0
aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7CiAKICAgICAg
ICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0
aW9uSW5mby5iYWRUeXBlSnVtcDsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2RlTG9jYXRp
b25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgICAgICAgICAgaWYgKEp1
bXAocGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgYmFkVHlw
ZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1
bXApKTsKIApAQCAtOTQ1LDE0ICs5NDUsMTkgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICAg
ICAgYXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJU
YWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxh
dGlvbkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKIAogICAgICAgICAgICAgYnlWYWxDb21waWxhdGlv
bkluZm8uYnlWYWxJbmZvLT5zZXRVcCgKLSAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAsCi0g
ICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAsCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFu
ZGxlciwKICAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheU1vZGUsCiAg
ICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlQcm9maWxlLAogICAgICAg
ICAgICAgICAgIGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhUYXJnZXQs
CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOworICAgICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgICAg
IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBz
bG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJn
ZXQgPSBzbG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8u
YnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKKyAgICAgICAgICAgICAg
ICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAgPSBiYWRUeXBl
SnVtcDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggNzVjOWNiOTZiMTM2NTMyZjA4NjFmMmYwYTgwNThlZmM2YjA1NmIyNC4uOWYz
MTY1ZDU1YjhiZGZkZjEwMmJmYWY4YWQxMzhlNjgxYWFkY2Y2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC0yOTQsNiArMjk0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgYXBwZW5kQ2Fs
bChBZGRyZXNzIGZ1bmN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsKGZ1bmN0aW9u
LCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUo
WDg2XzY0KQogICAgICAgICBDYWxsIGFwcGVuZENhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBlKGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAgICAgIHsKQEAg
LTM5NSwzOSArNDAwLDM5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBQcm9wZXJ0eSBp
cyBpbnQtY2hlY2tlZCBhbmQgemVybyBleHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuCiAg
ICAgICAgIC8vIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLiBSZXR1cm5zIHRoZSBzbG93
IGNhc2VzLiBGYWxsLXRocm91Z2gKICAgICAgICAgLy8gY2FzZSBjb250YWlucyByZXN1bHQgaW4g
cmVnVDAsIGFuZCBpdCBpcyBub3QgeWV0IHByb2ZpbGVkLgotICAgICAgICBKdW1wTGlzdCBlbWl0
SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSkgeyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBl
LCBJbnQzMlNoYXBlKTsgfQotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBl
bWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7Ci0gICAg
ICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlN
b2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KSB7IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFs
SW5mbywgSW50MzJTaGFwZSk7IH0KKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKKyAg
ICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hh
cGUgPSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdl
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byopOworICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVj
dGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7
CiAKICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW4gcmVnVDEsIGJhc2UgaXMgaW4gcmVnVDAuIHJl
Z1QyIGNvbnRhaW5zIGluZGVjaW5nIHR5cGUuCiAgICAgICAgIC8vIFRoZSB2YWx1ZSB0byBzdG9y
ZSBpcyBub3QgeWV0IGxvYWRlZC4gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kCiAgICAgICAg
IC8vIHplcm8tZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLiBTdHJ1Y3R1cmUgaXMgYWxy
ZWFkeSBwcm9maWxlZC4KICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2xvdyBjYXNlcy4KICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlz
dCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
QnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJTaGFwZSk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbywgSW50MzJTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3Qg
ZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRH
ZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNv
ZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbywgRG91YmxlU2hhcGUpOwogICAgICAgICB9CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1w
TGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3As
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29u
dGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0
QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIEluZGV4aW5nVHlw
ZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRB
cnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7
CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQ
dXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAg
ICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKIAogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOwpAQCAtODcw
LDEzICs4NzUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2soQWRkcmVzcyk7CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0Fu
ZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsK
ICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
Pik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4s
IFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1
bHQpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1
bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBN
ZXRhZGF0YT4KKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNW
YWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVy
IHJlc3VsdCk7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9u
VHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpDYWxsPgpA
QCAtODg2LDYgKzg5NSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9u
VHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNhbGxPcGVy
YXRpb24oQWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJn
cykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzKEdQUkluZm86
Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAgICB9CisKICNpZiBP
UyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
PgogICAgICAgICBzdHJ1Y3QgaXM2NEJpdFR5cGUgewpAQCAtOTA2LDYgKzkyMywxNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhvcGVyYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9uKTsKICAgICAgICAgfQor
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgICAgIHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBh
cmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2Fs
bDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgLy8geDY0IFdp
bmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxh
cmdlciB0aGFuIDY0IGJpdHMuCisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBl
PHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFs
dWUpCisgICAgICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhS
ZXR1cm5UeXBlKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOwor
ICAgICAgICB9CiAjZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgb3BlcmF0
aW9uLCBBcmdzLi4uIGFyZ3MpCkBAIC05MTMsNiArOTQxLDEzIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHM8T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7CiAgICAg
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
ICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0
LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9y
SW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAg
ICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYg
Q1BVKFg4Nl82NCkKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KQEAgLTkyMyw2ICs5NTgsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6
ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9p
ZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwg
QWRkcmVzcyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAg
ICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0
aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBB
ZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAg
ICAgICB9CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldp
dGhSZXN1bHQoT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Ms
IEFyZ3MuLi4gYXJncykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAKaW5kZXggMWI0OWQ0ODlkYWEyYjc4NmFiNzkzOTJmOWEzNGViYzY0NGNkYWIxOC4uMzc0YmEz
MGM3Zjc2NzEzNzk0NzBlNGRkOWQ0ZGE4MzY1ZGEzNjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCkBAIC0zOTgsOCArMzk4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDAp
LCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRC
eUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMiw4ICs0MzIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0MKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJhdG9y
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlk
ZW50KS5yYXdCaXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
ICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86
Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJhdG9yR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQor
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
cmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKKwogICAgIGF1dG8gZG9uZSA9IGp1bXAoKTsKIAogICAgIG5vdE9iamVj
dC5saW5rKHRoaXMpOwpAQCAtNDgwLDggKzQ4Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBSZWdpc3Rl
clNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpOwogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh2YWx1ZUdQUik7CiAgICAgICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMt
PmRvbmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRv
bmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZl
ZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVn
cyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHJlZ1QzLCBBY2Nlc3NUeXBl
OjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFw
cGVuZChnZW4pOwpAQCAtNDk5LDggKzUwNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBKdW1wTGlzdCBp
dGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiks
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdz
KHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCByZWdUNCwgQWNjZXNzVHlwZTo6R2V0
QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQo
Z2VuKTsKQEAgLTUyOCwxNiArNTM1LDIzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAg
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsK
ICAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikp
OwotICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRH
UFIpKTsKIAogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5
TmFtZXMtPmRvbmUuaW1wbCgpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwogICAgICAgICAKICAgICAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAg
ICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7
CiAKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwg
ZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2Vu
LnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOwogICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9I
b3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CkBAIC01NTYsOCArNTcwLDEzIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDCiAKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAK
LSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Ci0KKyAgICAgICAgQ2FsbCBjYWxsOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Cisg
ICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5m
bygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHZhbHVlVlJlZywgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBp
dGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVu
dGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBjYWxsKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAppbmRleCBlY2M0ZTVmM2ZmNmQwN2Y5OWMwNzg0ZGQ0YzEyZGViYTBlMjEwZGNmLi4x
NTI1MTRhZmRjYWM3ODJhYzljODc0ZTU1MGFmZmI5YzcyOGJlYTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0zOTYsMTIgKzM5NiwxNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywK
KyAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwKICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksCiAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0
ZXJhdG9yR1BSLCBwYXlsb2FkSXRlcmF0b3JHUFIpLAogICAgICAgICBuZXh0UmVncywKKyAgICAg
ICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtNTA1LDEyICs1MDcsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24pCiAgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHBheWxvYWRWYWx1ZUdQUik7CiAgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAg
ICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgICAgIHByZXNlcnZlZFJlZ3MsCiAg
ICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlm
aWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAg
ICAgZG9uZVJlZ3MsCisgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNj
ZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTUzMywxMiArNTM3
LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogCiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAg
ICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxT
aXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAg
ICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
dGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgcmVz
dWx0UmVncywKKyAgICAgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuaAppbmRleCA0Y2U3N2Y1YjBjZTg5OTUwYWZjMWU1MmY0MzU2NTE0NTY1MWM3Yjk4
Li4xNWMxZDdlMDk4OGQ4M2UxNDBkNDMxOWY0NjIzNDEwODgyYjViZjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaApAQCAtNTIsMTMgKzUyLDE1IEBAIGNsYXNzIFRyYWNrZWRSZWZl
cmVuY2VzOwogY2xhc3MgVk07CiAKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3QgewotICAg
IE5vbmUsCi0gICAgSG9zdENhbGxUaHVuaywKLSAgICBJbnRlcnByZXRlclRodW5rLAotICAgIEJh
c2VsaW5lSklULAotICAgIERGR0pJVCwKLSAgICBGVExKSVQKKyAgICBOb25lID0gMGIwMDAsCisg
ICAgSG9zdENhbGxUaHVuayA9IDBiMDAxLAorICAgIEludGVycHJldGVyVGh1bmsgPSAwYjAxMCwK
KyAgICBCYXNlbGluZUpJVCA9IDBiMDExLAorICAgIERGR0pJVCA9IDBiMTAwLAorICAgIEZUTEpJ
VCA9IDBiMTAxLAogfTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd2lkdGhPZkpJVFR5cGUg
PSAzOworc3RhdGljX2Fzc2VydChXVEY6OmdldE1TQlNldENvbnN0ZXhwcihzdGF0aWNfY2FzdDxz
dGQ6OnVuZGVybHlpbmdfdHlwZV90PEpJVFR5cGU+PihKSVRUeXBlOjpGVExKSVQpKSArIDEgPT0g
d2lkdGhPZkpJVFR5cGUpOwogCiBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEpJVENvZGU+IHsKIHB1YmxpYzoKQEAgLTE1Niw2ICsxNTgsMTUgQEAgY2xhc3MgSklU
Q29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7CiAgICAgICAgIHJl
dHVybiBqaXRUeXBlID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBK
SVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCB1c2VTaGFyZWRJ
QyhKSVRUeXBlIGppdFR5cGUpCisgICAgeworICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVNoYXJl
ZElDKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm4gT3B0aW9uczo6dXNlU2hhcmVkSUNJbk9wdGltaXppbmdKSVQoKTsKKyAgICB9CisK
ICAgICB2aXJ0dWFsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmUoKSBjb25zdCB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgCiAgICAgZW51bSBjbGFzcyBTaGFyZUF0dHJpYnV0ZSA6
IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBmNTJjM2M3NjIxNWFhMzI2ZGRlOWY4OTg1NjI5OGMz
ZGU2NDYyMmNlLi4yZmU4YjliOGUzMWM4YmRiYTM3MTQyYTZmNjA4Nzg0YmRiNDNmZGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcApAQCAtNDMsOSArNDMsMTAgQEAgc3RhdGljIFN0cnVjdHVyZVN0dWJJbmZvKiBnYXJi
YWdlU3R1YkluZm8oKQogfQogCiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAorICAg
IENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAogICAg
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKQogICAgIDogbV9jb2RlQmxvY2soY29k
ZUJsb2NrKQorICAgICwgbV9qaXRUeXBlKGppdFR5cGUpCiB7CiAgICAgbV9zdHViSW5mbyA9IG1f
Y29kZUJsb2NrID8gbV9jb2RlQmxvY2stPmFkZFN0dWJJbmZvKGFjY2Vzc1R5cGUsIGNvZGVPcmln
aW4pIDogZ2FyYmFnZVN0dWJJbmZvKCk7CiAgICAgbV9zdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9
IGNhbGxTaXRlOwpAQCAtNjAsMjAgKzYxLDIyIEBAIHZvaWQgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3I6OmZpbmFsaXplKAogCiAgICAgbV9zdHViSW5mby0+ZG9uZUxvY2F0aW9uID0gZmFzdFBhdGgu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX2RvbmUpOwogCi0gICAgbV9zdHViSW5mby0+
c2xvd1BhdGhDYWxsTG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJU
YWc+KG1fc2xvd1BhdGhDYWxsKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKG1faml0
VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fc2xvd1BhdGhDYWxsTG9jYXRpb24gPSBzbG93
UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsKICAgICBt
X3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pOwogfQogCiBKSVRCeUlkR2VuZXJh
dG9yOjpKSVRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihj
b2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJz
KQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
YWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV92
YWx1ZSh2YWx1ZSkKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BS
KCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAg
bV9zdHViSW5mby0+cmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBtX3N0dWJJbmZv
LT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZv
LT52YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwpAQCAtODMsMTMgKzg2LDE1IEBAIEpJVEJ5
SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6
ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewot
ICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
OjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlv
bk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25P
ZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0
dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIHZvaWQgSklUQnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJ
Q1NpemUpCiB7CisgICAgLy8gV2UgZ2VuZXJhdGUgdGhlIHNhbWUgY29kZSByZWdhcmRsZXNzIG9m
IHdoZXRoZXIgU2hhcmVkSUMgaXMgZW5hYmxlZCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgdG8gdXNl
IElubGluZUFjY2VzcworICAgIC8vIGZvciB0aGUgcGVyZm9ybWFuY2UgcmVhc29uLgogICAgIG1f
c3RhcnQgPSBqaXQubGFiZWwoKTsKICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1i
bGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQuanVtcCgp
OwpAQCAtMTAxLDkgKzEwNiw5IEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1NpCiB9CiAKIEpJVEdl
dEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBl
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwg
dmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICwgbV9pc0xlbmd0aEFjY2Vzcyhwcm9wZXJ0eU5hbWUu
dWlkKCkgPT0gY29kZUJsb2NrLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBsKCkpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BSKCkp
OwpAQCAtMTE1LDkgKzEyMCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3Mp
Ci0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUp
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5mb0dQ
UikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBi
YXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodGhpc1JlZ3Mu
cGF5bG9hZEdQUigpICE9IHRoaXNSZWdzLnRhZ0dQUigpKTsKIApAQCAtMTMzLDEwICsxMzgsMTAg
QEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
CisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5m
b0dQUiwgR1BSUmVnIHNjcmF0Y2gsIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1
dEtpbmQpCi0gICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQor
ICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwg
c3R1YkluZm9HUFIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBt
X3B1dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3MSwxNCArMTc2LDE1IEBAIFZfSklUT3BlcmF0aW9u
X0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK0pJVERl
bEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJl
ZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0
VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWws
IHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVy
ID0gZmFsc2U7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2Fk
R1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwog
ICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1f
c3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMTkxLDI2ICsxOTcsMzAg
QEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0
LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAg
IGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRy
KCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1Bh
dGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsK
IH0KIAotdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeVZhbEdlbmVy
YXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRo
KQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFz
ZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRp
b25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXpl
KGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhtX2ppdFR5cGUp
KQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0
YXJ0TG9jYXRpb247CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0
b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBH
UFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlJ
ZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
VHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVn
aXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7
CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwog
ICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJ
bmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0dWJJbmZvLT52
YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJh
c2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFn
R1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTIyMywyMiArMjMzLDI1IEBAIEpJVERlbEJ5SWRHZW5l
cmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yCiB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VT
aGFyZWRJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAg
ICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNo
YWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxC
eUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1
ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9z
bG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAg
ICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5m
by0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCiBK
SVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAg
OiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vz
c1R5cGU6OkluLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENh
Y2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwg
dXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIC8vIEZJWE1F
OiBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4K
ICAgICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI1MSwxNSArMjY0LDE1IEBAIHZv
aWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBq
aXQpCiB9CiAKIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3Io
Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4LAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3Rv
dHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNj
cmF0Y2gyLCBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QpCi0gICAgOiBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQorICAgIDogSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1
YkluZm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3Vs
dDsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3RvdHlwZTsKKyAgICBt
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBt
X3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0yNzksMjEgKzI5Miwy
NCBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAogCiB2
b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImIGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fc3Rh
cnQgPSBqaXQubGFiZWwoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBl
KSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHVi
SW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0g
ZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAg
bV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6
ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewot
ICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgs
IHNsb3dQYXRoLAotICAgICAgICBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX2p1bXApKTsKLSAgICAKLSAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNs
b3dQYXRoLmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIEJhc2U6
OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHVi
Um91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyht
X2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5z
bG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRC
eVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywg
Y29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKK0pJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVz
ZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fcmVzdWx0KHJlc3VsdCkK
IHsKQEAgLTMwMiw2ICszMTgsNyBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxH
ZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQogICAgIG1fc3R1
YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdz
LnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZh
bHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZv
LT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQ
UiA9IHJlc3VsdC50YWdHUFIoKTsKQEAgLTMxMiwyMCArMzI5LDIzIEBAIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9y
aWdpbiBjb2RlCiB2b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAg
ICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRj
aGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklUR2V0
QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5r
QnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExp
bmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQo
bV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgs
IHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0
YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5s
b2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZVNoYXJlZElDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0
ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCkKLSAgICA6IEJh
c2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2Vk
UmVnaXN0ZXJzKQorSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAg
OiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNj
ZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nl
c3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCB8fCBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OlNl
dFByaXZhdGVCcmFuZCk7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0g
ZmFsc2U7CkBAIC0zMzMsNiArMzUzLDcgQEAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
OjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmwKICAgICBt
X3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
cmVncy5icmFuZEdQUiA9IGJyYW5kLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1
ZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0
dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+di5icmFuZFRhZ0dQUiA9IGJy
YW5kLnRhZ0dQUigpOwpAQCAtMzQzLDE2ICszNjQsMTkgQEAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2Rl
QmwKIHZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAg
IG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOwor
ICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJv
dXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5w
YXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBm
YXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNs
b3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFs
aXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0
aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1f
c3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMobV9qaXRUeXBlKSkKKyAgICAg
ICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0
aW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBkNmNhNmUxNmEzZjMyYzY0
MGY5NmNiMjU1MTk1NTQ4YjBmMmViNjUxLi5iNjkwODc4NTc2NDM4ZDk3ZDk5NDMwYWM2M2Q5MTdi
YzJlYzkzZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCkBAIC00MSwxMiArNDEsMTIgQEAgY2xhc3MgQ29kZUJsb2NrOwog
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhf
dDsKK2VudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsg
fQotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycyk7CisgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoQ29kZUJsb2NrKiwgSklU
VHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOwogICAgIAogcHVibGljOgogICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc3R1YkluZm87IH0KQEAgLTY1LDYgKzY1
LDcgQEAgY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIAogcHJvdGVjdGVkOgog
ICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgSklUVHlwZSBtX2ppdFR5cGU7CiAgICAg
U3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbV9kb25lOwpAQCAtNzcsOCArNzgsOCBAQCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVi
bGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRCeUlkR2VuZXJhdG9yKCkgeyB9
CiAKICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKIHB1
YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdApAQCAt
MTAxLDEzICsxMDIsMTMgQEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbV9zbG93UGF0aEp1
bXA7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5l
cmF0b3IgeworY2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxl
SWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEFjY2Vzc1R5cGUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxl
SWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAKQEAgLTExNSwyNiArMTE2LDI2IEBAIGNsYXNz
IEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgYm9v
bCBtX2lzTGVuZ3RoQWNjZXNzOwogfTsKIAotY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAg
IEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmll
ciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHRoaXNSZWdzKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJs
ZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQg
Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUUHV0QnlJ
ZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3Ry
aWN0KCkpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7
CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBK
U1ZhbHVlUmVncyBiYXNlLAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZv
aWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDE0ICsx
NDYsMTQgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJh
dG9yIHsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKLWNsYXNzIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVERlbEJ5
VmFsR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAotICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAg
ICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BS
LCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdAogICAgIHsKQEAgLTE3MCwxNCArMTcxLDE0IEBAIGNsYXNzIEpJVERlbEJ5VmFs
R2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNyb0Fz
c2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVERl
bEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3Mg
SklURGVsQnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgog
ICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3Io
Ci0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAg
ICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0
aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTE5NSw0MiArMTk2LDUwIEBAIGNsYXNzIEpJVERlbEJ5
SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklU
SW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUSW5C
eUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgog
ICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBK
SVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CiAKLWNsYXNzIEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklU
SW5zdGFuY2VPZkdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiBwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwog
ICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoKSB7IH0KICAgICAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKLSAgICAg
ICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJl
ZyBzY3JhdGNoMiwKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1
bHQsCisgICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwKICAgICAgICAgYm9vbCBw
cm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2UpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xv
d1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5t
X2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7Cisg
ICAgfQorCiAgICAgdm9pZCBmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIs
IExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CiAKIHByaXZhdGU6Ci0gICAgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9qdW1wOworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhK
dW1wOwogfTsKIAotY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigpIHsgfQog
CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTI1MSwxNCArMjYw
LDE0IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRo
SnVtcDsKIH07CiAKLWNsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6IHB1Ymxp
YyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVz
aW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCmluZGV4IGU3OWNkMzZlZjU3ZDdiZGNlY2UxNzY4ZDA1ODhhZmVlZDg4
ODUwMTUuLjI4YTY0MzM3ZTJmMDhmNWYyMGFkYTczN2JiNzZiY2I0NzM2MjI4ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0zMywxNyArMzMsMTcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJ
VDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0FM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJh
eU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2Rl
IGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAg
ICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAg
ICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5
VmFsSW5mbyk7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHJldHVybiBlbWl0RG91Ymxl
TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdERv
dWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNh
c2UgSklUQ29udGlndW91czoKLSAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNM
b2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJ
VEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJl
bnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdl
TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI4LDYgKzEyOCwxMyBAQCBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhjb25zdCBGdW5jdAogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCit7Cisg
ICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAg
ZXhjZXB0aW9uQ2hlY2soKTsKK30KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGZ1bmN0aW9uKQogewpAQCAtMTU3LDYgKzE2NCwxNiBAQCBBTFdBWVNfSU5MSU5F
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzIGZ1
bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAgZW1pdFN0b3JlKGRz
dCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgTWV0YWRhdGE+CiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJv
ZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCiB7CkBAIC0xNzEsNiArMTg4LDE5IEBA
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIE1ldGFkYXRhPgorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0
YWRhdGEsIEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgSlNWYWx1ZVJlZ3MocmV0dXJuVmFs
dWVHUFIyLCByZXR1cm5WYWx1ZUdQUikpOworICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVl
R1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+
aXNLbm93bkNlbGwocmVnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CmluZGV4IGJkNTVhM2QwNTE2ZDQ2YjY3YWU1OTdiNmMzYTRmNTg3YjVmZGQ3MzAuLjQ1YTA3NTFj
OTZjNmEyYWNlOGI2NGZmMDRmMzQ5MDNjZGQxZjc2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTY0LDEzICsxNjQsMTggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAgSklUSW5z
dGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0
CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAg
ICAgcmVnVDUsCiAgICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5zdGFuY2VPZnMu
YXBwZW5kKGdlbik7CiAgICAgCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwpAQCAt
MTg2LDcgKzE5MSwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3ImIGdlbiA9IG1faW5zdGFuY2VPZnNbbV9pbnN0YW5jZU9mSW5kZXgrK107CiAg
ICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgQ2FsbCBjYWxsID0g
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IHJlZ1QyLCByZWdUMSk7CisKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOworICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1p
emUpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIHJlZ1QxKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFu
Y2VPZk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVnVDEpOwogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTE3MTksNyArMTcz
MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMg
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAg
SnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0
aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRM
b2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBu
dWxscHRyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHRydWUpKSksIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTE3MzQsOCAr
MTc0NiwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywg
cGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFz
X2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmlu
ZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwog
ICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
Q2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2Rl
KCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0lu
ZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlv
bkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFk
ZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgfQogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xNzY5LDExICsxNzg2LDEyIEBAIHZvaWQg
SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVy
IHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5
cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAKICAgICBtb3Zl
KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsK
IAotICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsK
ICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJl
bCgpOwpAQCAtMTc5OSw3ICsxODE3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50CiAgICAg
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZv
KTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdDsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGJ5VmFsSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3Bl
cmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQpPihBZGRy
ZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDAsIHJlZ1QxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdU
MSwgYnlWYWxJbmZvKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXgg
OGRiMzU5ZWJkOGNkMDU2Njk3M2I4NjNjNDg2NzQxYTdmYWUyMjQ1ZS4uNGQ3NDEyNmJlMWUzZGU0
MzBkM2E2ZDljYjdmZGRiNmRjODZmN2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTYyLDEzICsxNjIsMTUgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgSklUSW5z
dGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0
CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAg
ICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CiAgICAgCiAgICAgZW1p
dFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKQEAgLTExODMsNyArMTE4NSw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0
eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
ID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJh
ZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1
cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAt
MTE5OCw3ICsxMjAwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3Bl
cnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2Rl
QmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIkJhc2Vs
aW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0
b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1
ZSgpKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5i
YWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUo
KSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJl
dHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRy
VGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOwogfQogCkBAIC0xMjM0LDcgKzEyMzYsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qg
c2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2Rl
LCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9k
ZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMDYwM2Y5
M2E5YWZmMjFkOWRkNGIxYmI0OTc5OWM5YzJhM2FjZmM1Ny4uMTZiZGEwOTFiMDUzYzEwMzlkZDM1
ZWNhNzUxMWE0YWI3OThlYjVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCkBAIC0xMDAyLDcgKzEwMDIsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmEKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAg
ICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRv
b2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhS
ZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2Vu
ZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5l
cmljKTsKICAgICB9CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9i
YWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9k
ZSkpOwogfQpAQCAtMTA5NCw3ICsxMDk3LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAg
ICAgaWYgKHJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAv
LyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJu
QWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VTaGFyZWRJQygpKQorICAgICAgICAg
ICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwg
YnlWYWxJbmZvLCBlY21hTW9kZSkpOwpAQCAtMTI3OCw3ICsxMjg0LDEwIEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNH
bG9iYWxPYmplY3QqCiAgICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25S
ZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4K
ICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBjdGlQYXRj
aENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJsb2Nr
LT51c2VTaGFyZWRJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRV
Uk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CiAgICAgfQogCiAg
ICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjU2Nyw3ICsyNTc2LDExIEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNvZGVkSlNW
YWx1ZSwgKEpTCiAgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMAog
ICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgewog
ICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBj
dGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FE
RFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKKyAgICAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2stPnVzZVNoYXJlZElDKCkpCisgICAgICAgICAgICAgICAgYnlWYWxJ
bmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmlj
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhh
c0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY0NDY3ZTlh
MjVlMTQ3N2UxZWMwNjM1ZDQwOTc1NGQ4ZTc1MzkyZWYuLmQxNzJlZGYxMTdmN2E4MzFhZWM3M2U5
ZTRkZDBmNGE2MzM0NWZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCkBAIC02OSwxMiArNjksMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEp
LCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29u
c3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5
SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
ZGRTbG93Q2FzZSgpOwogICAgICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwg
cmVzdWx0UmVncyk7CkBAIC05Myw4ICs5Niw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAK
ICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgICAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICAgICAgKytt
X2dldEJ5VmFsSW5kZXg7CisgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dl
dEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMTgsNyAr
MTIxLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25HZXRCeVZhbE9wdGltaXplKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1
ZUdQUik7CkBAIC0xMzgsNyArMTQ1LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTU3LDkgKzE2NSwxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRC
eVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0
bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0
byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1w
KEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5
X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEwICsxOTEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3Bl
cnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MsIHJlZ1QyKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAg
ICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVz
dWx0UmVncyk7CkBAIC0yMDEsOCArMjEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIAog
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJbmRl
eDsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZh
bEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMjI2LDcgKzIzNywxMSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJ
bmZvR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOworICAgIGVsc2UKKyAg
ICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI0NSw3ICsyNjAsOCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
SklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0yNjMs
OSArMjc5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhp
cyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0g
ICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0
KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxz
ZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC0yODUsMTAg
KzMwMiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlR1BSLCBiYXNlKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJy
YW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpT
VmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAgICBtX2Nv
ZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRl
QnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgcmVnVDIpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVs
c2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFw
cGVuZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVtaXQgd3JpdGUtYmFycmllciBhdCB0aGUg
ZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJpZXIgY2xvYmJlcnMgcmVnaXN0ZXJzLgpA
QCAtMzAyLDggKzMyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiB7CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYg
Z2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsK
LSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zMjgsOSArMzQ3LDE0IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25U
cmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1l
bnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25TZXRQcml2YXRl
QnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogI2VuZGlmCisKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOwogfQogCkBAIC0zNDYsMTAgKzM3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVj
a19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAogICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVk
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCkBAIC0zNTcsOCArMzg0LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnQKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFj
Y2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRlQnJhbmRB
Y2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1f
cHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKICAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKQEAgLTM4Myw3ICs0MDksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJh
aXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRU
eXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1
c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplOwor
ICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNDE1LDggKzQ0NSwxNCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKICAgICBQ
YXRjaGFibGVKdW1wIG5vdEluZGV4OwogICAgIGlmICghcHJvcGVydHlOYW1lSXNJbnRlZ2VyQ29u
c3RhbnQpIHsKLSAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJl
Z1QxKTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBhdXRv
IGlzSW50MzIgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJz
b2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJv
dXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50
KHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgfQog
ICAgICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgICAgICB6ZXJvRXh0
ZW5kMzJUb1dvcmQocmVnVDEsIHJlZ1QxKTsKICAgICB9CkBAIC00MzIsMjMgKzQ2OCwyNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmls
ZSk7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZv
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNl
cyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dD
YXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlW
YWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAg
ICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQ1JBU0goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dD
YXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2Fz
ZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtNDU3LDcg
KzQ5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQorSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBl
IGluZGV4aW5nU2hhcGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92
YWx1ZTsKQEAgLTQ2NSw3ICs1MDIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmlj
Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKICAgICAK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgIGlm
IChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
aWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNo
MzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgICAgICAg
ICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdl
dCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGlu
ayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOwor
ICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworCiAgICAgCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAg
ICAgSnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJl
c3MocmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtNTE1LDcg
KzU2MSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJy
YXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7CkBAIC01MjMsNyArNTY5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJy
YXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAg
ICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFw
ZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RU
eXBlID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hh
cGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1f
YmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBp
c0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFy
cmF5U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFw
ZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1
YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNl
dCgpKSkpOwogCkBAIC01NjgsOCArNjIzLDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVt
aXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwogCiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1v
ZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBw
cm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0
dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhN
RTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkg
dG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTU4MCw3ICs2MzUsMTMgQEAgSklUUHV0QnlJZEdlbmVy
YXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBw
dXRLaW5kLAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIGdlbi5zbG93
UGF0aEp1bXAoKS5saW5rKHRoaXMpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdC
aXRzKCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5v
bkFyZ0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZv
KCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5k
KGp1bXAoKSk7CiAKQEAgLTYzOCw4ICs2OTksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYXV0
byogb3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
IDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0
aW9uUHV0QnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1
dEJ5VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTY1Nyw3ICs3MjEsOCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklU
IGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29k
ZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC02NzUsOSAr
NzQwLDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJh
c2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIGVjbWFNb2RlR1BSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNp
ZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0
aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0
LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwg
QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Cisg
ICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CkBAIC02OTYsOCArNzYy
LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgYmFzZSk7CiAKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hh
YmxlSnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICBQYXRjaGFibGVK
dW1wIGZhc3RQYXRoSm1wOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8t
Pm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIGVsc2Ug
eworICAgICAgICBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICAgICAgYWRkU2xv
d0Nhc2UoZmFzdFBhdGhKbXApOworICAgIH0KICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwo
KTsKICAgICAKQEAgLTc0Myw3ICs4MTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Cisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
UHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTc2
MSw3ICs4MzYsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVz
cygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CkBAIC03NzksOSArODU1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBi
eVZhbEluZm9HUFIsIHB1dEtpbmRHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGly
ZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmlu
ZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJK
dW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC04NDYsMTEgKzkyMywxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIGJhc2UpOwogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCByZWdUMik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklU
Q29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
KTsKICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTg5OCwxNSArOTc4LDE4IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAg
ICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQ
UiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CkBAIC05MTgsNyArMTAwMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKQEAgLTkzNSw5ICsxMDE5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
IAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3Rs
eSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRv
IHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6
OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlf
aWRfcHJlcGFyZUNhbGwiKTsKQEAgLTk1NiwxMCArMTA0MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkpOwogICAgIEpJVERlbEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAg
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAg
YWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJv
b2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC0xMDA4LDE1ICsxMDk2LDE4IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUu
bV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7
CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRpY19h
c3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTAyOCw3ICsxMTE5LDggQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2Fs
bEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0p
OwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNo
YXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVu
dEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTA0NSw5ICsxMTM3LDEw
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2Rl
bF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRo
aXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAot
ICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJl
dCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVs
c2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4ICsxMTYx
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVl
UmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRS
ZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
cmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTEwLDcgKzEyMDMsMTEgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNs
dHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdl
dEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTExMzMsOCArMTIzMCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVn
VDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNj
ZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3Vs
dFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTE3Niw3ICsxMjczLDExIEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRC
eUlkRGlyZWN0T3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNl
U2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplOworICAgIGVs
c2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGlt
aXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIwNyw4ICsxMzA4LDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdz
LCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRC
eUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMzNCw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAg
ICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRz
V2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjc1LDcgKzEzNzYsMTEgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAg
ICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTI5NCw3ICsxMzk5LDggQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQo
dm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTMxMSw5ICsxNDE3
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxs
IGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1
cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGpp
dC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X2dldF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTM1NCw3ICsxNDYxLDExIEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRD
YWxsKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpc09wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQ
Uik7CkBAIC0xMzczLDcgKzE0ODQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzkyLDkgKzE1MDQsMTAgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
c19wcmVwYXJlQ2EKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZFdpdGhUaGlzT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
R1BSLCB0aGlzR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBk
aXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJu
aW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
cmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsIik7CkBAIC0xNDE4LDExICsxNTMxLDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZS
ZWcpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21h
TW9kZShieXRlY29kZSksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAgICAgICAgZGlyZWN0
ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKLSAgICAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTQ2NSw3ICsxNTc3LDExIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRD
b2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHVi
SW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgIGVs
c2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIApAQCAtMTQ4MSw3ICsxNTk3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8K
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZVNoYXJlZElDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAog
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTUwMCw5ICsxNjE3LDEwIEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwg
Y2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2Yg
cmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAg
aWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAg
ICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTE1MjEsOCArMTYzOSw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAK
ICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7Cisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTE1NjQsNyArMTY4Miwx
MSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFy
ZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAg
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRW
UmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNzU0LDggKzI4NzYsOCBAQCBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5k
IHB1dEtpbmQsCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QzLCByZWdUMik7CiAKICAgICBKSVRQ
dXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwg
cmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BSUmVnLCByZWdU
MSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yNzY1LDcgKzI4
ODcsMTMgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJ
ZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIC8vIEpJVFB1dEJ5SWRHZW5lcmF0
b3Igb25seSBwcmVzZXJ2ZSB0aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2UgaGF2
ZSB0byByZWxvYWQgdGhlIHRhZy4KICAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7CiAKLSAg
ICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRz
KCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
Z2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBt
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFt
ZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5z
dHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsK
IApAQCAtMjgxNywyOSArMjk0NSwyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAg
c3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dD
YXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVt
aXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwog
ICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5
U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAg
ICAgICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBl
Rm9ySklUQXJyYXlNb2RlKGFycmF5TW9kZSk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAg
ICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJy
YXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdV
aW50NjRBcnJheSBpbiBJQwogICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5
IC8gQmlnVWludDY0QXJyYXkgbmV2ZXIgY29tZXMgaGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKICAgICAgICAgICAgIEFT
U0VSVChpc0Zsb2F0KHR5cGUpKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBz
bG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUs
IG51bGxwdHIsIHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4
NjYsOCArMjk5NCwxNCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9j
b2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgICAg
ICJCYXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVw
IiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2Vk
VmFsdWUoKSk7CiAgICAgfQotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbElu
Zm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
YnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlW
YWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAg
ICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxz
ZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fYmFk
VHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBU
aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVu
aXQgKEpJVE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0
ZWQgc3BlY2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCkBAIC0yOTA2LDggKzMwNDAsMTMgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkEKICAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUg
d2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQg
JXAiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFs
SW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkp
KTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1
cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRh
Zz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVt
cFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9ub3RJ
bmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
KSk7CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KQEAgLTI5NDQsMTUgKzMwODMs
MjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3MKICAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92
YWwlcyB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBw
b2ludCAlcCIsIChwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCkgPyAiX2RpcmVjdCIgOiAiIiwg
cHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8t
PnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRk
cmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1
dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlv
blB1dEJ5VmFsR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdl
dCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVy
YXRpb24gPSBwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAg
IH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJh
bnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhl
IHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRlIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KEJ5VmFs
SW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwog
dGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQ
dXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2Fj
aGVhYmxlSWRlbnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChj
b25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMjk2OCw3ICszMTEyLDE2IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91Ymxl
U2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hhcmVkSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3Jy
ZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNo
YXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5t
X2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAg
aXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0z
MihEb3VibGVTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsK
KwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSkpOwogICAgIGxvYWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1l
c0VpZ2h0KSwgZnBSZWdUMCk7CkBAIC0yOTc3LDcgKzMxMzAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0
Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29u
dGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTI5OTUsNyAr
MzE0OCwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IElu
c3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGlu
ZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlU2hh
cmVkSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsK
KyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGlu
ZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJz
b2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91
dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVx
dWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywg
VHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNl
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWRWYWx1ZShCYXNl
SW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCByZXN1bHQpOwpAQCAtMzAwNCw3
ICszMTY2LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICByZXR1cm4gc2xvd0Nhc2Vz
OwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBS
ZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTMwMjMsNyArMzE4NSwxNiBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIGFkZDMyKFRydXN0
ZWRJbW0zMigtQXJyYXlTdG9yYWdlU2hhcGUpLCBpbmRleGluZywgc2NyYXRjaCk7Ci0gICAgYmFk
VHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKworICAgIGlmIChK
SVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYg
KGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIo
QmVsb3dPckVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNo
YXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVB
ZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3Jh
dGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdl
U2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0g
QXJyYXlTdG9yYWdlU2hhcGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJy
YW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQXJyYXlTdG9y
YWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTMwMzUsNyArMzIwNiw3IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBh
dGNoYWJsZUp1bXAmIGJhZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJy
YXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzA2MCw3
ICszMjMxLDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5
cGUodHlwZSkpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VTaGFyZWRJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBp
c0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMy
KHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0
aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBl
KSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90
RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpOworCiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFu
Y2gzMihCZWxvdywgcHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmls
ZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CkBAIC0zMTExLDcgKzMyOTIsNyBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6
SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkK
IHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
ICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBA
IC0zMTM2LDcgKzMzMTcsMTcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJy
YXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBl
ZEFycmF5VHlwZSh0eXBlKSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZVNoYXJlZElDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAg
ICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVz
dGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgICAgICAgICBmYXJK
dW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJy
YXlUeXBlKHR5cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAgICAgSnVtcCBpbkJvdW5k
cyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBlbWl0QXJy
YXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGMy
MmM3NzA0Mjg5YWJiMDgyZjlkZGYyMGQ4YzJmZjY2NWRmZDU2ZTIuLjBlM2JlNmFmODQyY2U5ZDAy
NjIxMzVkZWQ1NmM5YjBhZWJkZTBiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5w
YXlsb2FkR1BSKCkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNl
UmVncy50YWdHUFIoKSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKLSAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgYmFz
ZVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvcGVydHksIHByb3BlcnR5UmVn
cy50YWdHUFIoKSk7CiAKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAot
ICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVn
cywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogCiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBA
IC0yNTcsOCArMjU3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6Okdl
dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzLCBJbnZhbGlk
R1BSUmVnKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAg
ICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC0zMDUsOCArMzA1LDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBy
ZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3Ms
IEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChn
ZW4pOwpAQCAtMzkzLDggKzM5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2Jy
YW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3MpOworICAgICAgICBtX2Nv
ZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRl
QnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
YmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQzMyw4ICs0MzMsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2Us
IGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRl
QnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
YmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3Ms
IEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CkBAIC00ODYsMTYgKzQ4NiwxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklU
QXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmlsZSk7CiAgICAgc3dpdGNoICht
b2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMy
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50
MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91
c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dD
YXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKQEAg
LTUxMSw3ICs1MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4K
LUpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUp
CitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRl
eGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKQEAgLTUyMCw2ICs1MjAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAog
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbElu
Zm8pOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKQEAgLTU3Miw3ICs1
NzMsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJh
eVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CkBAIC01ODEsNiArNTgyLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0
b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIAogICAg
IEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKKyAgICBVTlVTRURfUEFSQU0oYnlWYWxJbmZvKTsK
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKQEAgLTY2MCw4ICs2NjIs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVn
LCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRz
LmFwcGVuZChnZW4pOwpAQCAtNzAxLDggKzcwMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2Nr
LCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBB
Y2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OkdldEJ5SWRE
aXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03
NDgsOCArNzUwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAg
ICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BS
UmVnLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRz
LmFwcGVuZChnZW4pOwpAQCAtNzkxLDggKzc5Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAog
ICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykpOworICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1Qz
KSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlz
LmFwcGVuZChnZW4pOwpAQCAtODM1LDkgKzgzNyw5IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAorICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlk
R1BSUmVnLAogICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJl
Y3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwogICAgIAogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTg4Miw4ICs4ODQsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBKSVRJ
bkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1f
aW5CeUlkcy5hcHBlbmQoZ2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJv
dXRpbmUuaAppbmRleCA4ODE0NjQwZTZhY2NlYWMxYjliMDY4YTQwYzg5NDI4MzQ4NmNkZmFiLi45
ZDNkNzZiNDNiNDZhMjNhYjBkMzg2OGU5YWRkYjgzMTRlYzA5MzllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCkBAIC0zNSw2ICszNSwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogY2xhc3MgVk07CiAKKyNpZiBVU0Uo
SlNWQUxVRTY0KQordXNpbmcgU3RydWN0dXJlSUQgPSB1aW50MzJfdDsKKyNlbHNlCit1c2luZyBT
dHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZSo7CisjZW5kaWYKKworY2xhc3MgQWNjZXNzQ2FzZTsKKwog
Ly8gVGhpcyBpcyBhIGJhc2UtY2xhc3MgZm9yIEpJVCBzdHViIHJvdXRpbmVzLCBhbmQgYWxzbyB0
aGUgY2xhc3MgeW91IHdhbnQKIC8vIHRvIGluc3RhbnRpYXRlIGRpcmVjdGx5IGlmIHlvdSBoYXZl
IGEgcm91dGluZSB0aGF0IGRvZXMgbm90IG5lZWQgYW55CiAvLyBoZWxwIGZyb20gdGhlIEdDLiBJ
ZiBpbiBkb3VidCwgdXNlIG9uZSBvZiB0aGUgb3RoZXIgc3R1YiByb3V0aW5lcy4gQnV0CkBAIC0x
MDMsNiArMTExLDcgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmUgewogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX2NvZGU7CiAgICAgdW5zaWduZWQgbV9y
ZWZDb3VudDsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzaCB7IDAgfTsKIH07CiAKIC8vIEhl
bHBlciBmb3IgdGhlIGNyZWF0aW9uIG9mIHNpbXBsZSBzdHViIHJvdXRpbmVzIHRoYXQgbmVlZCBu
byBoZWxwIGZyb20gdGhlIEdDLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAppbmRleCAxZjc2MDY4NjI3M2RkYTgx
Y2JiNmQwMWNkMjFkZDA5ODljYzZlMmI4Li40MTE1YmEyNWNlZDE2MjNiM2EyODUxN2VjYjZkMmI4
NTU5ODBmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQ29kZU9yaWdpbi5o
IgpAQCAtNjcsNyArNjgsNyBAQCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBD
YWxsRnJhbWUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywgY29uc3QgVmVj
dG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKICAgICBVbmlxdWVBcnJheTx1aW50MzJf
dD4mJiBmYXN0Q291bnRzKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZt
KQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYpCiAgICAgLCBtX3ZhcmlhbnRz
KGNhc2VzLnNpemUoKSkKICAgICAsIG1fZmFzdENvdW50cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQog
ewpAQCAtODAsNiArODEsNyBAQCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ1Bv
bHltb3JwaGljQ2FsbChjYWxsZXJGcmFtZSwgbV9jYWxsTm9kZXMuYWRkKCZpbmZvKSk7CiAgICAg
fQogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgbWFrZUdDQXdhcmUodm0pOwogfQog
CiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6flBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA5MDVmOGQ3ZjJh
ZmJmNWIwMDYxZWYzZDc1ZjdmNjY2ZWJkMWRjYTA0Li4yNzNkNzU5NTIwZmY0MGJlNGYxMWMyNGVh
NTkzZDk0MGQyOTMxNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAg
LTcxLDggKzcxLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitzdGF0aWMgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CisgICAgaWYgKGNvZGVCbG9j
ay0+dXNlU2hhcmVkSUMoKSkKKyAgICAgICAgcmV0dXJuIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlv
bi5yZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCk7CisgICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0lu
dGVybmFsUHRyVGFnPiBjYWxsID0gc3R1YkluZm8ubV9zbG93UGF0aENhbGxMb2NhdGlvbjsKICNp
ZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlw
ZTo6RlRMSklUKSB7CiAgICAgICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPiB0YXJnZXQg
PSBNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+KGNhbGwpOwpA
QCAtMTA1LDYgKzEwOCwxNSBAQCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVy
YXRpb25QdHJUYWc+KCkpOwogfQogCitzdGF0aWMgdm9pZCByZXBhdGNoU2xvd1BhdGhDYWxsKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYgKGNvZGVC
bG9jay0+dXNlU2hhcmVkSUMoKSkgeworICAgICAgICBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24g
PSBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8ubV9zbG93UGF0aENhbGxMb2NhdGlvbiwgbmV3Q2FsbGVlRnVuY3Rpb24pOworfQor
CiBlbnVtIElubGluZUNhY2hlQWN0aW9uIHsKICAgICBHaXZlVXBPbkNhY2hlLAogICAgIFJldHJ5
Q2FjaGVMYXRlciwKQEAgLTIwOSw3ICsyMjEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAg
ICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIGNv
bnN0IGJvb2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lIHx8IGtp
bmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdD
YXNlOwogCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSB7CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VDZWxsKSkgewpAQCAtMjE5LDcg
KzIzMSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgICAgICBi
b29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5n
dGgoc3R1YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0QXJyYXlMZW5ndGgobG9ja2VyKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAg
ICAgICAgIH0KQEAgLTIyNywxMCArMjM5LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAog
ICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9j
aywgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGgsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZUNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5zZXQgJiYgSW5saW5lQWNjZXNzOjpp
c0NhY2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c3R1YkluZm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAg
ICAgICAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKSkg
ewogICAgICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVB
Y2Nlc3M6OmdlbmVyYXRlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mby5pbml0U3RyaW5nTGVuZ3RoKGxvY2tlcik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAg
ICAgICB9CkBAIC0yODIsMTIgKzI5NSwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAg
ICAgICAgICAgICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCiAgICAgICAgICAgICAgICAgJiYg
IXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAgICAgICAgICAg
ICAgJiYgIWxvYWRUYXJnZXRGcm9tUHJveHkpIHsKLQogICAgICAgICAgICAgICAgIGJvb2wgZ2Vu
ZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlBY2Nl
c3Moc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpHZXRCeVNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2VWYWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0
Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1
bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtp
bmQpKTsKICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxmKGxvY2tl
ciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtNDI1LDcgKzQzNyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAg
ICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1
ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5h
bWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJl
bDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywg
Q29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNDM5LDcgKzQ1MSw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1Zh
bHVlIGJhCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIAogICAgIGlmICh0cnlDYWNoZUdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
VmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2Fj
aGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOwor
ICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJp
YXRlR2V0QnlGdW5jdGlvbihraW5kKSk7CiB9CiAKIApAQCAtNTI5LDcgKzU0MSw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVw
bGFjZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcigp
KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2Rl
KCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNTQwLDcgKzU1Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5
R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiB2b2lkIHJlcGF0Y2hB
cnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKIHsKICAgICBpZiAodHJ5Q2FjaGVBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlLCBpbmRleCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJp
Yyk7CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihj
b25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUo
Jm9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCkBAIC02MzYsNyArNjQ4LDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQgPT0gUHV0
S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0
UHJpdmF0ZUZpZWxkRGVmaW5lKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwog
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBS
ZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5iYXNlKCkgPT0g
YmFzZVZhbHVlICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKSkgewogICAgICAgICAgICAgaWYgKHNs
b3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkgewpAQCAtNjU4
LDcgKzY3MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAg
IGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJv
cGVydHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2VsZlBhdGNoLCBvbGRT
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5n
UHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9jaywgb2xk
U3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAg
ICAgfQpAQCAtODAxLDcgKzgxMyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04MTUsNyArODI3LDcgQEAgdm9pZCByZXBh
dGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNWYWx1ZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5m
bywgcHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJp
YXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgIHJlcGF0
Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVHZW5lcmljUHV0
QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFs
dWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVj
bWFNb2RlKQpAQCAtODQ2LDcgKzg1OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAg
ICAgIGlmIChvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgcmV0dXJu
IFJldHJ5Q2FjaGVMYXRlcjsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
bmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAg
aWYgKHNsb3QuaXNEZWxldGVIaXQoKSkgewogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3
T2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKQEAgLTg3NCw3ICs4ODYsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvYwogICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0lu
Zm8oKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAg
ICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGlu
ZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODkxLDkg
KzkwMyw5IEBAIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRl
QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNo
ZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBi
YXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6
OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0g
RGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgICAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25E
ZWxldGVCeVZhbEdlbmVyaWMpOwogICAgIH0KIH0KIApAQCAtOTM3LDcgKzk0OSw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgICAgICAgICBpZiAo
Z2VuZXJhdGVkQ29kZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkluQnlJZFNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3Rh
cnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXpl
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvLmluaXRJbkJ5SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTg0LDcgKzk5Niw3IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKIAogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCisgICAgICAgIFJlZjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAgICAgdm0s
IGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6Oklu
TWlzcywgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBpbnZh
bGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBwcm9wZXJ0
eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOwpAQCAtOTkzLDcgKzEwMDUsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xv
dC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMDA3LDcgKzEwMTksNyBAQCB2b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KgogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNo
ZUluQnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1l
LCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25JbkJ5SWQpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZCk7CiB9CiAKIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTAzMiw3ICsxMDQ0LDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAg
ICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkNoZWNrUHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8o
KSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2
bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2Fz
ZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2Rl
QmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8u
YWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6
c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMDQwLDcgKzEwNTIs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgK
ICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0
aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwog
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNv
ZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwNTQsNyArMTA2Niw3
IEBAIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQo
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9
PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0
dWJJbmZvLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCkBAIC0xMDkxLDcgKzEx
MDMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQo
CiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OlNldFByaXZhdGVCcmFuZEFkZEFjY2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5k
KHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAg
ICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2
YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZN
b3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTA5OSw3ICsxMTExLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpTZXRQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vz
czo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6
cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2RlKGNvZGVCbG9jaywgc3R1
YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29k
ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExMTMsNyArMTEyNSw3IEBAIHZvaWQgcmVw
YXRjaFNldFByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJbmZvKSA9
PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMTMzLDcgKzExNDUsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAKICAg
ICAgICAgSlNDZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4g
bmV3Q2FzZTsKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgcHJvdG90eXBlVmFsdWUpOwogICAgICAgICBpZiAocHJvdG90eXBlKSB7CiAg
ICAgICAgICAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdmFsdWUpKSB7CkBA
IC0xMTY3LDEwICsxMTc5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5z
dGFuY2VPZigKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5zdGFuY2VPZlJlcGxhY2VX
aXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmllcigpKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAgICAgc3R1
YkluZm8ucGF0Y2hhYmxlSnVtcCgpLAotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQ29kZShjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
cmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTE4NSw3ICsxMTk0
LDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VPZihnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUsIHN0dWJJbmZv
LCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlv
bkluc3RhbmNlT2ZHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyB2
b2lkIGxpbmtTbG93UGF0aFRvKFZNJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZVJlZikKQEAgLTEyMDIs
NyArMTIxMSw3IEBAIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5m
byk7CiAgICAgbGlua1Nsb3dQYXRoVG8odm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsK
LSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVh
dGUodmlydHVhbFRodW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2bSwgdmlydHVhbFRodW5rKSk7CiB9CiAKIHN0YXRp
YyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBjYWxsZWUpCkBAIC0xMzIwLDcgKzEz
MjksNyBAQCBzdGF0aWMgdm9pZCBsaW5rVmlydHVhbEZvcihWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Io
dm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0
dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNs
b3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZtLCB2aXJ0dWFsVGh1bmspKTsK
ICAgICBjYWxsTGlua0luZm8uc2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQxLDE0
ICsxNjUwLDE0IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtp
bmQga2luZCkKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5j
dGlvbihraW5kKSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZv
LCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlv
bihraW5kKSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2Rl
QmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICB1c2luZyBGdW5jdGlv
blR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKTsK
LSAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIEZ1bmN0aW9uVHlw
ZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJl
YWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mbykuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGltaXplZEZ1bmN0aW9uOwogICAgIGlmICh1bm9wdGlt
aXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5j
dGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpCiAgICAgICAgIG9wdGltaXpl
ZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpAQCAtMTY2NSw0NSAr
MTY3NCw0MSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAKLSAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wdGltaXplZEZ1bmN0aW9uKTsKKyAg
ICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1Yklu
Zm8pOwogfQogCiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7CiAgICAgaWYgKGtpbmQgPT0g
RGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemUpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxzZQotICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OwotfQotCi1zdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQotewotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChzdHViSW5mby5w
YXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vz
c05vdFVzaW5nSW5saW5lQ29kZShjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNl
dEluQnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNK
dW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKLXZvaWQgcmVzZXRJbnN0YW5j
ZU9mKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVzZXRJbnN0YW5jZU9mKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAg
cmVzZXRQYXRjaGFibGVKdW1wKHN0dWJJbmZvKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk7CisgICAgSW5s
aW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsK
IH0KIAogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0
ZUJyYW5kT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nl
c3NOb3RVc2luZ0lubGluZUNvZGUoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVz
ZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBz
dHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAg
ICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVDb2Rl
KGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRy
eVB0clRhZz4ganNUb1dhc21JQ0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmlu
ZGV4IDMxMzc5ZGM0ZTVhOWRjMmRjNmVhNDkzMTc3OTQ3MjZhMDAyMDM1MWEuLjNhMTlmZDM2NTQ5
ZDFhODQ4MDlmOTRkYWRhMmRmYmU1NzAwMGZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJ
bmZvJik7Cit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBD
b2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCmluZGV4IGM5ZGU2YThhMzhjMTFiNjkzNzYxOWMxZTU5NGFkMTQ1MWIz
ZjFhOTkuLmU3Y2RjZGEzNjMzODRkMzQ1YzgxYjQ4MmRhMjdiN2QxZGMyZWNkOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM4LDYgKzUzOCw4
IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9vbCwg
dXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJv
b2wsIHVzZVRvcExldmVsQXdhaXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRoZSBhd2FpdCBrZXl3
b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYoQm9vbCwgdmVyYm9z
ZUV4ZWN1dGFibGVQb29sQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAg
IHYoQm9vbCwgdXNlU2hhcmVkSUMsIGlzQVJNNjQoKSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAg
dihCb29sLCB1c2VTaGFyZWRJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCmluZGV4IDhkMDdhMjc1NzgzMzQwYmVh
NGUxMGRkYTQ5MTYzZDEzYjQ5ODNmMTIuLmI4ZGQ0Y2JkNWQyODEwMTU3ZjlhOTliZDljYjBmMDU1
MWEzNmQ5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJ1
Y3R1cmU7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotdHlwZWRlZiB1aW50MzJfdCBTdHJ1Y3R1cmVJ
RDsKK3VzaW5nIFN0cnVjdHVyZUlEID0gdWludDMyX3Q7CiAKIGlubGluZSBTdHJ1Y3R1cmVJRCBu
dWtlZFN0cnVjdHVyZUlEQml0KCkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIFN0cnVjdHVy
ZUlEIGRlY29udGFtaW5hdGUoU3RydWN0dXJlSUQgaWQpCiAgICAgcmV0dXJuIGlkICYgfm51a2Vk
U3RydWN0dXJlSURCaXQoKTsKIH0KICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotdHlwZWRl
ZiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlEOwordXNpbmcgU3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmUq
OwogCiBpbmxpbmUgU3RydWN0dXJlSUQgbnVrZWRTdHJ1Y3R1cmVJREJpdCgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYmVhYzg2ZWIwZWI4Y2Y1MTM4ZWZiZmRjMzgy
MzQ3NDJiOGNiZGUxMS4uNGMxYmU0MTgxZmQyNzk4MzQ4MGZiYjk1YjczZTU0MTVjN2Y0YzZmNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNl
LmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAj
aW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCkBAIC01NjcsNiArNTY4LDcgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wq
IHN1Y2Nlc3MpCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUludGVy
bmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50
ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIG1f
c2hhcmVkSklUU3R1YnMgPSBtYWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJTZXQ+KCk7CiAgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKQEAgLTY1NSw2ICs2NTcsMTAgQEAgVk06On5WTSgpCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kp
CiAgICAgICAgIFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisK
KyNpZiBFTkFCTEUoSklUKQorICAgIG1fc2hhcmVkSklUU3R1YnMgPSBudWxscHRyOworI2VuZGlm
CiB9CiAKIHZvaWQgVk06OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2b2lkKiBh
cmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDk4YTc1YzZmOGI4ZGIy
NzlkMDI2ZjMyZWJmM2JiY2M1NDFiYWIwZjkuLjc0MjJiOWY2NzRlMzVkYzA1MTE0ZDdlNDgwMzlj
ZWJhZjA2MTI2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc1LDYgKzE3
NSw3IEBAIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQcm9maWxl
cjsKICNlbmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBT
b3VyY2VQcm92aWRlckNhY2hlOwpAQCAtODQ2LDExICs4NDcsMTMgQEAgY2xhc3MgVk0gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8
Vk0+IHsKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRUaHVua3M+IGpp
dFN0dWJzOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJ
U3R1YihUaHVua0dlbmVyYXRvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJT
ZXQ+IG1fc2hhcmVkSklUU3R1YnM7CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogI2lmIEVOQUJM
RShGVExfSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwog
I2VuZGlmCisKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVu
Y3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430887</attachid>
            <date>2021-06-08 14:01:29 -0700</date>
            <delta_ts>2021-06-08 14:08:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210608140128.patch</filename>
            <type>text/plain</type>
            <size>447721</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzY2NDliOWYwZjdhNDg5ZGVlNmFhMjdkYWUyNmE4YWFkNTNiMDRiLi5iNzQwMDg2MjZiZDQxYTAx
MTc3OTk4NjA3NDM5YzViOWM3NjlmNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOTggQEAKKzIwMjEtMDYtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbm9u
LXJlcGF0Y2hpbmcgSUMgZm9yIEJhc2VsaW5lIEpJVCBpbiBBUk02NC4KKyAgICAgICAgVGhpcyBk
b2VzIG5vdCB3b3JrIGluIG5vbi1BUk02NCBhcmNoaXRlY3R1cmVzIChpbmNsdWRpbmcgWDY0KSBk
dWUgdG8gdGhlIHVzZSBvZiBsaW5rLXJlZ2lzdGVyLgorCisgICAgICAgIDEuIFdlIGFkZCBub24t
cmVwYXRjaGluZyBJQywgd2hpY2ggaXMgZW5hYmxlZCBvbmx5IGluIEJhc2VsaW5lIGR1ZSB0byBw
ZXJmb3JtYW5jZSByZWFzb24uIFdlIGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgZXhpc3Rpbmcg
SUMgaW4gREZHIGFuZCBGVEwuIE5vbi1yZXBhdGNoaW5nIGluY2x1ZGVzIGZhc3QtcGF0aCwgYW5k
IHNsb3ctcGF0aCdzIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgMi4gV2Ugc3RpbGwga2Vl
cCBJbmxpbmVBY2Nlc3MgaW4gYWxsIHRpZXJzLiBSZW1vdmluZyB0aGF0IGNhdXNlcyAwLjMgfiAx
LjAlIHJlZ3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLiBUaGlzCisgICAgICAgICAgIG1lYW5zIHRo
YXQgd2Ugc3RpbGwgbmVlZCBzb21lIHJlcGF0Y2hpbmcgd2hlbiB3ZSBmaXJzdCBpbnRyb2R1Y2Ug
c3R1YnMuCisgICAgICAgIDMuIFdlIGFkZCBhIG1lY2hhbmlzbSB0byBzaGFyZSBnZW5lcmF0ZWQg
Y29kZSBzdHVicyBpbiBub24tcmVwYXRjaGluZyBJQy4gQ3VycmVudGx5LCBnZXR0ZXIgLyBzZXR0
ZXIgLyBjdXN0b20KKyAgICAgICAgICAgYWNjZXNzb3JzIGFyZSBleGNsdWRlZCBzaW5jZSB0aGVp
ciBjb2RlIHJlbGllcyBvbiBKU0dsb2JhbE9iamVjdCwgQ29kZUJsb2NrIGV0Yy4gd2hpY2ggYXJl
IG5vdCBpbmNsdWRlZCBpbgorICAgICAgICAgICBBY2Nlc3NDYXNlJ3MgZGF0YSBzdHJ1Y3R1cmUu
CisgICAgICAgIDQuIFRoaXMgcGF0Y2ggc3RpbGwgcmVsaWVzIG9uIHRoYXQgQ29kZUJsb2NrIHdp
bGwgYmUgZGVzdHJveWVkIHN5bmNocm9ub3VzbHkgc2luY2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhh
dCBzaGFyaW5nLWhhc2gtdGFibGUKKyAgICAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBhbHJlYWR5
LWRlYWQgSklUIGNvZGUgc3R1YnMuIFdlIGNhbiBmaXggaXQgKGUuZy4gYW5ub3RhdGluZyBlcG9j
aCB0byB0aGVzZSBzdHVicywgYnVtcCB0aGVtIGluCisgICAgICAgICAgIGZpbmFsaXplVW5jb25k
aXRpb25hbGx5KSwgYnV0IHdlIGF2b2lkIGRvaW5nIHRoYXQgdG8gcHJldmVudCBmcm9tIGZ1cnRo
ZXIgZW5sYXJnaW5nIHRoaXMgcGF0Y2guIFRoaXMgcGF0Y2ggaXMgYWxyZWFkeQorICAgICAgICAg
ICBzaWduaWZpY2FudCBpbiBpdHMgc2l6ZS4KKyAgICAgICAgNS4gQWRkZWQgY2FsbE9wZXJhdGlv
bihBZGRyZXNzKSBzdXBwb3J0IGluIENDYWxsSGVscGVycywgd2hpY2ggY2FuIHNhdmUgdGhlIHRh
cmdldCBpbiBub25BcmdHUFIwLCBhbmQgY2FsbCBpdCBzbyB0aGF0IHdlIGNhbiB1c2UKKyAgICAg
ICAgICAgQWRkcmVzcyBpbmNsdWRpbmcgR1BSIHdoaWNoIGlzIGFsc28gdXNlZCBmb3IgYXJndW1l
bnRzLgorCisgICAgICAgIFBlcmZvcm1hbmNlIGlzIG5ldXRyYWwgaW4gSmV0U3RyZWFtMiBhbmQg
U3BlZWRvbWV0ZXIyLiBCdXQgaXQgb2ZmZXJzIHRoZSB3YXkgdG8gcmVtb3ZlIHNvbWUgY29kZSBn
ZW5lcmF0aW9uIGluIEJhc2VsaW5lLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjRFLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsKToK
KyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmNhbkJlU2hhcmVkKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1
YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpI
YXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6
U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0
dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2Vh
cmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0
OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRT
dHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNoYXJl
ZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OnJlbW92
ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86OnNldFVwKToKKyAg
ICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAgICAgICAo
SlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpT
Qzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmluaXRp
YWxpemVEaXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXREaXJlY3RD
YWxsVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1c2VEYXRhSUMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9u
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01K
SVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpnZXRT
Y3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVB
Y2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNj
ZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5j
ZU9mQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nh
c2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaDoKKyAg
ICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omhhc2ggY29uc3QpOgorICAg
ICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpvcGVyYXRvciE9KToKKyAgICAg
ICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2Vw
dGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMpOgorICAg
ICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94
eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2Fz
ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0
TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnBhdGNoYWJsZUp1
bXApOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvbXBpbGVyOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU2xv
d1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzbG93UGF0aElDQ2FsbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2Vs
bHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
Zik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1
c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFu
ZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVs
QnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFy
ZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6Cisg
ICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxP
cGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6
OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxL
ZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6
aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZU
TDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2Fs
bCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6QXJnQ29sbGVjdGlv
bik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaFJlZ0Fy
Zyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaEV4dHJh
UmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNo
Tm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRH
UFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQ
UkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjph
ZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2Fs
bEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
Ojpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3Rk
Ojppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46
OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0VudHJ5
SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKToK
KyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAo
SlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1ha2VHQ0F3YXJlKToKKyAgICAgICAgKEpTQzo6
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6UG9seW1vcnBoaWNBY2Nlc3NKSVRT
dHViUm91dGluZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRp
bmU6Om9ic2VydmVaZXJvUmVmQ291bnQpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lOjpjb21wdXRlSGFzaCk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAg
ICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpjcmVh
dGVJQ0pJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAg
ICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQ
b2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpjYXNlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OndlYWtTdHJ1Y3R1cmVzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6aGFzaCBj
b25zdCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJ
VENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6dXNlRGF0YUlDKToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVy
YXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRC
eUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
OjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlk
R2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVs
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxC
eVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5C
eVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0
QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93
UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVs
QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpz
bG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91Ymxl
TG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlw
ZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGpp
dC9KSVRTdHViUm91dGluZS5oOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAg
ICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNs
b3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlND
OjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5KToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlU2V0UHJp
dmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNldFByaXZhdGVCcmFuZCk6CisgICAg
ICAgIChKU0M6OnRyeUNhY2hlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoSlNDOjpsaW5r
VmlydHVhbEZvcik6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnkpOgorICAgICAgICAoSlNDOjpy
ZXNldFB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldERlbEJ5KToKKyAgICAgICAgKEpTQzo6
cmVzZXRJbkJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAgICAgICAgKEpT
Qzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0U2V0UHJpdmF0
ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRQYXRjaGFibGVKdW1wKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA2LTA3ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI3ODM3MSBhbmQgcjI3ODQ2My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCA2MDg0NjZkMzM2MjA4MTQ3MDc1
MWI4NmRmODdlMDI5NTMxZjQxNmVhLi5kNmYzYjdhYjk3MTgyZWUwZGNjYmU3ZDk2OGM2MGQ0MGVk
OThkNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0yMjUsMTkgKzIyNSwxOSBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICAgICAgcmV0
dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BS
LCB0YWdHUFIpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnIHRhZykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbChBZGRyZXNz
IGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQodGFnICE9IENGdW5j
dGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOwogICAgICAgICBBU1NFUlQoIU9wdGlvbnM6
OnVzZUpJVENhZ2UoKSB8fCBjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRh
Zyk7CisgICAgICAgIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CiAKLSAgICBB
TFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0
YWcpCiAgICAgewogICAgICAgICBBU1NFUlQodGFnICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
ICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAg
ICAgICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjYWxsT3BlcmF0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4gb3BlcmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCmluZGV4IDEyYTk3YTJkMjVkNWViZDFlOTlhNWU1YWMyOWMyMjg5M2JhODM4ZjkuLjEz
YWIwMWNhNzBlYjE0ZDhlNjU2YWYyNTk4NzAzMmRmOWRmZDBlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgQWNj
ZXNzQ2FzZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlw
ZSwgQ2FjaGVhYmxlSWRlbnRpZmkKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbmRpdGlvblNldC5p
c1ZhbGlkKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQs
IFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1Jl
ZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2Ug
SW5IaXQ6CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlw
ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3ND
YXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCitSZWZQdHI8
QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpA
QCAtMTIyLDM0ICsxMjIsMzQgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0s
IG93bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29u
ZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVy
LCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlRGVsZXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0
ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJl
ID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKICAgICBBU1NFUlQoIW5ld1N0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7
IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQ
cml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nh
c2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVy
ZSwgeyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBv
d25lciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVj
dHVyZSwgeyB9LCB7IH0pKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vz
c0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNl
OjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUg
PT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQs
IGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgU2V0UHJpdmF0ZUJy
YW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7
CiB9CiAKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbygKK1JlZlB0cjxB
Y2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8oCiAgICAgVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSgp
KSB7CkBAIC0xODgsOSArMTg4LDkgQEAgSlNPYmplY3QqIEFjY2Vzc0Nhc2U6OmFsdGVybmF0ZUJh
c2UoKSBjb25zdAogICAgIHJldHVybiBjb25kaXRpb25TZXQoKS5zbG90QmFzZUNvbmRpdGlvbigp
Lm9iamVjdCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6
Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QK
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBBY2Nlc3NDYXNl
KCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2UoKnRo
aXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtODA3LDYgKzgwNyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBDb21taXR0ZWQpOwogICAgIG1fc3RhdGUgPSBH
ZW5lcmF0ZWQ7CiAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUubV9n
bG9iYWxPYmplY3Q7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3RhdGUuaml0OwogICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdGF0ZS5zdHViSW5mbzsKICAgICBWTSYgdm0g
PSBzdGF0ZS5tX3ZtOwpAQCAtODUzLDcgKzg1NCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVXaXRoR3VhcmQoCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNNb25vUHJvdG8oKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUt
PnByb3RvdHlwZUZvckxvb2t1cChzdGF0ZS5tX2dsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9v
a3VwKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChwcm90b3R5cGUuaXNPYmplY3QoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYXNPYmplY3QocHJvdG90eXBlKSksIGJhc2VG
b3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtOTY0LDYgKzk2
NSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2
YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3Mo
KSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcp
CisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAgICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMDYx
LDYgKzEwNjQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVy
dHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQ
Uik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAKQEAgLTExNDQs
NiArMTE0OSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0
eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BS
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTIwNSw2
ICsxMjEyLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5
UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNj
cmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCkBAIC0xMzE3LDYgKzEzMjYsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
V2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsK
ICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxv
Y2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHVi
SW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIp
OwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9j
YXRlU2NyYXRjaEdQUigpOwpAQCAtMTQxNyw3ICsxNDI4LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hhaW4pOwogCiAgICAgICAgIGlmIChjb25kaXRp
b24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChQcm9wZXJ0eUNv
bmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpFbnN1cmVXYXRjaGFiaWxpdHkpKSB7Ci0gICAg
ICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb25kaXRpb24pOworICAgICAgICAgICAg
c3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJsb2NrLCBjb25kaXRpb24pOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTQzNSw3ICsxNDQ2LDcgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIAogICAg
ICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQg
aXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVyZS4KICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgIHN0YXRl
LndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJhcnJpZXI8SlNDZWxsPih2bSwgY29kZUJsb2Nr
LCBzdHJ1Y3R1cmUpKTsKKyAgICAgICAgc3RhdGUud2Vha1N0cnVjdHVyZXMuYXBwZW5kKHN0cnVj
dHVyZS0+aWQoKSk7CiAKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGNvbmRpdGlvbi5vYmplY3QoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzdGF0ZS5mYWls
QW5kUmVwYXRjaC5hcHBlbmQoCkBAIC0xNTgyLDcgKzE1OTMsMTIgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKIAogICAgICAgICAv
LyBUaGlzIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9y
IG5vdCB3ZSdyZSBhbgogICAgICAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgot
ICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0
YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCk7CisgICAgICAgIFJlZ2lz
dGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAg
IGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNU
b1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVM
aXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAog
ICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhh
c1JldHVyblZhbHVlKSB7CiAgICAgICAgICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAg
LTE3MTIsNiArMTcyOCw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5kaWYKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAg
ICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJbmZvKCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsK
KwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBHZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0
LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1
bXAoKSk7CkBAIC0xNzIzLDggKzE3NDAsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9m
Qnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdp
c3RlclByZXNlcnZhdGlvbiksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAg
aW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRl
Lm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1Vz
ZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsKKyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFsdWUgPSBpc0dldHRlcigpOwogICAgICAgICAgICAg
cmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNS
ZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyArMTg2MiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc2tp
cEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVyQnJhbmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNo
R1BSKSk7CiAKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAg
ICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOworCisgICAgICAgICAgICBSZWdpc3RlclNldCBleHRy
YVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgaWYgKGNv
ZGVCbG9jay0+dXNlRGF0YUlDKCkpCisgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCisgICAgICAgICAgICBhdXRv
IHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdp
dGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisKICAgICAgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0
aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAgICBhdXRvIG9w
ZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtMTg3NSw2ICsxODk5
LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHVi
SW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgIGlm
IChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBh
bGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52YWxp
ZEdQUlJlZzsKQEAgLTE5MzMsNiArMTk1OSwxMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKICAgICAgICAgICAgICAgICBleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIpOwogICAgICAgICAgICAgICAgIGV4dHJhUmVn
aXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdzKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAg
ICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpCisgICAgICAgICAgICAgICAgICAg
IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRp
ZgogICAgICAgICAgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGls
bFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoZXh0cmFS
ZWdpc3RlcnNUb1ByZXNlcnZlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBq
aXQuc3RvcmUzMigKQEAgLTIwMzEsNiArMjA2MSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJl
Z3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKKyAgICAgICAgaWYgKHN0dWJJ
bmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhz
Y3JhdGNoR1BSKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZSgpLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0aW9u
KTsKQEAgLTIyMDMsNiArMjIzNSwxMDMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpjaGVja0NvbnNpc3Rl
bmN5KFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCitib29sIEFjY2Vzc0Nhc2U6OmNhbkJlU2hhcmVkKGNvbnN0IEFjY2Vzc0Nhc2UmIGxo
cywgY29uc3QgQWNjZXNzQ2FzZSYgcmhzKQoreworICAgIC8vIFdlIGRvIG5vdCBjYXJlIG1fc3Rh
dGUuCisgICAgLy8gQW5kIHdlIHNheSAiZmFsc2UiIGlmIGVpdGhlciBvZiB0aGVtIGhhdmUgbV9w
b2x5UHJvdG9BY2Nlc3NDaGFpbi4KKyAgICBpZiAobGhzLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4g
fHwgcmhzLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobGhzLmFkZGl0aW9uYWxTZXQoKSB8fCByaHMuYWRkaXRpb25hbFNldCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobGhzLm1fdHlwZSAhPSByaHMubV90eXBlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX29mZnNldCAhPSByaHMubV9vZmZzZXQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fdmlhUHJveHkgIT0gcmhzLm1f
dmlhUHJveHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fc3RydWN0dXJl
LmdldCgpICE9IHJocy5tX3N0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChsaHMubV9pZGVudGlmaWVyICE9IHJocy5tX2lkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fY29uZGl0aW9uU2V0ICE9IHJocy5tX2NvbmRpdGlv
blNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChsaHMubV90eXBlKSB7
CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgVHJhbnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToK
KyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6Cisg
ICAgY2FzZSBSZXBsYWNlOgorICAgIGNhc2UgTWlzczoKKyAgICBjYXNlIEdldEdldHRlcjoKKyAg
ICBjYXNlIEluSGl0OgorICAgIGNhc2UgSW5NaXNzOgorICAgIGNhc2UgQXJyYXlMZW5ndGg6Cisg
ICAgY2FzZSBTdHJpbmdMZW5ndGg6CisgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6Cisg
ICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFu
ZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKKyAgICBjYXNlIEluZGV4ZWRJbnQzMkxvYWQ6
CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRDb250aWd1b3Vz
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0b3JhZ2VMb2FkOgorICAgIGNhc2UgSW5kZXhl
ZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9h
ZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVk
VHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFt
cGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2Ug
SW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJ
bnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5z
dGFuY2VPZkdlbmVyaWM6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBHZXR0ZXI6
CisgICAgY2FzZSBTZXR0ZXI6IHsKKyAgICAgICAgLy8gR2V0dGVyIGFuZCBTZXR0ZXIgcmVsaWVz
IG9uIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgc2hhcmluZyBpbXBvc3NpYmxlLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2FzZSBDdXN0b21WYWx1ZUdldHRlcjoKKyAgICBj
YXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6Cisg
ICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjogeworICAgICAgICAvLyBUaGV5IGFyZSBlbWJl
ZGRpbmcgSlNHbG9iYWxPYmplY3QgdGhhdCBhcmUgbm90IHRpZWQgdG8gc2hhcmluZyBKSVRTdHVi
Um91dGluZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNhc2UgSW50cmlu
c2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8SW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX2ludHJpbnNpY0Z1bmN0aW9u
ID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsKKyAgICB9CisKKyAgICBjYXNlIE1vZHVsZU5h
bWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPE1vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBsaHNkLm1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmplY3QKKyAgICAgICAgICAgICYmIGxo
c2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNkLm1fbW9kdWxlRW52aXJvbm1lbnQKKyAgICAg
ICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9PSByaHNkLm1fc2NvcGVPZmZzZXQ7CisgICAg
fQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0OgorICAgIGNhc2UgSW5zdGFuY2VPZk1pc3M6IHsK
KyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4oKTsKKyAg
ICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4oKTsKKyAgICAg
ICAgcmV0dXJuIGxoc2QubV9wcm90b3R5cGUgPT0gcmhzZC5tX3Byb3RvdHlwZTsKKyAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCmluZGV4IGJk
ZDFiMjM3ZDYxOGEyY2NlODI3MjBmNzJjYTc1MzdkZTNmYTcwNjguLjBlMmUyNjM4MjU0Mjg3ZjVm
NWUyNjlmZjM4YTZjZGZhNDk2YTBlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuaApAQCAtMjgsMTAgKzI4LDEzIEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJHQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaCIKKyNpbmNsdWRlICJKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIK
ICNpbmNsdWRlICJQb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9ySGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNzksNyArODIsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihBY2Nlc3NDYXNlKTsKIC8vIFdlIHdpbGwgc29tZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNj
ZXNzQ2FzZXMgaW4gdGhlIFBvbHltb3JwaGljQWNjZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGlu
ZwogLy8gY29kZS4gVGhpcyBhbGxvd3MgdXMgdG8gb25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUg
YWNjdW11bGF0ZWQgKGhvcGVmdWxseSkgbW9yZSB0aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2Uu
Ci1jbGFzcyBBY2Nlc3NDYXNlIHsKK2NsYXNzIEFjY2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8QWNjZXNzQ2FzZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJ
VEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwogcHVibGljOgogICAgIGVudW0gQWNjZXNz
VHlwZSA6IHVpbnQ4X3QgewpAQCAtMTQ3LDE5ICsxNTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7
CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nl
c3NDYXNlVHlwZShhcmd1bWVudHMuLi4pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNl
dCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxwdHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAor
ICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
KTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRl
KFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3Jl
YXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSk7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgU3RydWN0dXJlKik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUp
OworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0m
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQpAQCAtMjUzLDExICsyNTYsMzcgQEAgY2xhc3MgQWNjZXNzQ2Fz
ZSB7CiAjZWxzZQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVj
dHVyZVN0dWJJbmZvJikgeyB9CiAjZW5kaWYKLSAgICAKKworICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoKG1fY29uZGl0aW9uU2V0Lmhh
c2goKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdHlwZSksIG1fdmlhUHJveHksIG1fc3RydWN0
dXJlLmdldCgpLCBtX29mZnNldCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgY2FuQmVTaGFy
ZWQoY29uc3QgQWNjZXNzQ2FzZSYsIGNvbnN0IEFjY2Vzc0Nhc2UmKTsKKwogcHJvdGVjdGVkOgog
ICAgIEFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwotICAgIEFj
Y2Vzc0Nhc2UoQWNjZXNzQ2FzZSYmKSA9IGRlZmF1bHQ7Ci0gICAgQWNjZXNzQ2FzZShjb25zdCBB
Y2Nlc3NDYXNlJiBvdGhlcikgPSBkZWZhdWx0OworICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYm
IG90aGVyKQorICAgICAgICA6IG1fdHlwZShXVEZNb3ZlKG90aGVyLm1fdHlwZSkpCisgICAgICAg
ICwgbV9zdGF0ZShXVEZNb3ZlKG90aGVyLm1fc3RhdGUpKQorICAgICAgICAsIG1fdmlhUHJveHko
V1RGTW92ZShvdGhlci5tX3ZpYVByb3h5KSkKKyAgICAgICAgLCBtX29mZnNldChXVEZNb3ZlKG90
aGVyLm1fb2Zmc2V0KSkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShXVEZNb3ZlKG90aGVyLm1fc3Ry
dWN0dXJlKSkKKyAgICAgICAgLCBtX2NvbmRpdGlvblNldChXVEZNb3ZlKG90aGVyLm1fY29uZGl0
aW9uU2V0KSkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0NoYWluKFdURk1vdmUob3RoZXIu
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikpCisgICAgICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUo
b3RoZXIubV9pZGVudGlmaWVyKSkKKyAgICB7IH0KKworICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNj
ZXNzQ2FzZSYgb3RoZXIpCisgICAgICAgIDogbV90eXBlKG90aGVyLm1fdHlwZSkKKyAgICAgICAg
LCBtX3N0YXRlKG90aGVyLm1fc3RhdGUpCisgICAgICAgICwgbV92aWFQcm94eShvdGhlci5tX3Zp
YVByb3h5KQorICAgICAgICAsIG1fb2Zmc2V0KG90aGVyLm1fb2Zmc2V0KQorICAgICAgICAsIG1f
c3RydWN0dXJlKG90aGVyLm1fc3RydWN0dXJlKQorICAgICAgICAsIG1fY29uZGl0aW9uU2V0KG90
aGVyLm1fY29uZGl0aW9uU2V0KQorICAgICAgICAsIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4ob3Ro
ZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAgICAgICAgLCBtX2lkZW50aWZpZXIob3RoZXIu
bV9pZGVudGlmaWVyKQorICAgIHsgfQogCiAgICAgQWNjZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0
IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0ZTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUg
PSBQcmltb3JkaWFsOyB9CkBAIC0yNzUsNyArMzA0LDcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAK
ICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIG9mIGhvdyBBY2Nlc3NDYXNl
IHB1dHMgcG9zdC1nZW5lcmF0aW9uIHRoaW5ncyBpbnRvIGl0c2VsZi4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU2Ci0gICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZjxB
Y2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0OwogCiAgICAgLy8gUGVyZm9ybSBhbnkgYWN0aW9uIHRo
YXQgbXVzdCBiZSBwZXJmb3JtZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVwb2NoIGluIHdoaWNo
IHRoZSBjYXNlCiAgICAgLy8gd2FzIGNyZWF0ZWQuIFJldHVybnMgYSBzZXQgb2Ygd2F0Y2hwb2lu
dCBzZXRzIHRoYXQgd2lsbCBuZWVkIHRvIGJlIHdhdGNoZWQuCkBAIC0zMTUsNiArMzQ0LDE0NiBA
QCBjbGFzcyBBY2Nlc3NDYXNlIHsKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKIH07CiAKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEKFNoYXJlZEpJVFN0dWJTZXQpOworcHVibGljOgorICAgIFNoYXJlZEpJVFN0dWJTZXQo
KSA9IGRlZmF1bHQ7CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0cnVjdCBLZXkgewor
ICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0OworCisgICAgICAgICAgICBLZXkoR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BSUmVnIGV4dHJhR1BSLCBHUFJSZWcgc3R1YkluZm9H
UFIsIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmUqIHdyYXBwZWQpCisgICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAg
ICAgICAgICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQorICAgICAgICAgICAgICAgICwgbV92
YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAgICAgICAgICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIp
CisgICAgICAgICAgICAgICAgLCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAg
ICAgICAgICwgbV91c2VkUmVnaXN0ZXJzKHVzZWRSZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0K
KworICAgICAgICAgICAgS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAg
ICAgICAgICAgICA6IG1fd3JhcHBlZChiaXR3aXNlX2Nhc3Q8UG9seW1vcnBoaWNBY2Nlc3NKSVRT
dHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpKQorICAgICAgICAgICAgeyB9
CisKKyAgICAgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3dyYXBwZWQgPT0gYml0d2lzZV9jYXN0PFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorCisgICAgICAgICAgICBmcmll
bmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBhLm1fd3JhcHBlZCA9PSBiLm1fd3JhcHBlZAor
ICAgICAgICAgICAgICAgICAgICAmJiBhLm1fYmFzZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAg
ICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIgPT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAg
ICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBiLm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAg
ICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIubV9zdHViSW5mb0dQUgorICAgICAgICAgICAg
ICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSog
bV93cmFwcGVkIHsgbnVsbHB0ciB9OworICAgICAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAg
ICAgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fZXh0cmFH
UFI7CisgICAgICAgICAgICBHUFJSZWcgbV9zdHViSW5mb0dQUjsKKyAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgfTsKKworICAgICAgICB1c2luZyBLZXlU
cmFpdHMgPSBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8S2V5PjsKKworICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBLZXkmIHApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcC5t
X3dyYXBwZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4g
cC5tX3dyYXBwZWQtPmhhc2goKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0
cnVjdCBTZWFyY2hlciB7CisgICAgICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAgICAgICAgICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hlcikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91
dGluZTo6Y29tcHV0ZUhhc2goc2VhcmNoZXIubV9jYXNlcywgc2VhcmNoZXIubV93ZWFrU3RydWN0
dXJlcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IEhhc2g6OktleSBhLCBjb25zdCBTZWFyY2hlciYgYikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAg
ICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAg
ICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYm
IGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAg
JiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3QgYXV0byYgYUNhc2VzID0gYS5tX3dyYXBwZWQtPmNhc2VzKCk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJDYXNlcyA9IGIubV9jYXNlczsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGFDYXNlcy5zaXplKCkgIT0gYkNhc2VzLnNpemUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYkNhc2VzLnNpemUoKTsgKytpbmRleCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFBY2Nlc3NDYXNlOjpjYW5CZVNoYXJlZCgqYUNhc2Vz
W2luZGV4XSwgKmJDYXNlc1tpbmRleF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBj
b25zdCBhdXRvJiBhV2VhayA9IGEubV93cmFwcGVkLT53ZWFrU3RydWN0dXJlcygpOworICAgICAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvJiBiV2VhayA9IGIubV93ZWFrU3RydWN0dXJlczsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGFXZWFrLnNpemUoKSAhPSBiV2Vhay5zaXplKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBhV2Vhay5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhV2Vha1tpXSAhPSBiV2Vha1tpXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOworICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsK
KyAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7CisgICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BS
OworICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIGNvbnN0IEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mIG1fY2FzZXM7CisgICAgICAgIGNvbnN0IEZp
eGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYgbV93ZWFrU3RydWN0dXJlczsKKyAgICB9OworCisgICAg
c3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIHN0dWItPmhhc2goKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IEhhc2g6OktleSYga2V5LCBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJS
b3V0aW5lKiBzdHViKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4ga2V5Lm1fd3JhcHBl
ZCA9PSBzdHViOworICAgICAgICB9CisgICAgfTsKKworICAgIHZvaWQgYWRkKEhhc2g6OktleSYm
IGtleSkKKyAgICB7CisgICAgICAgIG1fc3R1YnMuYWRkKFdURk1vdmUoa2V5KSk7CisgICAgfQor
CisgICAgdm9pZCByZW1vdmUoUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSogc3R1YikK
KyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1fc3R1YnMuZmluZDxQb2ludGVyVHJhbnNsYXRv
cj4oc3R1Yik7CisgICAgICAgIGlmIChpdGVyICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAg
ICBtX3N0dWJzLnJlbW92ZShpdGVyKTsKKyAgICB9CisKKyAgICBQb2x5bW9ycGhpY0FjY2Vzc0pJ
VFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJjaGVyJiBzZWFyY2hlcikKKyAgICB7CisgICAg
ICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6
OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKGVudHJ5ICE9IG1fc3R1YnMuZW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPm1fd3JhcHBlZDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8SGFzaDo6S2V5LCBIYXNo
LCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXgg
ZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVhNTU1MzY3OWM4NC4uYjIyNmZiMTZmNWRiNzQ0
ZjdmZTU1NmJlYzc1OGQ3Y2VhMDRlNGFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeVZhbEluZm8uaApAQCAtMjQ0LDEwICsyNDQsOCBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsK
ICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJu
YWxQdHJUYWc+IG5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PiBiYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4g
ZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJn
ZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0
aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJn
ZXQpCisgICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9u
ZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRI
b3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0
aFRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMtPm5vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVt
cDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZUp1bXAgPSBiYWRUeXBlSnVtcDsKICAgICAgICAgdGhp
cy0+ZXhjZXB0aW9uSGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXI7CiAgICAgICAgIHRoaXMtPmRv
bmVUYXJnZXQgPSBkb25lVGFyZ2V0OwogICAgICAgICB0aGlzLT5iYWRUeXBlTmV4dEhvdFBhdGhU
YXJnZXQgPSBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQ7CkBAIC0yNjIsOCArMjYwLDIxIEBAIHN0
cnVjdCBCeVZhbEluZm8gewogCiAgICAgREVDTEFSRV9WSVNJVF9BR0dSRUdBVEU7CiAKLSAgICBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKLSAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOworICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJ
bmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZv
LCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQorCisgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPiBtX3Nsb3dPcGVyYXRpb247CisKKyAgICB1bmlvbiB7CisgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25vdEluZGV4SnVtcFRhcmdldDsKKyAgICAg
ICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX25vdEluZGV4SnVtcDsKKyAg
ICB9OworICAgIHVuaW9uIHsKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7CisgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsKKyAgICB9OworCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlcjsKICAgICBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0OwogICAgIENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5k
ZXggZmNmMTRmZGQzYTIwNTEzODkxNmM3MGY4ODVhODFlZGEwYjAzNzA5MC4uODBmNDA0NWEzMzE0
YzI2NTU0MjE0Nzg1Y2UxNjAzMDVkYmY3N2U5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTQyMCwxMiArNDIwLDEyIEBAIHZvaWQg
Q2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCgpCiAgICAgQVNTRVJUKHUuY29kZUlD
Lm1fY2FsbExvY2F0aW9uKTsKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGZhc3RQYXRoU3RhcnQoKSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJ
VENvZGVPdmVyKGZhc3RQYXRoU3RhcnQoKSwgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNjb3Bl
ZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAg
ICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAgICAgICBqaXQuYWRkTGlu
a1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgbGlu
a0J1ZmZlci5saW5rKGp1bXAsIHNsb3dQYXRoU3RhcnQoKSk7CiAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSwgImluaXRpYWxpemUgZGlyZWN0IGNhbGwiKTsKKyAgICAgICAgfSksICJpbml0aWFs
aXplIGRpcmVjdCBjYWxsIik7CiAgICAgfSBlbHNlCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoTmVhckNhbGwodS5jb2RlSUMubV9jYWxsTG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7
CiB9CkBAIC00MzYsMTEgKzQzNiwxMSBAQCB2b2lkIENhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2Fs
bFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiB0YXJnZXQpCiAKICAgICBp
ZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZhc3RQYXRoU3RhcnQo
KSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKGZhc3RQYXRoU3RhcnQo
KSwgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRK
SVRDb2RlT3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVy
cyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgIC8vIFdlIHJlc2VydmVk
IHRoaXMgbWFueSBieXRlcyBmb3IgdGhlIGp1bXAgYXQgZmFzdFBhdGhTdGFydCgpLiBNYWtlIHRo
YXQKICAgICAgICAgICAgIC8vIGNvZGUgbm9wcyBub3cgc28gd2UgZmFsbCB0aHJvdWdoIHRvIHRo
ZSBqdW1wIHRvIHRoZSBmYXN0IHBhdGguCi0gICAgICAgICAgICBqaXQuZW1pdE5vcHMoQ0NhbGxI
ZWxwZXJzOjpwYXRjaGFibGVKdW1wU2l6ZSgpKTsgCi0gICAgICAgIH0sICJTZXR0aW5nIGRpcmVj
dCBjYWxsIHRhcmdldCIpOworICAgICAgICAgICAgaml0LmVtaXROb3BzKENDYWxsSGVscGVyczo6
cGF0Y2hhYmxlSnVtcFNpemUoKSk7CisgICAgICAgIH0pLCAiU2V0dGluZyBkaXJlY3QgY2FsbCB0
YXJnZXQiKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHUu
Y29kZUlDLm1fY2FsbExvY2F0aW9uLCB0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGIxMDkwYjVkNDE4ZTgzOWFlNmM4MjdhNjJmMGNmZDEz
ZDkzNzE3ZDYuLmQzZDEwNmZkNTQ1MDQzYWU1NDFkMGQ2MTE4NTNkZWVlNWI3YjAzZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTQyMyw2ICs0MjMs
MTEgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBy
ZXR1cm4gaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KKworICAgIGJv
b2wgdXNlRGF0YUlDKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBKSVRDb2RlOjp1c2VE
YXRhSUMoaml0VHlwZSgpKTsKKyAgICB9CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICBDb2Rl
QmxvY2sqIHJlcGxhY2VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggMGMzYzQxMjFkNTg2
NjI3ZWE5NTA0MWJmNzE3MGRjN2M5ZDUwYWJiYS4uNzY3MWQ4N2IxZWE3NDlkYzM0NTZmNzc2NWFj
MDZjNGE4YmNmYjJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBHZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZQogICAgIG1fY3VzdG9tU2xvdEJhc2Uuc2V0TWF5QmVOdWxsKHZt
LCBvd25lciwgY3VzdG9tU2xvdEJhc2UpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEdldHRl
clNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAgIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRT
ZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0
b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwKICAgICBzdGQ6Om9wdGlvbmFsPERP
TUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vz
c0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQpAQCAtNjEsMTggKzYxLDE4IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRp
dGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5l
dyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zm
c2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIGN1
c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogICAgIHJlc3Vs
dC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7CiAgICAgcmVzdWx0LT5tX2N1c3RvbUFj
Y2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+
KGN1c3RvbUdldHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwK
K1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwKICAgICBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4sIGJvb2wgdmlhUHJveHks
IAogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21TZXR0ZXIsIEpT
T2JqZWN0KiBjdXN0b21TbG90QmFzZSkKIHsKICAgICBBU1NFUlQodHlwZSA9PSBTZXR0ZXIgfHwg
dHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCB0eXBlID09IEN1c3RvbUFjY2Vzc29yU2V0dGVy
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5l
dyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zm
c2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIG51bGxwdHIsIGN1c3RvbVNs
b3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwg
aWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIG51
bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwog
ICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9IGN1c3RvbVNldHRlciA/IEZ1bmN0aW9uUHRy
PEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21TZXR0ZXIpIDogbnVsbHB0cjsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtOTEsOSArOTEsOSBAQCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdldHRlclNldHRlckFjY2Vzc0Nhc2UmIG90aAog
ICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0
CitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3
IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVz
ZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzksNiArMTM5LDggQEAgdm9p
ZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2Nh
dG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
LmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgaWYgKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRj
aEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNlR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTIy
Myw2ICsyMjUsMTEgQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBmb3IgKEZQUlJlZyBy
ZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVn
KTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6cmVn
aXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygpOworICAgIGlmIChjb2RlQmxvY2stPnVzZURh
dGFJQygpKQorICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KEFSTTY0UmVnaXN0
ZXJzOjpscik7CisjZW5kaWYKIAogICAgIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zIHBhcmFtcyhz
dGF0ZS5tX3ZtLCBXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBT
Y3JhdGNoKSk7CiAgICAgc25pcHBldC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQsIHBhcmFtcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaAppbmRleCBhODQ4ODQ1OGY0YWJkMmFhZDJlYmFmNjJiMjhhMzNjNDE4NjA0MDg3
Li5jMzY3M2E0ZjE0YmYwNzg1NjYwYzU2NGI3ODMyYTVkYjQ0NmI3MjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmgKQEAgLTUzLDE3ICs1MywxNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGZpbmFs
IDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogCiAgICAgdm9pZCBlbWl0RE9NSklUR2V0
dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiwg
R1BSUmVnIGJhc2VGb3JHZXRHUFIpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAg
ICAgIFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNl
dCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRlciwKICAgICAg
ICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBzdGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFu
bm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIs
IEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2aWFQcm94eSA9IGZhbHNlLAogICAgICAgICBG
dW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tU2V0dGVyID0gbnVsbHB0ciwg
SlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBs
KFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nh
c2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB+R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5s
aW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuY3BwCmluZGV4IDgzMmNkMGI4ZmFmZDk4ZDBiMjg1OTNjYmJiMDU3YmFlOTZmYjMyMWEuLjQ4
NDEwMTM5ZGMyZjhjMGQ1YzgwYTJmZjkwNWMzYWE2YTEzNWRmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCkBAIC0yMTYsNiArMjE2LDgg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNjcmF0Y2hSZWdpc3RlcihTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVRh
Z0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8udmFsdWVUYWdHUFIpOwogI2VuZGlm
CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgR1BSUmVnIHNj
cmF0Y2ggPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAgICAgaWYgKGFsbG9jYXRv
ci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKQEAg
LTM3OSwxOSArMzgxLDcwIEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2Vz
cyhTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSoKICAgICByZXR1cm4gbGlu
a2VkQ29kZUlubGluZTsKIH0KIAotdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAo
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4gdGFyZ2V0KQordm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJ
bkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiB0YXJnZXQpCiB7Ci0gICAgQ0NhbGxIZWxwZXJzIGppdDsKKyAgICBpZiAoY29kZUJsb2Nr
LT51c2VEYXRhSUMoKSkgeworICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworICAg
IENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKHN0dWJJbmZvLnN0YXJ0LnJldGFnZ2VkPEpT
SW50ZXJuYWxQdHJUYWc+KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0o
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVk
IGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9m
IGFuIElDLgorICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICBqaXQuYWRk
TGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKKyAgICAgICAgfSk7CisgICAgfSksICJJbmxpbmVB
Y2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOworfQogCi0gICAgLy8gV2UgZG9uJ3QgbmVl
ZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0
aGUgbWlkZGxlIG9mIGFuIElDLgotICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFs
c2U7Ci0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5t
X2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxp
bmVDYWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9u
KTsKLSAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVmZmVyLmlzVmFsaWQoKSk7Ci0gICAgbGlua0J1
ZmZlci5saW5rKGp1bXAsIHRhcmdldCk7Cit2b2lkIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit7
CisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpIHsKKyAgICAgICAgLy8gSWYgaXQgaXMg
bm90IEdldEJ5SWQtbGlrZS10aGluZywgd2UgZG8gbm90IGVtaXQgbm9wIHNsZWQgKGUuZy4gR2V0
QnlWYWwpLgorICAgICAgICAvLyBUaGUgY29kZSBpcyBhbHJlYWR5IGFuIGluZGlyZWN0IGp1bXAs
IGFuZCBvbmx5IHRoaW5nIHdlIHNob3VsZCBkbyBpcyByZXBsYWNpbmcgbV9jb2RlUHRyLgorICAg
ICAgICBpZiAoc3R1YkluZm8uaGFzQ29uc3RhbnRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICAv
LyBJZiBtX2NvZGVQdHIgaXMgcG9pbnRpbmcgdG8gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0
aW9uLCB0aGlzIG1lYW5zIHRoYXQgSW5saW5lQWNjZXNzIGNvZGUgaXMgbm90IGEgc3R1YiBvbmUu
CisgICAgICAgICAgICAvLyBXZSByZXdyaXRlIHRoaXMgd2l0aCB0aGUgc3R1Yi1iYXNlZCBkaXNw
YXRjaGluZyBjb2RlIG9uY2UsIGFuZCBjb250aW51ZSB1c2luZyBpdCB1bnRpbCB3ZSByZXNldCB0
aGUgY29kZS4KKyAgICAgICAgICAgIGlmIChzdHViSW5mby5tX2NvZGVQdHIuZXhlY3V0YWJsZUFk
ZHJlc3MoKSA9PSBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKSkgeworICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKHN0
dWJJbmZvLnN0YXJ0LnJldGFnZ2VkPEpTSW50ZXJuYWxQdHJUYWc+KCksIHNjb3BlZExhbWJkYTx2
b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZzdHViSW5mbyks
IHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBqaXQuY2FsbChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGRvbmVMb2NhdGlvbiA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XShMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgZG9uZUxvY2F0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSksICJJbmxpbmVB
Y2Nlc3M6IGxpbmtpbmcgc3R1YiBjYWxsIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAg
fQogCi0gICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIklubGluZUFjY2Vz
czogbGlua2luZyBjb25zdGFudCBqdW1wIik7CisgICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29k
ZU92ZXIoc3R1YkluZm8uc3RhcnQucmV0YWdnZWQ8SlNJbnRlcm5hbFB0clRhZz4oKSwgc2NvcGVk
TGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91
bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgICAgIGF1dG8ganVt
cCA9IGppdC5qdW1wKCk7CisgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQp
OworICAgICAgICB9KTsKKyAgICB9KSwgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBq
dW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxw
ZXJzOjplbWl0SklUQ29kZU92ZXIoc3R1YkluZm8uc3RhcnQucmV0YWdnZWQ8SlNJbnRlcm5hbFB0
clRhZz4oKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNh
dXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisg
ICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisgICAgICAgIGF1dG8gc2xvd1BhdGhTdGFy
dExvY2F0aW9uID0gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgICAgICBqaXQu
YWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsoanVtcCwgc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICAgICAgfSk7
CisgICAgfSksICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOworfQorCit2
b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFj
Y2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQor
eworICAgIHJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVC
bG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUFjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4ZjIyNjQwNmM3ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQu
LmIxMDJhZTAyMzY1OTM2MGUxZDM2ZGU5MmRkZDE0NGNkMmQyMjI1MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKQEAgLTEwNCwxMCArMTA0LDE0
IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgc3RhdGljIGJvb2wgaXNDYWNoZWFibGVBcnJh
eUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMgYm9vbCBp
c0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBi
b29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7Ci0g
ICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CiAgICAgc3RhdGljIGJvb2wgZ2Vu
ZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mLCBTdHJ1Y3R1cmUqKTsKICAgICBz
dGF0aWMgYm9vbCBnZW5lcmF0ZVN0cmluZ0xlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCisg
ICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nl
c3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXBJbkFj
Y2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5B
Y2Nlc3NOb3RVc2luZ0lubGluZUFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
OworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7CisKICAgICAvLyBUaGlzIGlzIGhlbHBmdWwgd2hlbiBkZXRlcm1p
bmluZyB0aGUgc2l6ZSBvZiBhbiBJQyBvbgogICAgIC8vIHZhcmlvdXMgcGxhdGZvcm1zLiBXaGVu
IGFkZGluZyBhIG5ldyB0eXBlIG9mIElDLCBpbXBsZW1lbnQKICAgICAvLyBpdHMgcGxhY2Vob2xk
ZXIgY29kZSBoZXJlLCBhbmQgbG9nIHRoZSBzaXplLiBUaGF0IHdheSB3ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAK
aW5kZXggMjFmMjQ1M2JhYzdhZmFlNzcyNDFjYjA0YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4ZDY4
YjYyYmJlMDZlMDlhYTBiMzdlNzdjMTEwYzY2OTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0zMiwx
MSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTT2JqZWN0KiBwcm90b3R5cGUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFuY2VP
ZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNl
dCwgcHJvdG90eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJv
dG90eXBlKSk7CiB9CiAKIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50
U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5IEBA
IHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENv
bW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CiAgICAgb3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBl
ID0gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNl
PiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2Fz
ZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNj
ZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dGFuY2VPZkFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
YW5jZU9mQWNjZXNzQ2FzZS5oCmluZGV4IDY5ZTJiMzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5OWQ2
MDI3Nzg0N2MuLmFkNzFlNjk0MmY0NDkyZmE4YWJkZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2Fz
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNz
Q2FzZS5oCkBAIC0zNCwxNSArMzQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0YW5j
ZU9mQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAgICB1
c2luZyBCYXNlID0gQWNjZXNzQ2FzZTsKKyAgICBmcmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsKICAg
ICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBz
dGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqLCBBY2Nl
c3NUeXBlLCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsCiAg
ICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUpOwogICAgIAogICAgIEpTT2JqZWN0KiBwcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQogICAgIAogICAgIHZvaWQg
ZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8
QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB+SW5zdGFuY2VPZkFj
Y2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFkYzIz
MzY5MzNkNjc2YzNiZTllOTBjNjAxODlhMTMxNzM4MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZlNjgy
OTY5Y2RlNDMwZjMyZTdkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4ICsz
OSwxOCBAQCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaAogICAgIG1faW50cmluc2ljRnVuY3Rpb24u
c2V0KHZtLCBvd25lciwgaW50cmluc2ljRnVuY3Rpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFj
Y2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJp
bnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjp+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
OjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlPiByZXN1bHQobmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuaAppbmRleCA2Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1M2Rl
NTU5YjY0NDc2NDQ2Li40N2FmMWEyYmYxZGQ2Y2I5MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgSW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9v
bCBjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2
b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENh
Y2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBS
ZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2Fz
ZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5j
dGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsK
KyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIH5JbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAppbmRl
eCAyOTU2ZGQwY2Q1ZDBlYWU2MWEwOGUzZGM3NjViZjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFmNDgx
NTU2NjE1MTcwODVhODhlMTlhMDczYWJlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCkBA
IC00NSwxOCArNDUsMTggQEAgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX21vZHVsZUVu
dmlyb25tZW50LnNldCh2bSwgb3duZXIsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZp
cm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQorUmVm
PEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCog
bW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQogewotICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVu
dmlyb25tZW50LCBzY29wZU9mZnNldCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOwogfQogCiBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlOjp+TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpj
bG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6
Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VBY2Nl
c3NDYXNlPiByZXN1bHQobmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgq
dGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2UuaAppbmRleCA5MmEwYjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNkMDVi
ZjVkNzkzMzc3Li5kNDM5NTBiZjA2MzEzN2NmNzczYjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NDYXNlIHsKICAgICBKU01vZHVsZUVudmly
b25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJv
bm1lbnQuZ2V0KCk7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NvcGVPZmZzZXQ7IH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQp
OworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVu
dmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29u
c3QgZmluYWw7CiAKICAgICB2b2lkIGVtaXQoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxsVGhyb3VnaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgK
aW5kZXggM2QyMzNmYWQxMzM5MmRlMDJiZjNiM2M5N2ZkMDY0N2YwZDFhYWZmMy4uYmU3M2ZkYjVl
NWE3YTlmZjFiNzUyNzIwMjUyOTNjYjYyYTU4NDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwzMiBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1f
ZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVyOworICAgICAgICBmb3IgKGF1dG8mIGNvbmRp
dGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRkKGhhc2hlciwgY29uZGl0aW9uLmhhc2goKSk7
CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworICAgIH0KKworICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGxocywgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIHJocykKKyAgICB7CisgICAgICAgIGlmIChsaHMu
c2l6ZSgpICE9IHJocy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGF1dG8gbGl0ZXIgPSBsaHMuYmVnaW4oKTsKKyAgICAgICAgYXV0byByaXRlciA9IHJocy5iZWdp
bigpOworICAgICAgICBmb3IgKDsgbGl0ZXIgIT0gbGhzLmVuZCgpOyArK2xpdGVyLCArK3JpdGVy
KSB7CisgICAgICAgICAgICBpZiAoISgqbGl0ZXIgPT0gKnJpdGVyKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgbGhzLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICEobGhzID09IHJocyk7CisgICAgfQogICAgIAogICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGZvck9iamVjdChKU09iamVjdCopIGNvbnN0OwogICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGZvckNvbmRpdGlvbktpbmQoUHJvcGVydHlDb25kaXRpb246OktpbmQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAKaW5kZXggMDNhMmY2NzFmNzQ0NmU0YWNhZGNkNzRiOWM4N2U4OWE3ZDA5
YTAxNS4uYzU3NTFhODkzZDlmNWM5NDEyYzQ2NGIxZWU4ZDBjZDQ2Nzg4ZWZjMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
CkBAIC01OSwxMCArNTksOSBAQCB2b2lkIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0LnByaW50KCI6IiwgbV9jb2RlKTsKIH0K
IAotdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24pCit2b2lkIEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24pCiB7Ci0gICAgV2F0Y2hwb2ludHNPblN0cnVj
dHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCgKLSAgICAg
ICAgd2F0Y2hwb2ludHMsIGppdC0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBjb25kaXRpb24pOwor
ICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5z
dGFsbFdhdGNocG9pbnQod2F0Y2hwb2ludHMsIGNvZGVCbG9jaywgc3R1YkluZm8sIGNvbmRpdGlv
bik7CiB9CiAKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCkBA
IC03Myw3ICs3MiwxMCBAQCB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0
Y2goKQogdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQoKQogewogICAgIHJlc3Rv
cmVTY3JhdGNoKCk7Ci0gICAgc3VjY2Vzcy5hcHBlbmQoaml0LT5qdW1wKCkpOworICAgIGlmIChq
aXQtPmNvZGVCbG9jaygpLT51c2VEYXRhSUMoKSkKKyAgICAgICAgaml0LT5yZXQoKTsKKyAgICBl
bHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsKIH0KIAogY29uc3QgUmVn
aXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKQpA
QCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2UKICAgICB9OwogfQog
Ci1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFj
a0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+IFNwaWxsU3RhdGUKK2F1dG8gQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRF
eGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkgLT4gU3BpbGxTdGF0ZQogewogICAg
IFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBhbGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMoKTsK
ICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBs
aXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBleHRy
YVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZv
clJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2
ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnMsIGV4dHJhU3RhY2tQ
YWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQb2x5bW9ycGhpY0FjY2Vzczo6flBvbHltb3Jw
aGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nl
c3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2Vy
LCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxD
YXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2Fz
ZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgLy8gICBhZGQgbW9yZSB0aGluZ3MgYWZ0ZXIg
ZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBlbnN1cmUgdGhhdCB0aGUgb3JpZ2luYWxDYXNl
c1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNhdGVzLgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3ND
YXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JpZ2luYWxD
YXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAgICAgIFJl
ZlB0cjxBY2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7
CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYgaXQgaXMgbm90IHJlcGxhY2VkIGJ5IHRoZSBz
dWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0LgogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7
CkBAIC0yODcsOCArMjkwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0Fj
Y2Vzczo6YWRkQ2FzZXMoCiAgICAgICAgIGNhc2VzVG9BZGQuYXBwZW5kKFdURk1vdmUobXlDYXNl
KSk7CiAgICAgfQogCi0gICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2Up
Ci0gICAgICAgIGRhdGFMb2coImNhc2VzVG9BZGQ6ICIsIGxpc3REdW1wKGNhc2VzVG9BZGQpLCAi
XG4iKTsKKyAgICBkYXRhTG9nTG5JZihQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3Nl
LCAiY2FzZXNUb0FkZDogIiwgbGlzdER1bXAoY2FzZXNUb0FkZCkpOwogCiAgICAgLy8gSWYgdGhl
cmUgYXJlbid0IGFueSBjYXNlcyB0byBhZGQsIHRoZW4gZmFpbCBvbiB0aGUgZ3JvdW5kcyB0aGF0
IHRoZXJlJ3Mgbm8gcG9pbnQgdG8gZ2VuZXJhdGluZyBhCiAgICAgLy8gbmV3IHN0dWIgdGhhdCB3
aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgb2xkIG9uZS4gUmV0dXJuaW5nIG51bGwgc2hvdWxkIHRl
bGwgdGhlIGNhbGxlciB0byBqdXN0CkBAIC0zMzksMTYgKzM0MSwxNSBAQCBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAgICAgbV9saXN0LmFw
cGVuZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwogICAgIH0KICAgICAKLSAgICBpZiAoUG9seW1vcnBo
aWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiQWZ0ZXIgYWRkQ2Fz
ZXM6IG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0KSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYo
UG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIkFmdGVyIGFkZENhc2VzOiBtX2xp
c3Q6ICIsIGxpc3REdW1wKG1fbGlzdCkpOwogCiAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQ6OkJ1ZmZlcmVkOwogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjphZGRDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8sIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Fj
Y2VzcykKIHsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdB
Y2Nlc3NlczsKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsK
ICAgICBuZXdBY2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4g
YWRkQ2FzZXMobG9ja2VyLCB2bSwgY29kZUJsb2NrLCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nl
c3NlcykpOwogfQpAQCAtMzU5LDkgKzM2MCwxMiBAQCBib29sIFBvbHltb3JwaGljQWNjZXNzOjp2
aXNpdFdlYWsoVk0mIHZtKSBjb25zdAogICAgICAgICBpZiAoIWF0KGkpLnZpc2l0V2Vhayh2bSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGZvciAoY29uc3QgV3JpdGVC
YXJyaWVyPEpTQ2VsbD4mIHdlYWtSZWZlcmVuY2UgOiBtX3dlYWtSZWZlcmVuY2VzKSB7Ci0gICAg
ICAgIGlmICghdm0uaGVhcC5pc01hcmtlZCh3ZWFrUmVmZXJlbmNlLmdldCgpKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9zdHViUm91dGluZSkgeworICAgICAgICBmb3Ig
KFN0cnVjdHVyZUlEIHdlYWtSZWZlcmVuY2UgOiBtX3N0dWJSb3V0aW5lLT53ZWFrU3RydWN0dXJl
cygpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVy
ZSh3ZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChzdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQxOSw4ICs0MjMsNyBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJl
bnRKU0xvYwogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKICAgICAKLSAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAg
ICAgICAgZGF0YUxvZygiUmVnZW5lcmF0ZSB3aXRoIG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0
KSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVy
Ym9zZSwgIlJlZ2VuZXJhdGUgd2l0aCBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCkpOwogCiAg
ICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHN0YXRlKHZtLCBnbG9iYWxPYmplY3QsIGVjbWFNb2Rl
KTsKIApAQCAtNDQwLDcgKzQ0Myw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBo
aWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5z
aWduZWQgc3JjSW5kZXggPSAwOwogICAgIHVuc2lnbmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGls
ZSAoc3JjSW5kZXggPCBtX2xpc3Quc2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAg
ICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgr
K10pOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVk
LCB0aGVuIHdlIGhhdmUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UK
ICAgICAgICAgLy8gZmFpbCB0byByZWdlbmVyYXRlLiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBz
dHJ1Y3R1cmVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzQ5
NCw4IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1Rh
Z0dQUiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52
LnRoaXNUYWdHUFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAKICAgICBzdGF0ZS5zY3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRj
aEdQUigpOwogCkBAIC01MDAsMTIgKzUwNSw2IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9s
eW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBl
cnMgaml0KGNvZGVCbG9jayk7Ci0gICAgc3RhdGUuaml0ID0gJmppdDsKLQotICAgIHN0YXRlLnBy
ZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQotICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVS
ZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKIAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxD
b2RlID0gZmFsc2U7CiAKQEAgLTUxOSwxNCArNTE4LDQzIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9jCiAgICAgICAgIGdlbmVyYXRlZEZpbmFsQ29kZSA9IHRydWU7CiAgICAgfQogCi0gICAgaWYg
KFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIk9w
dGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpLCAiXG4iKTsKLSAgICAKKyAgICBkYXRh
TG9nTG5JZihQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlLCAiT3B0aW1pemVkIGNh
c2VzOiAiLCBsaXN0RHVtcChjYXNlcykpOworCisgICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsK
KyAgICBib29sIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gZmFsc2U7CisgICAgYm9vbCBjYW5C
ZVNoYXJlZCA9IHRydWU7CisgICAgVmVjdG9yPEpTQ2VsbCo+IGNlbGxzVG9NYXJrOworICAgIEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4ga2V5cyhjYXNlcy5zaXplKCkpOworICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FzZXMpIHsKKyAgICAg
ICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7CisgICAg
ICAgIHN3aXRjaCAoZW50cnktPnR5cGUoKSkgeworICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6Okdl
dHRlcjoKKyAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpTZXR0ZXI6CisgICAgICAgICAgICAvLyBH
ZXR0ZXIgLyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNrLXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2gg
aXMgdGllZCB0byB0aGUgbGlua2VkIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVu
c2hhcmVhYmxlLgorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkN1c3RvbVZhbHVlR2V0dGVyOgorICAgICAgICBjYXNlIEFj
Y2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yR2V0dGVyOgorICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6
OkN1c3RvbVZhbHVlU2V0dGVyOgorICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkN1c3RvbUFjY2Vz
c29yU2V0dGVyOgorICAgICAgICAgICAgLy8gQ3VzdG9tIGdldHRlciAvIHNldHRlciBlbWl0cyBK
U0dsb2JhbE9iamVjdCBwb2ludGVyLCB3aGljaCBpcyB0aWVkIHRvIHRoZSBsaW5rZWQgQ29kZUJs
b2NrLgorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAga2V5c1tpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9CisgICAgc3Rh
dGUubV9kb2VzQ2FsbHMgPSBkb2VzQ2FsbHM7CisgICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0
ZXJDYWxscyA9IGRvZXNKU0dldHRlclNldHRlckNhbGxzOworCiAgICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMnIGNvbnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdl
IHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAvLyB3b24ndCBjaGFuZ2UgdGhhdCBzZXQgYW55
bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrID0gdHJ1ZTsK
LSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNJ
bnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3RyaW5nUHJvcGVydHlD
aGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrID0gZmFsc2U7
CkBAIC01NDIsMTAgKzU3MCw0NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICB9
CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBzdGF0ZS53YXRjaHBvaW50cywgY29kZUJsb2Nr
LCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAgICBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVj
ayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayhzdHViSW5mbyk7Ci0gICAgICAg
IGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyIHx8IG5ld0Nhc2UtPnR5
cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0gICAgICAgICAgICBoYXNKU0dldHRlclNldHRl
ckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3Q2FzZS0+dXNlc1BvbHlQcm90bygpKQorICAg
ICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5lZWRzU3ltYm9s
UHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1Byb3BlcnR5Q2hlY2sgfHwgbmVlZHNJbnQzMlBy
b3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisKKyAgICBhdXRvIGZp
bmlzaENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0cjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJS
b3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9zdHViUm91dGluZSA9IFdURk1vdmUoc3R1Yik7
CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAg
ICAgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIlJl
dHVybmluZzogIiwgbV9zdHViUm91dGluZS0+Y29kZSgpKTsKKworICAgICAgICBtX2xpc3QgPSBX
VEZNb3ZlKGNhc2VzKTsKKyAgICAgICAgbV9saXN0LnNocmlua1RvRml0KCk7CisKKyAgICAgICAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5kOworICAgICAgICBpZiAobV9s
aXN0LnNpemUoKSA+PSBPcHRpb25zOjptYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUoKSB8fCBnZW5l
cmF0ZWRGaW5hbENvZGUpCisgICAgICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlv
blJlc3VsdDo6R2VuZXJhdGVkRmluYWxDb2RlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkTmV3Q29kZTsKKwor
ICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdChyZXN1bHRLaW5kLCBtX3N0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICB9OworCisgICAgQ0NhbGxIZWxwZXJzIGppdChj
b2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZqaXQ7CisKKyAgICBpZiAoY29kZUJsb2NrLT51
c2VEYXRhSUMoKSkgeworICAgICAgICBpZiAoc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxs
cykgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCBzdGFjay1wb2lu
dGVyIGlzIHRoZSBleHBlY3RlZCBvbmUuIFRoaXMgaXMgbm90IGEgcHJvYmxlbSBpZiB3ZSBkbyBu
b3QgaGF2ZSBKUyBnZXR0ZXIgLyBzZXR0ZXIgY2FsbHMgc2luY2Ugc3RhY2stcG9pbnRlciBpcwor
ICAgICAgICAgICAgLy8gYSBjYWxsZWUtc2F2ZSByZWdpc3RlciBpbiB0aGUgQyBjYWxsaW5nIGNv
bnZlbnNpb24uIEhvd2V2ZXIsIG91ciBKUyBleGVjdXRhYmxlIGNhbGwgZG9lcyBub3Qgc2F2ZSBz
dGFjay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0aW5nIHN0YWNrLXBvaW50ZXIgYWZ0ZXIKKyAg
ICAgICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRlciBjYWxscy4gQnV0IHRoaXMgY291bGQgYmUg
ZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3RhY2stcG9pbnRlciwgYW5kIG1ha2VzIFBBQyB0
YWdnaW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8vIFRvIGVuc3VyZSBQQUMtdGFnZ2luZyB3b3Jr
LCB3ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRlciB0byB0aGUgYXBwcm9wcmlhdGUgb25lLgor
ICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxv
Y2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICB9CiAKKyAgICBzdGF0ZS5wcmVzZXJ2
ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KKyAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2Vk
UmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0
YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAgCiAgICAgaWYgKGNhc2VzLmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIHVubGlrZWx5LCBidXQgd2UgbWFrZSBpdCBsZWdh
bCBhbnl3YXkuCiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuanVtcCgp
KTsKQEAgLTY5MCw3ICs3NTUsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGlj
QWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzID0gbnVsbHB0cjsKICAg
ICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxp
bmc7Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAm
JiBoYXNKU0dldHRlclNldHRlckNhbGwpIHsKKyAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVS
ZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGRvZXNKU0dldHRlclNldHRlckNhbGxzKSB7CiAgICAg
ICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLgogICAgICAgICAvLyBOb3RlIHRoYXQg
dGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gZG9pbmcgZ2VuZXJpY1Vud2luZCBmcm9t
IGEgcHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4KICAgICAgICAgLy8gTm90ZSBhbHNvIHRoYXQgdGhp
cyBpcyBub3QgcmVhY2hhYmxlIGZyb20gY3VzdG9tIGdldHRlci9zZXR0ZXIuIEN1c3RvbSBnZXR0
ZXIvc2V0dGVycyB3aWxsIGhhdmUgCkBAIC03MzAsNDggKzc5NSw2MyBAQCBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvYwogICAgICAgICBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcgPSBz
dGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcoKTsKICAgICB9CiAKKyAgICBp
ZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkgeworICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7
CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBub3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBz
cGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNhbiBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0
aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNhbGxlZCAobm90IGp1bXBlZCkuCisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxsIHRvIHRoZSB0aHVuayB3aGljaCBjYWxscyB0
aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAgICAvLyBBbmQgd2Ugc2hvdWxkIGVsaW1pbmF0
ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBCYXNlbGluZUpJVC4KKyAgICAgICAgaml0LmZh
ckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKSwgSklUU3R1YlJv
dXRpbmVQdHJUYWcpOworICAgIH0KKworICAgIFJlZlB0cjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0
dWJSb3V0aW5lPiBzdHViOworICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiB3ZWFrU3RydWN0
dXJlcyhXVEZNb3ZlKHN0YXRlLndlYWtTdHJ1Y3R1cmVzKSk7CisgICAgaWYgKGNvZGVCbG9jay0+
dXNlRGF0YUlDKCkgJiYgY2FuQmVTaGFyZWQpIHsKKyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6
U2VhcmNoZXIgc2VhcmNoZXIgeworICAgICAgICAgICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAg
ICAgICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ucmVncy50aGlz
R1BSLAorICAgICAgICAgICAgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0
dWJJbmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBrZXlzLAorICAgICAgICAgICAgd2Vh
a1N0cnVjdHVyZXMsCisgICAgICAgIH07CisgICAgICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0
dWJzLT5maW5kKHNlYXJjaGVyKTsKKyAgICAgICAgaWYgKHN0dWIpIHsKKyAgICAgICAgICAgIGRh
dGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UsICJGb3VuZCBleGlz
dGluZyBjb2RlIHN0dWIgIiwgc3R1Yi0+Y29kZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmaW5p
c2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZm
ZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJ
bnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIkRpZCBmYWlsIHRvIGFsbG9j
YXRlLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6
OnZlcmJvc2UsICJEaWQgZmFpbCB0byBhbGxvY2F0ZS4iKTsKICAgICAgICAgcmV0dXJuIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQ6OkdhdmVVcDsKICAgICB9CiAKICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBzdWNjZXNzTGFiZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247
CiAKLSAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQot
ICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRp
b24pOworICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICBBU1NFUlQoc3Rh
dGUuc3VjY2Vzcy5lbXB0eSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5r
KHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NMYWJlbCk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhm
YWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIH0KICAgICAKLSAg
ICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxv
ZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5l
cmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJc
biIpOworICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2Us
IEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVy
YXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIgZm9yICIsIGxpc3REdW1wKGNhc2VzKSk7CiAK
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGUgPSBG
SU5BTElaRV9DT0RFX0ZPUigKICAgICAgICAgY29kZUJsb2NrLCBsaW5rQnVmZmVyLCBKSVRTdHVi
Um91dGluZVB0clRhZywKICAgICAgICAgIiVzIiwgdG9DU3RyaW5nKCJBY2Nlc3Mgc3R1YiBmb3Ig
IiwgKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5jb2RlT3JpZ2luLCAiIHdpdGggcmV0dXJuIHBv
aW50ICIsIHN1Y2Nlc3NMYWJlbCwgIjogIiwgbGlzdER1bXAoY2FzZXMpKS5kYXRhKCkpOwotCi0g
ICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKLSAgICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01h
cms7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2VzKQotICAgICAgICBkb2VzQ2FsbHMgfD0g
ZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9NYXJrKTsKLSAgICAKLSAgICBtX3N0dWJSb3V0
aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxz
LCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5tX2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tU
aGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxp
bmcpOwotICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKLSAg
ICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVm
ZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRl
LndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZl
cmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIp
OwogICAgIAotICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOwotICAgIG1fbGlzdC5zaHJpbmtU
b0ZpdCgpOwotICAgIAotICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2lu
ZDsKLSAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjptYXhBY2Nlc3NWYXJpYW50TGlz
dFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCi0gICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7Ci0gICAgZWxzZQotICAgICAg
ICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkTmV3Q29kZTsK
LSAgICAKLSAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdChyZXN1bHRLaW5kLCBjb2Rl
LmNvZGUoKSk7CisgICAgc3R1YiA9IGNyZWF0ZUlDSklUU3R1YlJvdXRpbmUoY29kZSwgV1RGTW92
ZShrZXlzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcyksIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxs
cywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2Nr
VGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRs
aW5nKTsKKworICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKSB7CisgICAgICAgIGlmIChj
YW5CZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1fc2hhcmVkSklUU3R1YnMtPmFkZChTaGFyZWRK
SVRTdHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8uYmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIs
IHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1YkluZm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8u
dXNlZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBmaW5pc2hD
b2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsKIH0KIAogdm9pZCBQb2x5bW9ycGhpY0FjY2Vz
czo6YWJvdXRUb0RpZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAzMjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFi
MzRhZWNiNDEuLjUwNWZhYjM3Zjg4OTQwMTkzOTE1MzI0NzJjYzAzYTE5NmNjNTFiMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8g
V2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVVcCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xk
IHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5vdCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMg
bWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3JwaGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAK
ICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2Rl
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApAQCAtMTc5LDE2ICsxNzksMTUgQEAgY2xhc3Mg
UG9seW1vcnBoaWNBY2Nlc3MgewogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJp
ZW5kIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsKKyAgICB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+IExpc3RUeXBlOwogICAgIAogICAgIHZvaWQg
Y29tbWl0KAogICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIHN0
ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+JiwgQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mLAogICAgICAgICBBY2Nlc3NDYXNlJik7CiAKICAgICBMaXN0
VHlwZSBtX2xpc3Q7Ci0gICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5lOwor
ICAgIFJlZlB0cjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5l
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IG1f
d2F0Y2hwb2ludHM7Ci0gICAgRml4ZWRWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vh
a1JlZmVyZW5jZXM7CiB9OwogCiBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKQEAgLTE5
Niw2ICsxOTUsOCBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBt
X3ZtKHZtKSAKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAg
ICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNh
bGxzKGZhbHNlKQorICAgICAgICAsIG1fZG9lc0NhbGxzKGZhbHNlKQogICAgICAgICAsIG1fY2Fs
Y3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAg
ICAgLCBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAg
ICwgbV9jYWxjdWxhdGVkQ2FsbFNpdGVJbmRleChmYWxzZSkKQEAgLTIyMywxMCArMjI0LDEyIEBA
IHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIEZQUlJlZyBzY3JhdGNoRlBSIHsg
SW52YWxpZEZQUlJlZyB9OwogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGUgeyBFQ01BTW9kZTo6c2xv
cHB5KCkgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvPiB3YXRjaHBvaW50czsKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtS
ZWZlcmVuY2VzOworICAgIFZlY3RvcjxTdHJ1Y3R1cmVJRD4gd2Vha1N0cnVjdHVyZXM7CiAgICAg
QmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOworICAgIGJvb2wgbV9kb2VzSlNHZXR0
ZXJTZXR0ZXJDYWxscyA6IDE7CisgICAgYm9vbCBtX2RvZXNDYWxscyA6IDE7CiAKLSAgICB2b2lk
IGluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CisgICAg
dm9pZCBpbnN0YWxsV2F0Y2hwb2ludChDb2RlQmxvY2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiYpOwogCiAgICAgdm9pZCByZXN0b3JlU2NyYXRjaCgpOwogICAgIHZvaWQgc3VjY2Vl
ZCgpOwpAQCAtMjQ4LDcgKzI1MSw3IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewog
ICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4
Y2VwdGlvbkhhbmRsaW5nKCk7CiAKICAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7Ci0gICAgU3Bp
bGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRp
b25zKCk7CisgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IHsgfSk7CiAKICAg
ICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNl
cHRpb24oY29uc3QgU3BpbGxTdGF0ZSYpOwogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNG
cm9tU3RhY2tGb3JDYWxsKGNvbnN0IFNwaWxsU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYgZG9u
dFJlc3RvcmUgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IGNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1
MGVlYTZhM2IzNGU3NWZhOWQuLjRiZjc4MGVkMzE3NjZlZGU2YmNjNTYwNDQ2YTUwNzlhY2JjYzEy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlh
YmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTM4LDE5ICszOCwxOSBAQCBQcm94eWFibGVBY2Nlc3NDYXNl
OjpQcm94eWFibGVBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBh
Y2NlcwogICAgIG1fdmlhUHJveHkgPSB2aWFQcm94eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50
U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90
eXBlQWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJv
b2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJv
dG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBBU1NFUlQodHlw
ZSA9PSBMb2FkIHx8IHR5cGUgPT0gTWlzcyB8fCB0eXBlID09IEdldEdldHRlciB8fCB0eXBlID09
IFJlcGxhY2UpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IFBy
b3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm94eWFi
bGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90
eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKIFByb3h5YWJsZUFjY2Vzc0Nhc2U6On5Qcm94eWFibGVB
Y2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJs
ZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nl
c3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByb3h5YWJsZUFj
Y2Vzc0Nhc2U+IHJlc3VsdChuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CiAg
ICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCmlu
ZGV4IGRjMzllMjZjYTJmNGIyYjdhYmExMmI1YTU1ZjMyNjY0NDEwZWZhNWMuLmU4NDM4NWNhNzVj
OWY3NTJlOGU4ZTE2Y2RkZTBhYmNhYzdiY2M0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaApAQCAtMzcsMTEgKzM3LDEx
IEBAIGNsYXNzIFByb3h5YWJsZUFjY2Vzc0Nhc2UgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAKICAg
ICBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9hZGRpdGlvbmFsU2V0LmdldCgpOyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLAorICAgIHN0YXRpYyBS
ZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAg
IGJvb2wgdmlhUHJveHkgPSBmYWxzZSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCA9IG51
bGxwdHIsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAg
dm9pZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgflBy
b3h5YWJsZUFjY2Vzc0Nhc2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYWZhZTRlODQyZmM3
ZDRkZDFlZGU4ZWJiY2VlZWJiNGUyNmRiMjJhNC4uYzQ1ODNkM2ZmOWY1NGM2YjZlMTMxYTNlMDQz
ZDNkZjIyNDE4YzBmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC01Miw2ICs1Miw3IEBAIFN0cnVjdHVyZVN0dWJJ
bmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpCiAgICAgLCBwcm9wZXJ0eUlzSW50MzIoZmFsc2UpCiAgICAgLCBwcm9wZXJ0eUlz
U3ltYm9sKGZhbHNlKQogeworICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiB9CiAK
IFN0cnVjdHVyZVN0dWJJbmZvOjp+U3RydWN0dXJlU3R1YkluZm8oKQpAQCAtMTM5LDcgKzE0MCw3
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnQsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNl
KQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1v
ZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3ND
YXNlKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAg
ICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OwogICAgICAgICAKICAgICAgICAg
aWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikgewotICAgICAgICAgICAgcmVzdWx0
ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUo
YWNjZXNzQ2FzZSkpOworICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tl
ciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2
ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJl
c3VsdCwgIlxuIik7CkBAIC0xNzAsOSArMTcxLDkgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBT
dHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVu
aXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVu
dCwgKnRoaXMpOworICAgICAgICAgICAgYXV0byBwcmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpm
cm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVCbG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAg
ICAgICAgIGlmIChwcmV2aW91c0Nhc2UpCiAgICAgICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBw
ZW5kKFdURk1vdmUocHJldmlvdXNDYXNlKSk7CiAgICAgICAgICAgICAKQEAgLTI3OSw3ICsyODAs
NyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwogICAgICAgICByZXNldEluQnkoY29kZUJsb2Nr
LCAqdGhpcywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAgICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMp
OworICAgICAgICByZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAgICAgICAgcmVzZXREZWxC
eShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IGE5NDA1ZGNl
YjlmMDI0ZjA0OTIyYTY3NTMwMTQxOGRhNmVkMzc5ODkuLjBmNjc3NWYxNmZiYzViYWFmZDdhNjcx
MTdjNTAxNGZkZjdlNjM1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFN0cnVjdHVy
ZVN0dWJJbmZvIHsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJl
LCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0SW5C
eUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRp
Zmllcik7CiAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBF
Q01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
KTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9k
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUmVmUHRyPEFjY2Vzc0Nhc2U+KTsKIAogICAgIHZvaWQg
cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayopOwogCkBAIC0x
MzQsMTIgKzEzNCw2IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICAgICAgcmV0dXJu
IGlubGluZVNpemU7CiAgICAgfQogCi0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBwYXRjaGFibGVKdW1wKCkKLSAgICB7IAotICAgICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9
PSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mKTsKLSAgICAgICAgcmV0dXJuIHN0YXJ0Lmp1bXBBdE9m
ZnNldDxKU0ludGVybmFsUHRyVGFnPigwKTsKLSAgICB9Ci0KICAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKApAQCAtMzQ1
LDE5ICszMzksMzAgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogcHVibGljOgogICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzdGFydDsgLy8gVGhpcyBpcyBl
aXRoZXIgdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUgSUMgZm9yICpieUlkIGNhY2hlcy4gb3IgdGhl
IGxvY2F0aW9uIG9mIHBhdGNoYWJsZSBqdW1wIGZvciAnaW5zdGFuY2VvZicgY2FjaGVzLgogICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbjsKLSAgICBD
b2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9uOwog
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0
TG9jYXRpb247CiAKKyAgICB1bmlvbiB7CisgICAgICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRl
cm5hbFB0clRhZz4gbV9zbG93UGF0aENhbGxMb2NhdGlvbjsKKyAgICAgICAgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247CisgICAgfTsKKworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0clRhZz4gbV9jb2RlUHRyOworCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
U3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0TG9jYXRpb24pOyB9CisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
U3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0KKwogICAgIFJlZ2lzdGVyU2V0
IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcgYmFzZUdQUjsKLSAgICBHUFJSZWcgdmFsdWVH
UFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZhbGlkR1BSUmVnIH07CisgICAgR1BSUmVnIHZh
bHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAgIHVuaW9uIHsKICAgICAgICAgR1BSUmVnIHRo
aXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFI7CiAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5kR1BSOwogICAgIH0gcmVnczsKKyAgICBHUFJS
ZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJSZWcgfTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAgICAvLyBGSVhNRTogWzMyLWJpdHNdIENoZWNr
IGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFnR1BSIGlzIHVzZWQgc29tZXdoZXJlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDE4NzU0M2QxNmVk
MDY4MDhiOWExNjE3YzU3ZmVlYWRkNzIwY2E3NjQuLjk2YmZjNWEzMDM5YTM2MGZkMTBhYTQwOTRm
NTcwNjBhN2NkYTlhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0Nh
bGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbExpbmtSZWNvcmQoZnVuY3Rp
b25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwogICAgIH0K
KworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICB9CiAgICAg
CiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggMjVhMTIxOWZkZDQzYmRmZTNjMDdi
OGEyNzRkZjhlMGU1Nzg4ZDJiNS4uNjNlOTUyZWYxZTI0ZjhlY2ZmMjFjMTEzY2FmYTZkOTA2NDFm
ODQwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5l
cmF0b3IuaApAQCAtMjY0LDYgKzI2NCw2NSBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRp
b25BcnJheSwgc291cmNlQXJyYXkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwg
dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CitjbGFzcyBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5
cGU+IHsKK3B1YmxpYzoKKyAgICBDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVy
YXRvcigKKyAgICAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwK
KyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1
aXJlbWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1
bWVudHMpCisgICAgICAgIDogQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRU
eXBlPihmcm9tLCBqaXQsIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCkKKyAgICAgICAg
LCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAsIG1fc2xvd1BhdGhPcGVyYXRp
b25BZGRyZXNzKHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcykKKyAgICAgICAgLCBtX2Z1bmN0aW9u
KGZ1bmN0aW9uKQorICAgICAgICAsIG1fYXJndW1lbnRzKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pCisgICAgICAgICwgbV9zdHViSW5mbyhzdHViSW5mbykKKyAgICB7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHNpemVfdC4uLiBBcmd1bWVudHNJbmRleD4K
KyAgICB2b2lkIHVucGFja0FuZEdlbmVyYXRlKFNwZWN1bGF0aXZlSklUKiBqaXQsIHN0ZDo6aW5k
ZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+KQorICAgIHsKKyAgICAgICAgQVNTRVJUKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKTsKKyAgICAgICAgdGhpcy0+c2V0VXAo
aml0KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93T3BlcmF0aW9uID0gbV9mdW5jdGlvbjsK
KyAgICAgICAgaml0LT5tX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0
dWJJbmZvKSwgbV9zdHViSW5mb0dQUik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19z
YW1lPFJlc3VsdFR5cGUsIE5vUmVzdWx0VGFnPjo6dmFsdWUpCisgICAgICAgICAgICBqaXQtPmNh
bGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgc3Rk
OjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVy
YXRpb25BZGRyZXNzLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0KSwgc3RkOjpnZXQ8QXJn
dW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisgICAgICAgIHRoaXMtPnRlYXJEb3duKGpp
dCk7CisgICAgfQorCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBq
aXQpIGZpbmFsCisgICAgeworICAgICAgICB1bnBhY2tBbmRHZW5lcmF0ZShqaXQsIHN0ZDo6bWFr
ZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8c3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+
Pjo6dmFsdWU+KCkpOworICAgIH0KKworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgIEND
YWxsSGVscGVyczo6QWRkcmVzcyBtX3Nsb3dQYXRoT3BlcmF0aW9uQWRkcmVzczsKKyAgICBGdW5j
dGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1
bWVudHM7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1
bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVj
dWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywg
RnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUs
IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCisgICAgUmVzdWx0VHlwZSBy
ZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoSUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0
aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oZnJvbSwgaml0LCBzdHViSW5mbywg
c3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIHNwaWxsTW9k
ZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlw
ZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFy
Z3VtZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoZnJvbSwgaml0LCBzdHViSW5m
bywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5lZWRU
b1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwgcmVzdWx0LCBh
cmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAv
LyBFTkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggN2U4NzM1M2MyZjJlMjE1MmQ5MWVkYTE2ZjUxMjI1YzNlYjZm
ZjE0Yy4uNDk4M2EyMmFhZmI1YzAyMjZlMjU1MWIwODQzZjgzMzAxNzI1ZDhmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwNDYs
MjQgKzEwNDYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSog
bm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAg
ICAgICAgYmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVy
OjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFs
dWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BS
UmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNl
KHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0x
MDcxLDcgKzEwODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2Rl
KiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nl
c3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA4NywyNyArMTA5OSwzOSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkg
ewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAg
ICAgYmFzZS51c2UoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3Bp
bGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7
CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3Mo
KTsKLQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0
dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2Uu
anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTExMTYsNyArMTE0MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRT
cGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTEzMSwxNCArMTE1NSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAg
ICAgfQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQog
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dFJlZ3MucGF5bG9hZEdQUigpOwpAQCAtMTE0OCwyMCArMTE3NywzNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNl
dCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERl
bEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3Vs
dFJlZ3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAg
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8o
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAg
ICAgICAgfQogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0Nh
bGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVs
QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTExOTAsMjIgKzEyMzQsMjcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogewogICAgIGlmIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0
aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGtleSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBz
dHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKIAorICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9k
ZS0+Y2hpbGQyKCkpOworCiAgICAgICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIo
KSwgU3BlY0NlbGwpKQogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoa2V5UmVncykpOwogCkBAIC0xMjE0LDIwICsxMjYzLDM1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgICAgICBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBpZiAo
IUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJl
Z3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQog
I2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtl
eVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXpl
LAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAg
ICAgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMjU2LDkg
KzEzMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
IG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkK
IHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlLCBQYXlsb2FkV29yZCk7CiAKKyAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogCkBAIC0xMjY4LDE0ICsxMzM4LDI1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NS
RXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9H
UFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgIGF1dG8gc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUsCi0gICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVj
a1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGls
bCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUs
CisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hl
Y2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2pp
dC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMTI4OCw3ICsxMzY5LDEzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQga2V5
KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIGtleSk7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8u
ZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Cisg
ICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyBr
ZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7CkBAIC0xMjk2LDE4ICsxMzgzLDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgYmFzZS51c2UoKTsKICAgICBrZXku
dXNlKCk7CiAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKwogICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlv
bkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwog
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAg
ICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwg
a2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQp
KQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBh
dXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCks
IHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgTmVlZFRvU3BpbGwsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLAor
ICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwga2V5UmVncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6
ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpD
aGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGtleVJlZ3MpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlWYWwoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOwpAQCAtMzYwMyw5ICszNzAyLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiB7CiAg
ICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5vcCgpID09IEdldFByaXZh
dGVOYW1lKTsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG1fZ3JhcGguY2hp
bGQobm9kZSwgMSkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgc3BlY3VsYXRlU3ltYm9s
KG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwogCisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKwor
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KKyAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgIHNwZWN1bGF0
ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKKwogICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0
IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0zNjE2LDE0ICszNzI1
LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5v
ZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBB
Y2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZSwg
cHJvcGVydHksIHJlc3VsdC5yZWdzKCkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklU
VHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0
ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2UsIHByb3BlcnR5LCByZXN1bHRSZWdz
LCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0
cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7Ci0KLSAgICBhdXRvIG1ha2VTbG93UGF0aENhbGwgPSBbJl0oYXV0byBiYXNlKSB7Cisg
ICAgYXV0byBtYWtlU2xvd1BhdGhJQ0NhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgcmV0
dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKKyAgICAgICAgICAgICAgICBiYXNlLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKKyAgICAgICAgfQog
ICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAogICAgICAgICAgICAgcmVzdWx0LnJl
Z3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKQEAgLTM2MzEsOCArMzc0Niw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUq
IG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBiYXNlSXNLbm93bkNlbGwKLSAgICAgICAg
PyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQ
UigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhDYWxsKGJhc2UpOworICAgICAgICA/IG1ha2VT
bG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkp
CisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxsKGJhc2UpOwogCiAgICAgbV9qaXQuYWRkR2V0
QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RG
TW92ZShzbG93UGF0aCkpOwpAQCAtMzY0NCwyOCArMzc1OSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNo
IChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTog
eworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7
CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7
CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBz
dHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5m
by0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6
R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBl
OjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwg
MCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJh
c2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VS
ZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0zNzY0LDI5ICszODkxLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQg
cHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5lcmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAg
ICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBhdXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERl
ZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSog
bm9kZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAg
SlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJhbmRH
UFIgPSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxk
MigpLCBicmFuZEdQUik7CkBAIC0zODAwLDE2ICszOTM4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCiAgICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCks
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNl
ZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
cmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJh
bmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5
bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
b3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAg
ICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJh
bmRHUFIpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOwpAQCAtMzgyMCw5ICszOTY2LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
aGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+
IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcg
YnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCkBAIC0zODM0LDE2ICszOTg2LDI0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIAog
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgSklUUHJpdmF0ZUJyYW5k
QWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRU
eXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRl
QnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIp
OwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklU
KSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAg
ICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwor
ICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0z
OTYxLDIyICs0MTIxLDI4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNI
YXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZG
b3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHBy
b3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcg
c2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAK
ICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygp
LCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJl
Z3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKKyAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKKyAgICAgICAgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8IH5TcGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKG1faml0KTsKLSAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKHNsb3dDYXNlKTsKLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5l
cmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKLSAgICAgICAgcHJvdG90eXBl
UmVncyk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5
cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7
CkBAIC0zOTg3LDYgKzQxNTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFu
Y2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAgLTM5OTQsMTMgKzQxNjEsMTggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0
aGlzKTsKICAgICAgICAgCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJS
ZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcHJvdG90eXBl
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKLSAgICAgICAgY29tcGlsZUluc3Rh
bmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOworICAgICAg
ICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
SlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRj
aEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAKICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDAxMCwxMiArNDE4Miwx
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQog
ICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwg
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIAorICAgIHN0ZDo6
b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvdG90eXBlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIAorICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIHByb3RvdHlw
ZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTQwMzEsNyArNDIwOSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAg
ICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhu
b2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgSW52
YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9k
ZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3Jh
dGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEz
Mjc2LDQ2ICsxMzQ1NCw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9JbmRleFN0
cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZs
dXNoKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IElu
dmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BS
ID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2
YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2lu
ZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBE
b250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9B
c3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZChOb2RlKiBub2RlKQogeworICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBz
Y3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1
dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5v
dERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKIHsK
KyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQ
dXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpE
aXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0x
NDk0MiwxOCArMTUxMzgsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVU
eXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQ
UiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxs
TW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1
YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewogICAgIFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYg
KHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVz
aGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdlIGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2Uu
CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNl
ZFJlZ2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxzZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1Yklu
Zm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0
LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRl
ZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5
cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZp
ZXIsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwog
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwpAQCAtMTQ5NjMsOSArMTUxNjEsMTYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93
UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwog
Ci0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAg
fQogCiAgICAgbV9qaXQuYWRkUHV0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZjhiMjk5OGQ0ZDE3YmVjZTQzNmQx
OGY5OTE3NGY2ZWJjYzg5ODQ4My4uMjliYTI5YWU0NzY2ZWFlYmM3ZmVjNzhkZjFhYTRkN2Q1NDY1
YzZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtNzE5LDE2ICs3MTksMTYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogCiAgICAgdm9p
ZCBjb21waWxlQ2hlY2tEZXRhY2hlZChOb2RlKik7CiAKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdp
c3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJz
TW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBT
cGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcg
c3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRL
aW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21w
aWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9p
ZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChD
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRo
VGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJ
ZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0
dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hl
ZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNH
UFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENv
bXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5
SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJh
c2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2Fk
R1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwg
R1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJl
ZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5
bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6
Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNl
bmRpZgogCiAgICAgdm9pZCBjb21waWxlRGVsZXRlQnlJZChOb2RlKik7CkBAIC03NTEsNyArNzUx
LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25Q
ZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICBib29sIGdl
bmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAot
ICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFs
dWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVn
IHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nh
c2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9y
Q2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVH
UFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hH
UFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRD
b21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVP
dmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CkBAIC05NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAg
ICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1
bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAg
ICAgIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4K
KyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRS
ZWdUeXBlIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7
CisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0
ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICFGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
aGFzUmVzdWx0LAorICAgIHZvaWQ+CisgICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7
CisgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFy
Z0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0
aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgewogICAgICAgICAv
LyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4KQEAgLTk4OCw2
ICsxMDA4LDEzIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIG1faml0
LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRl
cm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnRO
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKGFkZHJlc3Mp
OworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZE9wZXJhdGlvbkNhbGwoY29u
c3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBmdW5jdGlvbikKICAgICB7CiAgICAgICAg
IHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKQEAgLTEwMTAsNiArMTAzNywyOCBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBjYWxsOwogICAgIH0KIAorICAgIHZvaWQg
YXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVn
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlm
IChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxs
U2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0MSwg
R1BSUmVnIHJlc3VsdDIpCisgICAgeworICAgICAgICBhcHBlbmRDYWxsKGFkZHJlc3MpOworICAg
ICAgICBtX2ppdC5zZXR1cFJlc3VsdHMocmVzdWx0MSwgcmVzdWx0Mik7CisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFkZHJlc3MsIHJlc3VsdFJlZ3MuZ3ByKCkpOworI2Vsc2UK
KyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChhZGRyZXNzLCByZXN1bHRSZWdzLnBheWxvYWRH
UFIoKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CisKICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxN2I0
OGFjY2Q1ZWU2YzcwYmUwNjgzZjQxYzEzNWY2MmQ4YmY4NTAwLi42ODI4ZTRlMDIxMzAzN2MzNjQ4
N2QxOTgxZjI0MDQ3NjlhNDBlNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE2OCwxNSArMTY4LDE2IEBAIGJv
b2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdHUFIs
IEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBl
IHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3Jp
Z2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5m
b0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUp
CiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9h
ZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZpZXIs
IHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwg
YmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0
LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBt
b2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKLSAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUs
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3Vs
dFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lz
dGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlzIGEgaGFja3kgZml4IGZvciB3aGVuIHRoZSBy
ZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdpdGgg
dGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ugb2Yg
R2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVseSBl
eHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5
IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24uCkBA
IC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAg
ICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRH
ZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3Ry
ZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50
aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2Fk
R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7
CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVn
cyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFsaWRHUFJSZWcsIHR5cGUpOwogICAgIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIyOCwxNSArMjI5LDE2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0
aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdH
UFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJn
ZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAgIAogICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAg
ICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAot
ICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1Zh
bHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRo
aXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFs
dWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSwgSW52YWxpZEdQUlJlZyk7CiAgICAg
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjM0MSw4ICsyMzQz
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRh
Z0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vz
c1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VSZWdz
LCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBiYXNlUmVncywgcHJv
cGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKIAogICAgICAgICAgICAgaWYg
KG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3Bl
Y1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJp
bmcgPSB0cnVlOwpAQCAtMzQwOSw3ICszNDExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3Vs
dFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0
UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdp
dGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52
YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhU
aGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxp
ZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlk
R1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9k
ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI5LDcgKzM0MzEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAg
ICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWUuanNW
YWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwg
dGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CisgICAgICAgICAg
ICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BS
LCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQ
UiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggNzcyZDQyNTBhYTczMGIyYzY2YzU2ODI3OWZkYzMzNThhODEyZGU4MS4uNjIzNTVjOTQ4
NzkxM2FhOTY0YjVhYmYzNTAxMGMyMjQ1ZTNjODE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNDcsMTIgKzE0NywxMiBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4s
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVn
aXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4s
IGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1v
ZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQu
Z3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlw
ZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3Bp
bGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
R1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxs
UmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlv
bkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwog
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBA
IC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICAvLyBX
ZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVl
ZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFs
c2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAg
ICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1c2VkUmVn
aXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0
ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhp
cywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICBz
cGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlk
ZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklU
KSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAg
ICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHBy
b3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGls
bE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBp
ZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWQo
Z2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShz
bG93UGF0aCkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIs
IEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
SklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpK
dW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9
IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJ
Zk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMTg3LDIwICsxOTcsMzAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BS
LCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQodGhpc0dQUiwgZmFsc2UpOwogICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFsc2UpOworICAgIGlmIChzdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwg
ZmFsc2UpOwogICAgIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVy
cywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3Rl
cnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlzR1BSKSwgc3R1YkluZm9HUFIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAot
ICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVk
LAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJh
c2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJ
bmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAorICAgICAgICAg
ICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAg
ICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFz
ZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KICAgICAKICAgICBt
X2ppdC5hZGRHZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMjY4MSwxNiArMjcwMSwyMyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKLQorICAgICAgICAgICAgc3RkOjpvcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHByb3BlcnR5KTsKKwor
ICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBw
cm9wZXJ0eS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDEpKTsKKwogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1f
aml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5l
ZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0yNzAwLDggKzI3
MjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUikp
OwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpH
ZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5
R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAg
ICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlw
ZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJ
c1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDExICsyNzM5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgobV9qaXQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93
UGF0aCkpOwpAQCAtMzk4OCw5ICs0MDIzLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSAmJiBub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAg
ICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQ
UlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTM5OTgsMTQgKzQw
NDAsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0
aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3Vs
dEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGls
ZXI6Okp1bXBMaXN0KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxh
Y2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CkBAIC00MDE3LDcgKzQwNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKSk7CiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOworICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBy
ZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENl
bGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggYWJkNjk0ZjhkYzY0NTBkZmVjNGNlMmQ5MzFiZGU1Yjg4NmE0
YTUzMi4uNGY5NzcwYWQ0ZmZhY2IyOTMxZGVhMjIyNmQ4MzIzMjcxNjU3NmRlZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzk4OCw2ICsz
OTg4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRF
eGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhj
ZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtNDAwOSwxMCArNDAxMCwxMSBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0u
Z3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7
CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOwor
ICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAK
ICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1l
LAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3Mo
cmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlw
ZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5
R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICAgICAgaWYgKCFi
YXNlSXNDZWxsKQpAQCAtNDAyNiwxMyArNDAyOCwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
CiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRv
ci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhD
YWxsKTsKQEAgLTQxMjAsNiArNDEzNCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMg
PSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAg
IFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTQxNDAsMTAgKzQx
NTUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJh
bXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlk
R1BSUmVnOwogCiAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCi0g
ICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiks
IHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7
CiAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCkBAIC00MTY5LDEzICs0MTg1LDI1IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgp
KQogICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOworICAgICAgICAgICAgICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKLSAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vz
c1R5cGUpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUp
OworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9H
UFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlw
ZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1Yklu
Zm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1Bh
dGhDYWxsKTsKQEAgLTQ1MjYsNiArNDU1NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAvLyBG
SVhNRTogSWYgdGhpcyBpcyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNs
b2JiZXIgdm9sYXRpbGUgcmVnaXN0ZXJzLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyODQ4CkBAIC00NTQ4LDEwICs0NTc3LDEyIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gSlMgc2V0dGVyIGNhbGwgSUNzIGdl
bmVyYXRlZCBieSB0aGUgUHV0QnlJZCBJQyB3aWxsIG5lZWQgdGhpcy4KICAgICAgICAgICAgICAg
ICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywg
Y2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkg
OiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8
SklUUHV0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0u
Z3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkp
LCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgc3R1YkluZm9HUFIsIEdQ
UkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAogICAgICAgICAgICAg
ICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVG
YXN0UGF0aChqaXQpOwpAQCAtNDU2MywxMiArNDU5NCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BS
UmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0u
Z3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbmVy
YXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRT
bG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTUyNDksNiArNTI5
Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBW
YWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAgICAg
UmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtNTI2OSwxMCArNTMx
MywxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cGFyYW1zWzJdLmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6
IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxK
SVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5
cGU6OkdldEJ5VmFsLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwg
SlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHBy
b3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJv
cGVydHlJc1N0cmluZzsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnBy
b3BlcnR5SXNJbnQzMiA9IHByb3BlcnR5SXNJbnQzMjsKQEAgLTUyOTAsMTMgKzUzMzUsMjUgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5p
c1NldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJ
VCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1Bh
dGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVs
bHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRp
bWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBy
ZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGlt
aXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5z
dHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQ
YXRoQ2FsbCk7CkBAIC01ODQ2LDcgKzU5MDMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gMTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAyIDogMTsKIAogICAgICAgICBSZWZQ
dHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAg
ICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKQEAgLTU4NjYs
OSArNTkyMywxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgYXV0
byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKTsKICAgICAgICAgICAgICAgICBh
dXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNj
cmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAgICAgIGF1dG8gc3R1
YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5n
cFNjcmF0Y2goMSkgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
LmdwcigpICE9IHJldHVybkdQUik7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkg
IT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQ
UiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5n
cHIoKSAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9
IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwpAQCAtNTg4NCw3ICs1OTQzLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09
IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJh
bXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElm
Tm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKQEAgLTU4OTQsMTkg
KzU5NTMsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBjb25zdCBh
dXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
a2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklU
VHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1
YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVS
ZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSgp
OwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0g
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExK
SVQpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xv
d1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9
IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKApAQCAt
NTkxNSwxMiArNTk3NSwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rp
b24sIHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9u
LCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0
b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBz
bG93UGF0aENhbGwpOwpAQCAtMTIzMDEsNiArMTIzNzMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsK
IAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFu
ZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC0x
MjMxNSw2ICsxMjM4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAg
ICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBl
eGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7
CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVn
OwogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAg
ICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAK
QEAgLTEyMzI4LDQxICsxMjQwMiw2OCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRl
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJbmZvR1BSKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZh
bEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLCBzdWJzY3JpcHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9H
UFIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCisgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICAgICAg
aWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKIAog
ICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKICAgICAgICAgICAgICAgICAgICAg
Wz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2lu
ZDo6Tm9ybWFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0g
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJh
dGlvbkluQnlJZE9wdGltaXplLCByZXR1cm5HUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBy
ZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlWYWxPcHRp
bWl6ZSwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0
dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
dHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG51bGxwdHIpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIHJldHVybkdQUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZSwgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKQEAg
LTEyNTgwLDcgKzEyNjgxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3RvdHlwZSk7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywg
VmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZU
TEpJVCkgPyAzIDogMjsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7
IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIApAQCAt
MTI1OTYsNiArMTI2OTcsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAg
IEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwogICAgICAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJ
VCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDogSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZUp1bXA7CiAgICAgICAg
ICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkgewpAQCAtMTI2MTcsMTAgKzEyNzE5LDEyIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3Rv
dHlwZUdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3Vs
dEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsCiAg
ICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90b3R5cGVJc09iamVjdCk7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsK
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBA
IC0xMjYzMSwxMiArMTI3MzUsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRo
QmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9H
UFIsIHZhbHVlR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVH
UFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRH
UFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90
eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93
UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTE0MDgwLDYgKzE0MTk2
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29t
ZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6
IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRCeUlkRmx1c2gvR2V0QnlJ
ZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5jZSBib29zdCBpZiB3ZSBj
bGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxlIHJlZ2lzdGVycyBsYXRl
LiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91Z2gsIHNpbmNlIHRoZQpA
QCAtMTQxMDgsMTAgKzE0MjI1LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAg
ICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhh
bmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4
KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJS
ZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkR2Vu
ZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOworICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQ
UiwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgo
aml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFi
ZWwoKTsKQEAgLTE0MTI0LDEyICsxNDI0MywyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmpp
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRo
QmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdw
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1p
emF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQ
UiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
cGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTE0
MTU0LDggKzE0Mjg1LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CkBAIC0xNDE3NywxMCArMTQz
MDgsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgY2Fs
bHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAg
ICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZU
TEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAg
ICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46
OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRl
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNb
Ml0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdw
cigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xNDE5Mywx
MiArMTQzMjYsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6
YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1p
emF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQ
UiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0Jp
dHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJh
bXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0
b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlk
ZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNs
b3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbC5jcHAKaW5kZXggMmFkZDQ5NGM1MzJhYWVhOGVlM2QxMWNlMTIyNzgx
MTg5MzU2YWQ0Zi4uYjRlNDc1OGU1OGZiMWU3OTI2YzZhMDcxODM3MzE1ODk4N2M3NmQ1NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCB3b3JkU2l6ZSA9IDg7CiAKIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRo
Q2FsbENvbnRleHQoCi0gICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJz
JiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlcikKKyAgICBSZWdp
c3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJn
cywgR1BSUmVnIHJldHVyblJlZ2lzdGVyLCBHUFJSZWcgaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0
ZXIpCiAgICAgOiBtX2ppdChqaXQpCiAgICAgLCBtX251bUFyZ3MobnVtQXJncykKICAgICAsIG1f
cmV0dXJuUmVnaXN0ZXIocmV0dXJuUmVnaXN0ZXIpCkBAIC02Myw2ICs2Myw4IEBAIFNsb3dQYXRo
Q2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQoCiAgICAgbV9jYWxsaW5nQ29udmVudGlv
blJlZ2lzdGVycy5tZXJnZShtX2FyZ3VtZW50UmVnaXN0ZXJzKTsKICAgICBpZiAocmV0dXJuUmVn
aXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lz
dGVycy5zZXQoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgIGlmIChpbmRpcmVjdENhbGxU
YXJnZXRSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBtX2NhbGxpbmdDb252ZW50
aW9uUmVnaXN0ZXJzLnNldChpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3Rlcik7CiAgICAgbV9jYWxs
aW5nQ29udmVudGlvblJlZ2lzdGVycy5maWx0ZXIodXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIAog
ICAgIHVuc2lnbmVkIG51bWJlck9mQ2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMgPQpAQCAtMTE0
LDcgKzExNiwxMiBAQCBTbG93UGF0aENhbGxDb250ZXh0Ojp+U2xvd1BhdGhDYWxsQ29udGV4dCgp
CiAKIFNsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkgY29uc3QKIHsKLSAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50
UmVnaXN0ZXJzLCBtX29mZnNldCk7CisgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5r
U2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQsIDApOwor
fQorCitTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykgY29uc3QKK3sKKyAgICByZXR1cm4gU2xvd1Bh
dGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBudWxscHRyLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBt
X29mZnNldCwgYWRkcmVzcy5vZmZzZXQpOwogfQogCiBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxs
Q29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNh
bGxUYXJnZXQpCkBAIC0xMzMsNiArMTQwLDIyIEBAIFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxD
b250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4KICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6
bWFrZUNhbGwoVk0mIHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbFRhcmdldCkKK3sKKyAg
ICBTbG93UGF0aENhbGxLZXkga2V5ID0ga2V5V2l0aFRhcmdldChjYWxsVGFyZ2V0KTsKKyAgICBT
bG93UGF0aENhbGwgcmVzdWx0ID0gU2xvd1BhdGhDYWxsKG1faml0LmNhbGwoSklUVGh1bmtQdHJU
YWcpLCBrZXkpOworCisgICAgbV9qaXQuYWRkTGlua1Rhc2soCisgICAgICAgIFtyZXN1bHQsICZ2
bV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGh1bmsgPQorICAgICAgICAgICAgICAgIHZtLmZ0bFRo
dW5rcy0+Z2V0U2xvd1BhdGhDYWxsVGh1bmsodm0sIHJlc3VsdC5rZXkoKSk7CisKKyAgICAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhyZXN1bHQuY2FsbCgpLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRU
aHVua1B0clRhZz4odGh1bmsuY29kZSgpKSk7CisgICAgICAgIH0pOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihTdGF0
ZSYgc3RhdGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKICAgICBpZiAoY29kZU9yaWdpbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCmluZGV4IDcwZDI4
OGUwM2YxZDhkODFmMjc3ZjZiODIxN2FjOWYzZmE4MGMxMmEuLmQ2ZjI4NTQ5YTMxYjMzNWRkNWI1
NzU5YWNlMjEwZjQ4MmE4MzFkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGwuaApAQCAtNTQsMTUgKzU0LDE3IEBAIGNsYXNzIFNsb3dQYXRoQ2FsbCB7CiAv
LyBUaGlzIHdpbGwgYmUgYW4gUkFJSSB0aGluZ3kgdGhhdCB3aWxsIHNldCB1cCB0aGUgbmVjZXNz
YXJ5IHN0YWNrIHNpemVzIGFuZCBvZmZzZXRzIGFuZCBzdWNoLgogY2xhc3MgU2xvd1BhdGhDYWxs
Q29udGV4dCB7CiBwdWJsaWM6Ci0gICAgU2xvd1BhdGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0
dXJuUmVnaXN0ZXIpOworICAgIFNsb3dQYXRoQ2FsbENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJl
Z2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJl
Z2lzdGVyLCBHUFJSZWcgaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpOwogICAgIH5TbG93UGF0
aENhbGxDb250ZXh0KCk7CiAKICAgICAvLyBOT1RFOiBUaGUgY2FsbCB0aGF0IHRoaXMgcmV0dXJu
cyBpcyBhbHJlYWR5IGdvaW5nIHRvIGJlIGxpbmtlZCBieSB0aGUgSklUIHVzaW5nIGFkZExpbmtU
YXNrKCksCiAgICAgLy8gc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgeW91IHRvIGxpbmsgaXQgeW91
cnNlbGYuCiAgICAgU2xvd1BhdGhDYWxsIG1ha2VDYWxsKFZNJiwgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KTsKKyAgICBTbG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MpOwogCiBwcml2YXRlOgogICAgIFNsb3dQYXRoQ2FsbEtleSBr
ZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkgY29u
c3Q7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKSBjb25zdDsKICAgICAKICAgICBSZWdpc3RlclNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwog
ICAgIFJlZ2lzdGVyU2V0IG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnM7CkBAIC04Miw3ICs4
NCw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogewogICAgIFNsb3dQYXRoQ2FsbCBj
YWxsOwogICAgIHsKLSAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdp
c3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6
ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSLCBJbnZhbGlkR1BSUmVnKTsKICAg
ICAgICAgaml0LnNldHVwQXJndW1lbnRzPHZvaWQoQXJndW1lbnRUeXBlcy4uLik+KGFyZ3VtZW50
cy4uLik7CiAgICAgICAgIGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBmdW5jdGlvbik7CiAg
ICAgfQpAQCAtMTE3LDYgKzExOSw0OCBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKICAg
ICAgICAgcmVzdWx0LCBhcmd1bWVudHMuLi4pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZtLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxs
SGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRhcmdldCwKKyAgICBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRHUFIsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1l
bnRzKQoreworICAgIFNsb3dQYXRoQ2FsbCBjYWxsOworICAgIHsKKyAgICAgICAgU2xvd1BhdGhD
YWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50
VHlwZXMpICsgMSwgcmVzdWx0R1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPHZvaWQoQXJndW1lbnRUeXBlcy4uLik+KGZ1
bmN0aW9uLCBhcmd1bWVudHMuLi4pOworICAgICAgICBjYWxsID0gY29udGV4dC5tYWtlQ2FsbCh2
bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGZ1bmN0aW9uLm9m
ZnNldCkpOworICAgIH0KKyAgICBpZiAoZXhjZXB0aW9uVGFyZ2V0KQorICAgICAgICBleGNlcHRp
b25UYXJnZXQtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKHZtKSk7CisgICAgcmV0dXJu
IGNhbGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0
aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
LAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLAorICAgIEFyZ3VtZW50VHlw
ZXMuLi4gYXJndW1lbnRzKQoreworICAgIGlmIChjYWxsU2l0ZUluZGV4KSB7CisgICAgICAgIGpp
dC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNp
dGVJbmRleC5iaXRzKCkpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVh
bFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwor
ICAgIH0KKyAgICByZXR1cm4gY2FsbE9wZXJhdGlvbih2bSwgdXNlZFJlZ2lzdGVycywgaml0LCBl
eGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZ3VtZW50cy4uLik7Cit9CisK
K0NhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckNvZGVPcmlnaW4oU3RhdGUmLCBDb2RlT3Jp
Z2luKTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2Fs
bCBjYWxsT3BlcmF0aW9uKAorICAgIFN0YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCisg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1l
bnRzKQoreworICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKAorICAgICAgICBzdGF0ZS52bSgpLCB1
c2VkUmVnaXN0ZXJzLCBqaXQsIGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKHN0YXRlLCBjb2Rl
T3JpZ2luKSwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwKKyAgICAgICAgcmVzdWx0LCBhcmd1
bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBF
TkFCTEUoRlRMX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsS2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsS2V5LmNwcAppbmRleCAyZDMwNmM2MjAzM2E4MzkwOGU2ZmNjNmFiOWU2ZTg0Y2ZlODFl
Y2FhLi5jNGU3ZTgyNjFmZDQ3MzZiMWQzMzcyYmVmNTUxM2VmZTVhYTM5YTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdm9pZCBTbG93UGF0
aENhbGxLZXk6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQo
Ijx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29m
ZnNldCwgIiwgY2FsbFRhcmdldCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCAiLCBhcmd1bWVudFJlZ2lzdGVycyA9ICIsIG1fYXJndW1lbnRSZWdpc3Rl
cnMsICI+Iik7CisgICAgb3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lz
dGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQsICIsIGluZGlyZWN0T2Zmc2V0ID0gIiwgbV9p
bmRpcmVjdE9mZnNldCwgIiwgY2FsbFRhcmdldCA9ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0
LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAiLCBhcmd1bWVudFJlZ2lzdGVycyA9ICIsIG1fYXJndW1l
bnRSZWdpc3RlcnMsICI+Iik7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCmluZGV4IDA4NmFl
MDBlZTU4NTUyYzdjZTgzZDcwNTIwZTc2MTM4NDJiZGQzM2QuLjBjZTYxZjI2YmE5NTBiOTNmYzNh
OGVjMTliNTY3NDFhZTEwMDBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGxLZXkuaApAQCAtNTEsMTEgKzUxLDEyIEBAIGNsYXNzIFNsb3dQYXRoQ2Fs
bEtleSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KAogICAgICAgICBjb25zdCBSZWdpc3Rl
clNldCYgc2V0LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQsIGNvbnN0
IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycywKLSAgICAgICAgcHRyZGlmZl90IG9mZnNl
dCkKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCwgaW50MzJfdCBpbmRpcmVjdE9mZnNldCkKICAg
ICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoc2V0KQogICAgICAgICAsIG1fY2FsbFRhcmdldChjYWxs
VGFyZ2V0LnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKSkKICAgICAgICAgLCBtX2FyZ3VtZW50
UmVnaXN0ZXJzKGFyZ3VtZW50UmVnaXN0ZXJzKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkK
KyAgICAgICAgLCBtX2luZGlyZWN0T2Zmc2V0KGluZGlyZWN0T2Zmc2V0KQogICAgIHsKICAgICB9
CiAgICAgCkBAIC02MywxMCArNjQsMTEgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxUYXJnZXQ7IH0KICAgICBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMo
KSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50UmVnaXN0ZXJzOyB9CiAgICAgcHRyZGlmZl90IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgaW50MzJfdCBpbmRpcmVjdE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaXJlY3RPZmZzZXQ7IH0KICAgICAKICAgICBTbG93
UGF0aENhbGxLZXkgd2l0aENhbGxUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBj
YWxsVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVn
aXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9mZnNldCgpKTsKKyAg
ICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQs
IGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9mZnNldCgpLCBpbmRpcmVjdE9mZnNldCgpKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkBAIC03NiwxMyArNzgs
MTEgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxLZXko
RW1wdHlWYWx1ZVRhZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkVt
cHR5VmFsdWUpCi0gICAgICAgICwgbV9vZmZzZXQoMCkKICAgICB7CiAgICAgfQogICAgIAogICAg
IFNsb3dQYXRoQ2FsbEtleShEZWxldGVkVmFsdWVUYWcpCiAgICAgICAgIDogbV91c2VkUmVnaXN0
ZXJzKFJlZ2lzdGVyU2V0OjpEZWxldGVkVmFsdWUpCi0gICAgICAgICwgbV9vZmZzZXQoMCkKICAg
ICB7CiAgICAgfQogICAgIApAQCAtOTMsMTggKzkzLDIwIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtl
eSB7CiAgICAgewogICAgICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJzID09IG90aGVyLm1fdXNl
ZFJlZ2lzdGVycwogICAgICAgICAgICAgJiYgbV9jYWxsVGFyZ2V0ID09IG90aGVyLm1fY2FsbFRh
cmdldAotICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQ7CisgICAgICAg
ICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldAorICAgICAgICAgICAgJiYgbV9pbmRp
cmVjdE9mZnNldCA9PSBvdGhlci5tX2luZGlyZWN0T2Zmc2V0OwogICAgIH0KICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMuaGFz
aCgpICsgUHRySGFzaDx2b2lkKj46Omhhc2gobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNz
KCkpICsgbV9vZmZzZXQ7CisgICAgICAgIHJldHVybiBtX3VzZWRSZWdpc3RlcnMuaGFzaCgpICsg
UHRySGFzaDx2b2lkKj46Omhhc2gobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpICsg
bV9vZmZzZXQgKyBtX2luZGlyZWN0T2Zmc2V0OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBSZWdp
c3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PiBtX2NhbGxUYXJnZXQ7CiAgICAgUmVnaXN0ZXJTZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKLSAg
ICBwdHJkaWZmX3QgbV9vZmZzZXQ7CisgICAgcHRyZGlmZl90IG1fb2Zmc2V0IHsgMCB9OworICAg
IGludDMyX3QgbV9pbmRpcmVjdE9mZnNldCB7IDAgfTsKIH07CiAKIHN0cnVjdCBTbG93UGF0aENh
bGxLZXlIYXNoIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1
bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAppbmRleCBk
YmZlZDQ0ZDVhMTJhYWRkZDI3NmE5MzMxMzNjMGIzNmM4NjYxM2FkLi5kOTIwMmEzZDQxOWU1Y2Iy
YTU5ZTMxZmJlODVhNGFkNTNiZTQ5NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExU
aHVua3MuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoCiAgICAgc2F2
ZUFsbFJlZ2lzdGVycyhqaXQsIGJ1ZmZlcik7CiAgICAgCiAgICAgLy8gVGVsbCBHQyBtYXJrIHBo
YXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwu
Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZl
ci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBq
aXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNo
TWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFj
dGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5
dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKIAogICAgIGppdC5sb2FkUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVr
KApAQCAtMjAwLDEzICsyMDAsMjAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICAgICAg
Y3VycmVudE9mZnNldCArPSBzaXplb2YoZG91YmxlKTsKICAgICB9CiAgICAgCi0gICAgaml0LnBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBq
aXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJnR1BSMCwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7Cisg
ICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpub25BcmdHUFIx
KTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJz
OjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNl
dCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAKLSAgICByZWdp
c3RlckNsb2JiZXJDaGVjayhqaXQsIGtleS5hcmd1bWVudFJlZ2lzdGVycygpKTsKKyAgICBSZWdp
c3RlclNldCBkb250Q2xvYmJlciA9IGtleS5hcmd1bWVudFJlZ2lzdGVycygpOworICAgIGlmICgh
a2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgZG9udENsb2JiZXIuc2V0KEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwgV1RGTW92ZShkb250Q2xvYmJl
cikpOwogCi0gICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRp
b25QdHJUYWcpOworICAgIEFzc2VtYmx5SGVscGVyczo6Q2FsbCBjYWxsOworICAgIGlmIChrZXku
Y2FsbFRhcmdldCgpKQorICAgICAgICBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsK
KyAgICBlbHNlCisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBrZXkuaW5kaXJlY3RPZmZzZXQoKSksIE9wZXJhdGlvblB0clRhZyk7CiAK
ICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwpAQCAtMjMyLDcgKzIzOSw4IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtH
ZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RlRMVGh1bmspOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7
CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2Fs
bCwga2V5LmNhbGxUYXJnZXQoKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRv
Q1N0cmluZyhrZXkpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCAzNTRmOTU0N2I0YWJmMzI4OTZkMWNlYjRlYTIwMGZi
YjRhNGRlY2NkLi4wODRiMzhlZjgxMjUyNzUzOTdlNmEzOGI1YzYyNzY3NGMwZjM0ZTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgog
I2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCkBAIC02NTIsNyArNjUzLDcgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAgYXV0byBjYWxsTG9jYXRpb24gPSBsaW5rQnVm
ZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKSVRDb21waWxhdGlvblB0clRhZz4oY2FsbCk7CiAgICAg
ICAgIGxpbmtCdWZmZXIuYWRkTWFpblRocmVhZEZpbmFsaXphdGlvblRhc2soWz0sICZ2bV0gKCkg
ewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sICppbmZvKTsKLSAgICAgICAgICAg
IGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxU
aHVuaywgdm0pKTsKKyAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHVi
Um91dGluZTo6Y3JlYXRlKHZtLCB2aXJ0dWFsVGh1bmspKTsKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRodW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRl
eCAxYTc2M2I3YTc1ZGJjYTE3ODFiMGIwZjA4OTJmNGY0OTE5YzFkNWJjLi5iNmMzZmZiM2E5Y2M4
N2QxZWU4NzcxNjM4MzZlYzA4ZWNiMDQwZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjpl
bnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KFZNJiB2bSwgR1BSUmVnIHNoYWRvd1BhY2tldCwgR1BS
UmVnCiAgICAgc3RvcmVQdHIoc2NyYXRjaDIsIEFkZHJlc3Moc2NyYXRjaDFOb25BcmdHUFIpKTsK
IH0KIAotdm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUsIFdURjo6RnVuY3Rpb248dm9pZChDQ2FsbEhl
bHBlcnMmKT4gZW1pdENvZGUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKQordm9pZCBDQ2FsbEhl
bHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0
clRhZz4gd2hlcmUsIFNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPiBlbWl0Q29kZSwg
Y29uc3QgY2hhciogZGVzY3JpcHRpb24pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKICAgICBl
bWl0Q29kZShqaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5k
ZXggNjhiMTIxM2Y2ZDI0YzcwYWZiNTAzMzIwZWFhNzJkODllN2Q4NmJlOS4uZDgxMTg0N2JhZjBi
ZWYzYTdlMTM5NzQxMzdlZjNiZTg0MTZkMzIzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgog
I2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uVHJhaXRz
Lmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtMjA3LDcgKzIwOCw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogCiAgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFy
Z3VtZW50IHR5cGVzIHBhc3NlZCBpbiByZWdpc3RlciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4K
ICAgICAvLyBleHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMg
cGFzc2VkIG9uIHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0
IEFyZ0NvbGxlY3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAt
MjE5LDggKzIyMCw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVu
c2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+
Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBn
PiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2ln
bmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVu
c2lnbmVkIGg+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBk
LCBlLCBmLCBnLCBoPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMg
PSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIu
Z3ByRGVzdGluYXRpb25zOwpAQCAtMjMwLDY1ICsyMzEsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9u
cyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1
c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAx
LCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQu
Z3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0
LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAx
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQ
UlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2Vz
ICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAg
ICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJT
b3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNb
bnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5h
dGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1l
bnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdB
cmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJl
c3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NT
b3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25z
W251bUNyb3NzU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1
bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4
dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAx
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1H
UFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9u
c1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQ
b2tlPiBwdXNoTm9uQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRy
YVBva2U+IHJlc3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251
bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRp
b25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQog
Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBl
eHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0
cmFBcmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAg
ICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0
YWNrQXJnKEdQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsg
MSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJu
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQ
UlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2UgKyAxPiBhZGRQb2tlKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsK
KyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lm
IE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCkBAIC0zMzEsMTIgKzM0MSwxNCBAQCBjbGFzcyBD
Q2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VP
ZmZzZXQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJn
dW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQ
b2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAg
ICAgLy8gQ2xhbmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBS
UmVnL0dQUlJlZzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3Nl
ZCBkaXJlY3RseSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVy
cyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VE
X1BBUkFNKG5vbkFyZ0dQUnMpOworCiAgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRy
YUdQUkFyZ3M7CiAgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7
CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1
ICszNjIsMTUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BS
QXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBj
dXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZz
ZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFy
Z3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAg
ICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFy
Z3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7
CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBj
dXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSkKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRH
UFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNh
bGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNp
Z25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQs
IGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAg
ICB9CiAKQEAgLTM3Niw4ICszODgsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBv
cHRpbWl6YXRpb24gdGltZSBleHBsb3Npb24gYXNzb2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUg
aW4gcmVjdXJzaXZlIHRlbXBsYXRlcy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01T
VkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywg
QXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElO
RV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2lu
ZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBu
dW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAg
LTM5MiwzMSArNDA0LDMxIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0
byBhIGRvdWJsZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAg
bWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFy
ZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNW
YWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3Vt
ZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdz
Li4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBD
ZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFy
ZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVy
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAg
fQpAQCAtNDI0LDggKzQzNiw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikg
fHwgQ1BVKE1JUFMpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJn
cy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46
OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7
CiAKQEAgLTQ2OSwyNSArNDgxLDI1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50
IDwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncyArIDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyAr
IDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNr
QXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogI2VuZGlmCiAKICAgICAgICAgLy8gT3RoZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24g
c3RhY2suCi0gICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAg
IHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBpZiAoc3RhY2tBbGlnbmVk
KG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBh
cmdzLi4uKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBv
a2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXpl
b2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdT
b3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CkBAIC00OTcsMzQgKzUwOSwzNCBAQCBjbGFzcyBDQ2Fs
bEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAg
c2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tB
cmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBv
a2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3Mu
Li4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBB
cmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9u
QXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQg
cG9rZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFy
ZzIgYXJnMiwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVn
aXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5z
aWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpy
ZWdUMCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0
ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwot
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwor
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tl
ICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4u
Lik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxp
Z25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2Uo
KSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSArIDEpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UgKyAyKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZSArIDIpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2Uo
KSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4u
IGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2Vs
bFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51
bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAg
ICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5
bG9hZC5ncHIoKSk7CkBAIC01NDQsOSArNTU2LDkgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+
Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
SlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBu
dW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFy
Zy50YWdHUFIoKSk7CkBAIC01NjksMTEgKzU4MSwxMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBw
dWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNlbmRpZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BV
KE1JUFMpCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jh
c2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0
aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1Nw
ZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRy
Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcs
IEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3Vw
cG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2
ZXIgY2FsbCBvcGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8g
SWYgd2UgZXZlciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJn
dW1lbnRzIHdlIHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlw
ZXMsIHdoaWNoIHNvdW5kcwpAQCAtNTkxLDQ2ICs2MDMsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdz
Li4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUg
c3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRf
VFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FS
R1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRf
VFlQRSkgPD0gNCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywg
QXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJn
cy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5F
IHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5U
X1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9B
UkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5U
X1RZUEUpID09IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcs
IEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFy
Z3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElO
RSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdV
TUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFs
dWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3Zl
X3BvaW50ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAg
ICAgICAgfHwgc3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAog
ICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdz
IHJlYWxseSBhbm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0
ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAg
ICAgICAmJiBzdGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1
ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4u
Lik7CiAgICAgfQpAQCAtNjM5LDggKzY1MSw4IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1Ymxp
YyBBc3NlbWJseUhlbHBlcnMgewogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNh
c2U7IHNldCB1cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2U+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykK
ICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNo
ZWNrIik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTY1NSwzMSArNjY3LDQ0IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cFN0dWJB
cmdzPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2Vz
LCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6
ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByU291cmNlcykpOwogICAg
IH0KIAotcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzRW50cnlJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJncy4uLiBhcmdzKQorICAgIHsK
KyAgICAgICAgdXNpbmcgRmlyc3RBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+OworICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxGaXJzdEFyZ3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZh
bHVlKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFs
bHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9y
IDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBz
YW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBh
cmdzLi4uKTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAg
ICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVn
cyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0
KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4u
KEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAg
ICAgICAgfQorICAgIH0KIAotI2RlZmluZSBGSVJTVF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1
YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxG
SVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFy
Z3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4u
LiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkg
cmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVw
IGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBz
YW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
LCAwLCAwPigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAg
IHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwg
MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5M
SU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBD
YWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0
aW9uR1BSLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3Mg
bWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3Mp
LCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwg
MCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50
cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwg
MD4oKS5wdXNoTm9uQXJnKGZ1bmN0aW9uR1BSLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4u
Lik7CiAgICAgfQogCi0jdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0
aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25B
cmcoYWRkcmVzcy5iYXNlLCBHUFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CisgICAgfQog
CiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAg
ewpAQCAtODE5LDcgKzg0NCw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogICAgIC8vIExlYXZlcyBiZWhpbmQgYSBwb2ludGVyIHRvIHRoZSBQYWNrZXQg
d2Ugc2hvdWxkIHdyaXRlIHRvIGluIHNoYWRvd1BhY2tldC4KICAgICB2b2lkIGVuc3VyZVNoYWRv
d0NoaWNrZW5QYWNrZXQoVk0mLCBHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcgc2NyYXRjaDFO
b25BcmdHUFIsIEdQUlJlZyBzY3JhdGNoMik7CiAKLSAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29k
ZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CisgICAgc3RhdGlj
IHZvaWQgZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRy
VGFnPiB3aGVyZSwgU2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFy
Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRleCBmN2FhMzI5ZmUyNWQxOWM3
MzcxODQ3MGFlZmZiM2I0YWFlYTA1ZGI2Li5lNjY0MWJmNjJmNGQ2MjdmY2YzNWQzMDAxZmI4YTI1
Y2M0YWI0MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJl
SklUU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQog
CisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC0zOCwxOCArMzksMjIg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUdDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91
dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKK0dDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mIGNvZGUpCiAgICAgOiBKSVRTdHViUm91dGluZShjb2RlKQogewotICAgIHZtLmhl
YXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0aGlzKTsKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgeyB9CiAKK3ZvaWQgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjptYWtlR0NBd2FyZShWTSYgdm0pCit7CisgICAgdm0uaGVhcC5tX2ppdFN0dWJSb3V0
aW5lcy0+YWRkKHRoaXMpOworICAgIG1faXNHQ0F3YXJlID0gdHJ1ZTsKK30KKwogdm9pZCBHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogewotICAgIGlmIChtX2lz
SmV0dGlzb25lZCkgeworICAgIGlmIChtX2lzSmV0dGlzb25lZCB8fCAhbV9pc0dDQXdhcmUpIHsK
ICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRlZCBmb3Igd2hlbiB0aGUgc3lzdGVtIHNodXRz
IGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAgIC8vIHRoZSBKSVQgc3R1YiByb3V0aW5lIHNl
dCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBhcm91bmQgdG8gZGVsZXRpbmcKICAgICAgICAg
Ly8gdGhpcyBndXkuIEluIHRoYXQgY2FzZSB0aGUgR0MgaW5mb3JtcyB1cyB0aGF0IHdlJ3JlIGpl
dHRpc29uZWQgYWxyZWFkeQpAQCAtNzQsMTAgKzc5LDM1IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOjpkZWxldGVGcm9tR0MoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCitQb2x5bW9ycGhp
Y0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZN
JiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3Rv
cjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrU3RydWN0dXJlcykKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlKQorICAgICwgbV92bSh2bSkKKyAgICAsIG1fY2FzZXMoV1RGTW92ZShjYXNlcykp
CisgICAgLCBtX3dlYWtTdHJ1Y3R1cmVzKFdURk1vdmUod2Vha1N0cnVjdHVyZXMpKQoreworfQor
Cit2b2lkIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291
bnQoKQoreworICAgIGlmIChtX3ZtLm1fc2hhcmVkSklUU3R1YnMpCisgICAgICAgIG1fdm0ubV9z
aGFyZWRKSVRTdHVicy0+cmVtb3ZlKHRoaXMpOworICAgIEJhc2U6Om9ic2VydmVaZXJvUmVmQ291
bnQoKTsKK30KKwordW5zaWduZWQgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6Y29t
cHV0ZUhhc2goY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYgY2FzZXMsIGNv
bnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYgd2Vha1N0cnVjdHVyZXMpCit7CisgICAgSGFz
aGVyIGhhc2hlcjsKKyAgICBmb3IgKGF1dG8mIGtleSA6IGNhc2VzKQorICAgICAgICBXVEY6OmFk
ZChoYXNoZXIsIGtleS0+aGFzaCgpKTsKKyAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUlEIDogd2Vh
a1N0cnVjdHVyZXMpCisgICAgICAgIFdURjo6YWRkKGhhc2hlciwgc3RydWN0dXJlSUQpOworICAg
IHJldHVybiBoYXNoZXIuaGFzaCgpOworfQorCiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgY29uc3QgSlNDZWxs
KiBvd25lciwKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBj
YXNlcywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMsIGNvbnN0IEpT
Q2VsbCogb3duZXIsCiAgICAgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxM
aW5rSW5mbz4mJiBjYWxsTGlua0luZm9zKQotICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtKQorICAgIDogUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZShjb2RlLCB2bSwg
V1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpKQogICAgICwgbV9jZWxscyhj
ZWxscy5zaXplKCkpCiAgICAgLCBtX2NhbGxMaW5rSW5mb3MoV1RGTW92ZShjYWxsTGlua0luZm9z
KSkKIHsKQEAgLTEwNiw5ICsxMzYsOSBAQCB2b2lkIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYgdmlzaQogfQogCiBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2FyZUpJVFN0dWJS
b3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCAgY29uc3QgSlNDZWxsKiBv
d25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBj
YWxsTGlua0luZm9zLAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91
dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+
PiYmIGNhc2VzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrU3RydWN0dXJlcywgY29u
c3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxM
aW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhj
ZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJD
YWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2
bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQorICAgIDogTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vh
a1N0cnVjdHVyZXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpCiAgICAg
LCBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgbV9jb2RlT3JpZ2luUG9vbCgmbV9j
b2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlci0+Y29kZU9yaWdpbnMoKSkKQEAgLTE1Miw4ICsx
ODIsMTAgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6
b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB9CiAKIAotUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVK
SVRTdHViUm91dGluZSgKK1JlZjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiBjcmVh
dGVJQ0pJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nh
c2U+PiYmIGNhc2VzLAorICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtTdHJ1Y3R1
cmVzLAogICAgIFZNJiB2bSwKICAgICBjb25zdCBKU0NlbGwqIG93bmVyLAogICAgIGJvb2wgbWFr
ZXNDYWxscywKQEAgLTE2NSwxOCArMTk3LDI1IEBAIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRl
SklUU3R1YlJvdXRpbmUoCiAgICAgaWYgKCFtYWtlc0NhbGxzKSB7CiAgICAgICAgIC8vIEFsbG9j
YXRpbmcgQ2FsbExpbmtJbmZvcyBtZWFucyB3ZSBzaG91bGQgaGF2ZSBjYWxscy4KICAgICAgICAg
QVNTRVJUKGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSklUU3R1YlJvdXRpbmUoY29kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2Vz
KSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcykpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycy0+aml0VHlw
ZSgpKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGlu
ZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2Fs
bExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5k
bGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICBhdXRvIHN0dWIgPSBhZG9wdFJlZigqbmV3IEdD
QXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3Zl
KGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcyksIG93bmVyLCBjZWxscywgV1RGTW92ZShj
YWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhh
bmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAgIHN0dWItPm1ha2VHQ0F3YXJlKHZtKTsKKyAg
ICAgICAgcmV0dXJuIHN0dWI7CiAgICAgfQogCi0gICAgaWYgKGNlbGxzLmlzRW1wdHkoKSAmJiBj
YWxsTGlua0luZm9zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEdDQXdhcmVKSVRTdHViUm91
dGluZTo6Y3JlYXRlKGNvZGUsIHZtKTsKKyAgICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxM
aW5rSW5mb3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gc3R1YiA9IGFkb3B0UmVmKCpuZXcg
UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShjYXNlcyks
IFdURk1vdmUod2Vha1N0cnVjdHVyZXMpKSk7CisgICAgICAgIHN0dWItPm1ha2VHQ0F3YXJlKHZt
KTsKKyAgICAgICAgcmV0dXJuIHN0dWI7CisgICAgfQogICAgIAotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxs
cywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOworICAgIGF1dG8gc3R1YiA9IGFkb3B0UmVmKCpu
ZXcgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShjYXNlcyks
IFdURk1vdmUod2Vha1N0cnVjdHVyZXMpLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJ
bmZvcykpKTsKKyAgICBzdHViLT5tYWtlR0NBd2FyZSh2bSk7CisgICAgcmV0dXJuIHN0dWI7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5kZXggNDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0
ZDE4ZTZjZTFjYTlmZC4uM2E2N2RmYmM1ODZmYjdhNWNkZWZmMjE1Zjg0NDY4OGEyMGNiOWU2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRp
bmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGlu
ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJX
cml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBDb2RlT3JpZ2luUG9vbDsK
IH0KIAorY2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIEpJVFN0
dWJSb3V0aW5lU2V0OwogCkBAIC01NCwxMiArNTYsMTQgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmVT
ZXQ7CiAvLyBsaXN0IHdoaWNoIGRvZXMgbm90IGdldCByZWNsYWltZWQgYWxsIGF0IG9uY2UpLgog
Y2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIHB1
YmxpYzoKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJik7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mKTsK
ICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVm
PEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJv
dXRpbmU+IGNyZWF0ZShWTSYgdm0sIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mIGNvZGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pKTsKKyAgICAgICAgYXV0byBzdHViID0g
YWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSkpOworICAgICAgICBzdHVi
LT5tYWtlR0NBd2FyZSh2bSk7CisgICAgICAgIHJldHVybiBzdHViOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CkBAIC02OSw2ICs3Myw4IEBAIGNsYXNzIEdDQXdhcmVK
SVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAgICAgfQogICAgIAogICAg
IHZvaWQgZGVsZXRlRnJvbUdDKCk7CisKKyAgICB2b2lkIG1ha2VHQ0F3YXJlKFZNJik7CiAgICAg
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgb3ZlcnJpZGU7CkBA
IC04MSwxNCArODcsNDQgQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJ
VFN0dWJSb3V0aW5lIHsKIAogICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzSmV0dGlzb25lZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzR0NBd2FyZSB7
IGZhbHNlIH07Cit9OworCitjbGFzcyBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lIDog
cHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9
IEdDQXdhcmVKSVRTdHViUm91dGluZTsKKworICAgIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYs
IFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1
Y3R1cmVJRD4mJik7CisKKyAgICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+
JiBjYXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FzZXM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3Rv
cjxTdHJ1Y3R1cmVJRD4mIHdlYWtTdHJ1Y3R1cmVzKCkgY29uc3QgeyByZXR1cm4gbV93ZWFrU3Ry
dWN0dXJlczsgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoIW1faGFzaCkKKyAgICAgICAgICAgIG1faGFzaCA9IGNvbXB1dGVIYXNoKG1fY2FzZXMsIG1f
d2Vha1N0cnVjdHVyZXMpOworICAgICAgICByZXR1cm4gbV9oYXNoOworICAgIH0KKworICAgIHN0
YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4+JiwgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+Jik7CisKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAg
ICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IG1fY2FzZXM7
CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+IG1fd2Vha1N0cnVjdHVyZXM7CiB9OwogCiAv
LyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJrIG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJp
bmcgR0MgaWYgeW91ciBzdHViCiAvLyByb3V0aW5lIGlzIGtub3duIHRvIGJlIGV4ZWN1dGluZy4K
LWNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lIHsKK2NsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMg
UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU7CisKICAgICBNYXJraW5nR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lKAotICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0
b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKKyAgICAgICAgY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8
UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiwgY29uc3Qg
SlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4m
Jik7CiAgICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBvdmVycmlkZTsKICAgICAK
IHByb3RlY3RlZDoKQEAgLTEwNyw5ICsxNDMsOSBAQCBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0
dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiAvLyBmb3IgbmV3IGV4
Y2VwdGlvbiBoYW5kbGVycyB0byB1c2UgdGhlIHNhbWUgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgu
CiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6
IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKLSAgICB0eXBl
ZGVmIEdDQXdhcmVKSVRTdHViUm91dGluZSBCYXNlOworICAgIHVzaW5nIEJhc2UgPSBNYXJraW5n
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOwogCi0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4
Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+
JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5k
ZXgpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVk
VmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYs
IGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlu
a0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KTsKICAgICB+R0NB
d2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoKSBmaW5hbDsKIAogICAgIHZv
aWQgYWJvdXRUb0RpZSgpIGZpbmFsOwpAQCAtMTI5LDkgKzE2NSwxMCBAQCBjbGFzcyBHQ0F3YXJl
SklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5n
R0NBd2FyZUpJVAogLy8gYXBwcm9wcmlhdGUuIEdlbmVyYWxseSB5b3Ugb25seSBuZWVkIHRvIHBh
c3MgcG9pbnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQKIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxsIHRv
IEMrKyBvciBKUy4KIC8vIAotLy8gUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91
dGluZSgKKy8vIFJlZjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiBjcmVhdGVJQ0pJ
VFN0dWJSb3V0aW5lKAogLy8gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiYgY29kZSwKIC8vICAgIFZNJiB2bSwKKy8vICAgIEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywKIC8vICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAv
LyAgICBib29sIG1ha2VzQ2FsbHMsCiAvLyAgICAuLi4pOwpAQCAtMTQyLDggKzE3OSw4IEBAIGNs
YXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVi
bGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyB0aGlzIGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkg
ZW5kZWQgdXAgd2l0aCBtb3JlIGNvZGUgdGhhbiB0aGlzIHNpbXBsZQogLy8gd2F5LgogCi1SZWY8
SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCog
b3duZXIsIGJvb2wgbWFrZXNDYWxscywKK1JlZjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0
aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2Fz
ZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtTdHJ1Y3R1cmVzLCBW
TSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0
b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRl
SW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNk
NGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgwMDc3YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDYwLDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8g
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVy
czo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25B
cmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVh
eDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9
IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4
NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2
NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1
bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6eDY7IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0gQVJNNjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6
eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFS
TTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBy
ZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8v
IHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJu
R1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDFhZmZlOWU5Mzc3NjI5NmZmNzI3OWUxN2Y1MGJiODI4YTE0NTNhZjMuLmZkMjNiYjkxYmM5MTcw
OTAyMmIxNjYyMzE3MzVmMTUyNGM4OTkzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTEyNjUsMTIgKzEyNjUsMTIgQEAgdm9pZCBKSVQ6OmxpbmsoKQogCiAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgYnlWYWxDb21waWxhdGlvbkluZm8gOiBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
KSB7CiAgICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZU5vdEluZGV4SnVtcCA9IGJ5
VmFsQ29tcGlsYXRpb25JbmZvLm5vdEluZGV4SnVtcDsKLSAgICAgICAgICAgIGF1dG8gbm90SW5k
ZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOworICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXA7CiAgICAg
ICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJbmRleEp1bXApLmlzU2V0KCkpCiAgICAgICAg
ICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZU5vdElu
ZGV4SnVtcCkpOwogCiAgICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVK
dW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7Ci0gICAgICAgICAgICBhdXRv
IGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPigpOworICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcDsK
ICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQogICAg
ICAgICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGls
YXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CiAKQEAgLTEyNzksMTQgKzEyNzksMTkgQEAgdm9pZCBK
SVQ6OmxpbmsoKQogICAgICAgICAgICAgYXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlv
bkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5h
bFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKIAogICAgICAg
ICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5zZXRVcCgKLSAgICAgICAgICAg
ICAgICBub3RJbmRleEp1bXAsCi0gICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAsCiAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uSGFuZGxlciwKICAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0
aW9uSW5mby5hcnJheU1vZGUsCiAgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8u
YXJyYXlQcm9maWxlLAogICAgICAgICAgICAgICAgIGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAg
ICAgbmV4dEhvdFBhdGhUYXJnZXQsCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOwor
ICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90
SW5kZXhKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KCk7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZv
LT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ5
VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXAgPSBub3RJbmRleEp1
bXA7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2Jh
ZFR5cGVKdW1wID0gYmFkVHlwZUp1bXA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDU4MGZmNTAxMzU3M2ZhNjg1NzE3MjBmZTE3
NzhlMjUxNmRhZTc3OWQuLjdmZWQ4YmE0ODk5MDYyZDgwODkyY2QyNWFiMWUwMWUyZmFmMjhhMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjk0LDYgKzI5NCwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbkNhbGw7CiAgICAgICAgIH0KIAorICAg
ICAgICB2b2lkIGFwcGVuZENhbGwoQWRkcmVzcyBmdW5jdGlvbikKKyAgICAgICAgeworICAgICAg
ICAgICAgY2FsbChmdW5jdGlvbiwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgfQorCiAjaWYg
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNs
b3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0
aW9uKQogICAgICAgICB7CkBAIC0zOTcsMzkgKzQwMiwzOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kIHplcm8gZXh0ZW5kZWQuIEJhc2Ug
aXMgY2VsbCBjaGVja2VkLgogICAgICAgICAvLyBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxl
ZC4gUmV0dXJucyB0aGUgc2xvdyBjYXNlcy4gRmFsbC10aHJvdWdoCiAgICAgICAgIC8vIGNhc2Ug
Y29udGFpbnMgcmVzdWx0IGluIHJlZ1QwLCBhbmQgaXQgaXMgbm90IHlldCBwcm9maWxlZC4KLSAg
ICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpIHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChp
bnN0cnVjdGlvbiwgYmFkVHlwZSwgSW50MzJTaGFwZSk7IH0KLSAgICAgICAgSnVtcExpc3QgZW1p
dERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsK
LSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250
aWd1b3VzU2hhcGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlz
dCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykgeyByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0
aW9uLCBiYWRUeXBlLCBieVZhbEluZm8sIEludDMyU2hhcGUpOyB9CisgICAgICAgIEp1bXBMaXN0
IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgQnlWYWxJbmZvKik7CisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzTG9hZChjb25z
dCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIEluZGV4
aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJh
eU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyopOwogCiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGluIHJlZ1QxLCBi
YXNlIGlzIGluIHJlZ1QwLiByZWdUMiBjb250YWlucyBpbmRlY2luZyB0eXBlLgogICAgICAgICAv
LyBUaGUgdmFsdWUgdG8gc3RvcmUgaXMgbm90IHlldCBsb2FkZWQuIFByb3BlcnR5IGlzIGludC1j
aGVja2VkIGFuZAogICAgICAgICAvLyB6ZXJvLWV4dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tl
ZC4gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmlsZWQuCiAgICAgICAgIC8vIHJldHVybnMgdGhl
IHNsb3cgY2FzZXMuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1w
TGlzdCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNo
YWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIEludDMyU2hhcGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8sIEludDMyU2hhcGUpOwog
ICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlz
dCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
CisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgRG91YmxlU2hhcGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8sIERvdWJsZVNoYXBlKTsK
ICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExp
c3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIH0KICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUg
aW5kZXhpbmdTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRH
ZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlT
dG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1w
TGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyopOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVt
cExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1
dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBl
bWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5
cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qLCBUeXBlZEFycmF5VHlw
ZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEVDTUFNb2RlIGVj
bWFNb2RlKE9wKTsKQEAgLTkwMSwxMyArOTA2LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKKyAgICAgICAgdm9p
ZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MpOwogI2lmIE9TKFdJTkRPV1Mp
ICYmIENQVShYODZfNjQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPik7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAgICAgdm9p
ZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzLCBW
aXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRh
dGE+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmLCBjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYsIEFkZHJl
c3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbD4KQEAgLTkxNyw2ICs5MjYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lk
PgorICAgICAgICBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAg
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1
bHQoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0KTsK
KyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVHlwZT4KICAgICAgICAgc3RydWN0IGlzNjRCaXRUeXBlIHsKQEAgLTkz
Nyw2ICs5NTQsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJh
dGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVz
cyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAg
ICAgICAgICAgIC8vIHg2NCBXaW5kb3dzIGNhbm5vdCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRo
ZSByZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhhbiA2NCBiaXRzLgorICAgICAgICAgICAgaWYgY29u
c3RleHByIChpczY0Qml0VHlwZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6UmVzdWx0VHlwZT46OnZhbHVlKQorICAgICAgICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAs
IHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2Vsc2UgLy8gT1MoV0lORE9XUykgJiYgQ1BV
KFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihP
cGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgQXJncy4uLiBhcmdzKQpAQCAtOTQ0LDYgKzk3MiwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5
cGU+KGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgY2FsbE9wZXJh
dGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFy
Z3MuLi4pOworICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNz
KEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQogI2VuZGlm
IC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTWV0YWRhdGEsIHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CkBA
IC05NTQsNiArOTg5LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0
YWRhdGEsIG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShN
ZXRhZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0
LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9y
SW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRo
UHJvZmlsZShtZXRhZGF0YSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zm
c2V0KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzLCBBcmdzLi4uIGFyZ3MpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDFiNDlkNDg5ZGFhMmI3ODZhYjc5MzkyZjlhMzRl
YmM2NDRjZGFiMTguLjZhYjU0ODgyZDdkOTEyYzU2MTlmNmJhZjQwYTFjNjVhMDMxYmU2MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMzk4LDggKzM5OCw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBB
Y2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNv
ZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00MzIsOCArNDMyLDE1IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5l
eHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
Z2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayks
IEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlcmF0b3JHUFIsIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUo
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworCiAgICAgYXV0byBkb25lID0ganVtcCgp
OwogCiAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CkBAIC00ODAsOCArNDg3LDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BS
KTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2Rl
SW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZt
KCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BS
KSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmlt
cGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwg
cmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC00OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1Zh
bHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBz
aG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSk7CiAKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5
dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5p
bXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNj
ZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRl
Y29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1w
bCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0
LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBt
X2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNTI4LDE2ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0MKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKICAgICAgICAgSnVt
cExpc3Qgbm90T2JqZWN0OwogICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2Vs
bChpdGVyUmVzdWx0R1BSKSk7Ci0gICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RP
YmplY3QoaXRlclJlc3VsdEdQUikpOwogCiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVu
dCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CiAgICAgICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CiAgICAgICAgIAog
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50
KS5yYXdCaXRzKCkpOworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0
KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwor
ICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAg
ICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAg
ICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgcmVnVDEpOwogICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHJlZ1QwKTsKICAgICAgICAg
ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CkBAIC01NTYsOCArNTcwLDEz
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9m
aWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7Ci0KKyAgICAgICAg
Q2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+
KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdH
UFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCB2YWx1ZVZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElk
ZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZWNjNGU1ZjNmZjZkMDdmOTljMDc4NGRkNGMxMmRl
YmEwZTIxMGRjZi4uMTUyNTE0YWZkY2FjNzgyYWM5Yzg3NGU1NTBhZmZiOWM3MjhiZWEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMzk2LDEyICsz
OTYsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAg
bV9jb2RlQmxvY2ssCisgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLAogICAgICAgICBKU1Zh
bHVlUmVncyh0YWdJdGVyYXRvckdQUiwgcGF5bG9hZEl0ZXJhdG9yR1BSKSwKICAgICAgICAgbmV4
dFJlZ3MsCisgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5
SWQpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTUwNSwxMiAr
NTA3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uKQogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZChwYXlsb2FkVmFsdWVH
UFIpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgICAgIG1fY29k
ZUJsb2NrLAorICAgICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgICAgICBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5
dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAgICAgICBwcmVz
ZXJ2ZWRSZWdzLAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BS
KSwKICAgICAgICAgICAgIGRvbmVSZWdzLAorICAgICAgICAgICAgSW52YWxpZEdQUlJlZywKICAg
ICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBA
IC01MzMsMTIgKzUzNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAg
ICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksCiAgICAgICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCiAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAg
ICAgICAgICAgIHJlc3VsdFJlZ3MsCisgICAgICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAg
ICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggNzc0NTlhYmVhYzNlMmJmNDBkNDliMmViZGY3
ZDZjNjc4NTMxYjk1Ni4uNzM3NjY3OWJlODcyYjU5ODkzZjlhY2EzMTk4ZTllZmU1NTIyZjY4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBjbGFz
cyBUcmFja2VkUmVmZXJlbmNlczsKIGNsYXNzIFZNOwogCiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1
aW50OF90IHsKLSAgICBOb25lLAotICAgIEhvc3RDYWxsVGh1bmssCi0gICAgSW50ZXJwcmV0ZXJU
aHVuaywKLSAgICBCYXNlbGluZUpJVCwKLSAgICBERkdKSVQsCi0gICAgRlRMSklUCisgICAgTm9u
ZSA9IDBiMDAwLAorICAgIEhvc3RDYWxsVGh1bmsgPSAwYjAwMSwKKyAgICBJbnRlcnByZXRlclRo
dW5rID0gMGIwMTAsCisgICAgQmFzZWxpbmVKSVQgPSAwYjAxMSwKKyAgICBERkdKSVQgPSAwYjEw
MCwKKyAgICBGVExKSVQgPSAwYjEwMSwKIH07CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdp
ZHRoT2ZKSVRUeXBlID0gMzsKK3N0YXRpY19hc3NlcnQoV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIo
c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxKSVRUeXBlPj4oSklUVHlwZTo6RlRM
SklUKSkgKyAxID09IHdpZHRoT2ZKSVRUeXBlKTsKIAogY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7CiBwdWJsaWM6CkBAIC0xNTUsNiArMTU3LDE1
IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4g
ewogICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8
IGppdFR5cGUgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7CiAgICAgfQogCisgICAgc3RhdGljIGJv
b2wgdXNlRGF0YUlDKEpJVFR5cGUgaml0VHlwZSkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9u
czo6dXNlRGF0YUlDKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlRGF0YUlDSW5PcHRpbWl6aW5nSklUKCk7Cisg
ICAgfQorCiAgICAgdmlydHVhbCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAogICAgIGVudW0gY2xhc3MgU2hhcmVBdHRy
aWJ1dGUgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggMTg5M2M2ODAxMmIwMmI3NTYwMDczMWE2
Zjc3NjljYWIxYmUwZGRkMC4uZmRmZDJhOWRiNWNjNWUxMGJkMjcyYTNkODFhYTFmZjU4MTQzZWM5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKQEAgLTQzLDkgKzQzLDEwIEBAIHN0YXRpYyBTdHJ1Y3R1cmVTdHViSW5m
byogZ2FyYmFnZVN0dWJJbmZvKCkKIH0KIAogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSwKICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycykKICAgICA6IG1fY29kZUJs
b2NrKGNvZGVCbG9jaykKKyAgICAsIG1faml0VHlwZShqaXRUeXBlKQogewogICAgIG1fc3R1Yklu
Zm8gPSBtX2NvZGVCbG9jayA/IG1fY29kZUJsb2NrLT5hZGRTdHViSW5mbyhhY2Nlc3NUeXBlLCBj
b2RlT3JpZ2luKSA6IGdhcmJhZ2VTdHViSW5mbygpOwogICAgIG1fc3R1YkluZm8tPmNhbGxTaXRl
SW5kZXggPSBjYWxsU2l0ZTsKQEAgLTYwLDIwICs2MSwyMiBAQCB2b2lkIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKIAogICAgIG1fc3R1YkluZm8tPmRvbmVMb2NhdGlvbiA9IGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9kb25lKTsKIAotICAgIG1fc3R1
YkluZm8tPnNsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVy
bmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
bV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9zbG93UGF0aENhbGxMb2NhdGlvbiA9
IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOwog
ICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc2xvd1BhdGhCZWdpbik7CiB9CiAKIEpJVEJ5SWRH
ZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlLAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJh
dG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdp
c3RlcnMpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogewogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxv
YWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1
YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1
YkluZm8tPnZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CkBAIC04MywxMyArODYsMTUgQEAg
SklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKIAogdm9pZCBKSVRCeUlkR2VuZXJh
dG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
CiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2Nh
dGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBt
X3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIHZvaWQgSklUQnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxp
bmVJQ1NpemUpCiB7CisgICAgLy8gV2UgZ2VuZXJhdGUgdGhlIHNhbWUgY29kZSByZWdhcmRsZXNz
IG9mIHdoZXRoZXIgU2hhcmVkSUMgaXMgZW5hYmxlZCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgdG8g
dXNlIElubGluZUFjY2VzcworICAgIC8vIGZvciB0aGUgcGVyZm9ybWFuY2UgcmVhc29uLgogICAg
IG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNz
ZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQuanVt
cCgpOwpAQCAtMTAxLDkgKzEwNiw5IEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1NpCiB9CiAKIEpJ
VEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVl
KQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRU
eXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFz
ZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICwgbV9pc0xlbmd0aEFjY2Vzcyhwcm9wZXJ0eU5h
bWUudWlkKCkgPT0gY29kZUJsb2NrLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBsKCkp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BS
KCkpOwpAQCAtMTE1LDkgKzEyMCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJh
dGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVy
LCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1Jl
Z3MpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFs
dWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1
ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5m
b0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJz
LCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQodGhpc1Jl
Z3MucGF5bG9hZEdQUigpICE9IHRoaXNSZWdzLnRhZ0dQUigpKTsKIApAQCAtMTMzLDEwICsxMzgs
MTAgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgo
TWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJ
ZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZp
ZXIsCisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIAogICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5k
IHB1dEtpbmQpCi0gICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVl
KQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSwgc3R1YkluZm9HUFIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAgICAg
LCBtX3B1dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3MSwxNCArMTc2LDE1IEBAIFZfSklUT3BlcmF0
aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdl
bmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK0pJ
VERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywg
aml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlW
YWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlm
aWVyID0gZmFsc2U7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXls
b2FkR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigp
OwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBt
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAg
IG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMTkxLDI2ICsxOTcs
MzAgQEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0g
aml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1f
c3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9z
dHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0
cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQ
YXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7
CiB9CiAKLXZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZm
ZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0
aCkKIHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJh
c2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0
aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6
ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkp
CisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbjsKIH0KIAotSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQ
UlJlZyBzY3JhdGNoKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlk
R2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRU
eXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdp
c3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsK
ICAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAg
ICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1Yklu
Zm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZh
bHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZv
R1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFz
ZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdH
UFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMjIzLDI2ICsyMzMsMzAgQEAgSklURGVsQnlJZEdlbmVy
YXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdp
biBjb2RlT3IKIHZvaWQgSklURGVsQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Ns
b3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAg
IGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0
clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJs
ZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeUlk
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZm
ZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93
UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1f
Y29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUSW5C
eVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkluQnlWYWwsIHVzZWRSZWdpc3Rl
cnMpCitKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNv
ZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkluQnlWYWwsIHVzZWRSZWdpc3Rl
cnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAK
ICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHVi
SW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0
dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
bV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+
dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7CkBAIC0yNTMsNyArMjY3LDExIEBAIEpJVElu
QnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVPcmlnaW4gY29kZU9yCiB2b2lkIEpJVEluQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7
Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIp
OworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKQEAgLTI2
MSwxMiArMjc5LDE1IEBAIHZvaWQgSklUSW5CeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAg
TGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewogICAgIEFTU0VS
VChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0
aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1f
c3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRo
LmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0
ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUSW5CeUlkR2Vu
ZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29k
ZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW5CeUlkLCB1c2VkUmVn
aXN0ZXJzLCBiYXNlLCB2YWx1ZSkKK0pJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJh
dG9yKAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisg
ICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIEFjY2Vzc1R5cGU6OkluQnlJZCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0
dWJJbmZvR1BSKQogewogICAgIC8vIEZJWE1FOiBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBw
YXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4KICAgICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1l
KTsKQEAgLTI3OSwxNSArMzAwLDE1IEBAIHZvaWQgSklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVEluc3RhbmNlT2ZHZW5lcmF0
b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAotICAgIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFs
dWUsIEdQUlJlZyBwcm90b3R5cGUsCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUg
aml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAg
IEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLCBib29sIHByb3RvdHlwZUlzS25vd25P
YmplY3QpCi0gICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICAgICAgY29kZUJsb2Nr
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2Vk
UmVnaXN0ZXJzKQorICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRU
eXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1
c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBt
X3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3Rv
dHlwZUdQUiA9IHByb3RvdHlwZTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1
YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFn
R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFs
aWRHUFJSZWc7CkBAIC0zMDcsMjEgKzMyOCwyNCBAQCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpK
SVRJbnN0YW5jZU9mR2VuZXJhdG9yKAogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQu
cGF0Y2hhYmxlSnVtcCgpOworICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BS
KTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1f
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBq
aXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCiB2b2lk
IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBM
aW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6Zmlu
YWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwKLSAgICAgICAgZmFzdFBhdGgubG9j
YXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9qdW1wKSk7Ci0gICAgCi0gICAgZmFzdFBh
dGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0aC5sb2NhdGlvbk9mPE5vUHRyVGFnPihtX3Ns
b3dQYXRoQmVnaW4pKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1f
Y29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUR2V0
QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2Nr
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkK
LSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NU
eXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1Yklu
Zm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNp
dGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShiYXNlKQog
ICAgICwgbV9yZXN1bHQocmVzdWx0KQogewpAQCAtMzMwLDYgKzM1NCw3IEBAIEpJVEdldEJ5VmFs
R2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigp
OwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BS
KCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAg
IG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAg
IG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAtMzQwLDIwICsz
NjUsMjMgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0
ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29k
ZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Ns
b3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVs
KCk7CiB9CiAKLXZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUR2V0QnlWYWxH
ZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6
ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgs
IHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0
YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBt
X3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247
CiB9CiAKLUpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgYnJhbmQpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRl
eCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKK0pJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVy
YXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVn
IHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJU
KGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlw
ZSA9PSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQpOwogICAgIG1fc3R1YkluZm8tPmhhc0Nv
bnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwpAQCAtMzYxLDYgKzM4OSw3IEBAIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigp
OwogICAgIG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRHUFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAg
ICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8t
Pm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8t
PnYuYnJhbmRUYWdHUFIgPSBicmFuZC50YWdHUFIoKTsKQEAgLTM3MSwxNiArNDAwLDE5IEBAIEpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yKENvZGVCbG9jayogY29kZUJsCiB2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3RhcnQg
PSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyht
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2Rl
UHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xv
d1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwo
KTsKIH0KIAotdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKAot
ICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0
aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7
Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBh
dGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6
OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHVi
Um91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9q
aXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xv
d1BhdGhTdGFydExvY2F0aW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA5
MDRkYjE0MjIyMzhiZDE0Y2YzNDI5MWFmNzUzNjg0MDhiYTU3YjlhLi40YjQ3OWI5NzZlMWU3NzE2
YzAzMzZlNTI1Zjc3MmVkMzJmY2QxNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC00MSwxMiArNDEsMTIgQEAgY2xh
c3MgQ29kZUJsb2NrOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNj
ZXNzVHlwZSA6IGludDhfdDsKK2VudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIGNsYXNz
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcigpIHsgfQotICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBD
b2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyk7CisgICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Io
Q29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOwogICAgIAogcHVibGljOgogICAg
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc3R1YkluZm87
IH0KQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAg
IAogcHJvdGVjdGVkOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgSklUVHlwZSBt
X2ppdFR5cGU7CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIG1fc3R1YkluZm87CiAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwpAQCAtNzcsOCArNzgsOCBAQCBjbGFzcyBKSVRCeUlk
R2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRCeUlk
R2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxv
Y2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHVi
SW5mb0dQUik7CiAKIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdApAQCAtMTAxLDEzICsxMDIsMTMgQEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVi
bGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlJZEdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sq
LCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBl
LCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSk7CiAgICAgCiAg
ICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAKQEAgLTExNSwyNiAr
MTE2LDI2IEBAIGNsYXNzIEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVy
YXRvciB7CiAgICAgYm9vbCBtX2lzTGVuZ3RoQWNjZXNzOwogfTsKIAotY2xhc3MgSklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Ig
ewogcHVibGljOgogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigpIHsgfQogCiAgICAg
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2Fj
aGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlw
ZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BS
KTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAot
Y2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2Ns
YXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7
CiBwdWJsaWM6CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9k
ZShFQ01BTW9kZTo6c3RyaWN0KCkpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
KAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01B
TW9kZSwgUHV0S2luZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1
ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQp
OwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAg
IApAQCAtMTQ1LDE0ICsxNDYsMTQgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1Ymxp
YyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKIH07CiAKLWNsYXNz
IEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsK
K2NsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBw
dWJsaWM6CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5VmFs
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNj
cmF0Y2gpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTE3MCwxNCArMTcxLDE0IEBAIGNs
YXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07
CiAKLWNsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IgeworY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJh
dG9yOwogcHVibGljOgogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERl
bEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlm
aWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJl
ZyBzY3JhdGNoKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlk
ZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwg
R1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTIwMSw4ICsyMDIsOCBAQCBj
bGFzcyBKSVRJbkJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJh
dG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisgICAgICAgIENvZGVC
bG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0y
MjAsNDIgKzIyMSw1MCBAQCBjbGFzcyBKSVRJbkJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBt
X3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBK
SVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEluQnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7
IH0KIAogICAgIEpJVEluQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENh
Y2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJik7CiB9OwogCi1jbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIDogcHVibGljIEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHVibGljOgorICAgIHVzaW5nIEJh
c2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KCkgeyB9CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsCi0gICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHBy
b3RvdHlwZSwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCisgICAgICAgIENvZGVC
bG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAorICAgICAgICBHUFJSZWcgdmFsdWUs
IEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gxLCBH
UFJSZWcgc2NyYXRjaDIsCiAgICAgICAgIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZh
bHNlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsK
IAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOworICAgICAgICBy
ZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOworICAgIH0KKwogICAgIHZvaWQgZmluYWxpemUo
TGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtC
dWZmZXIpOwogCiBwcml2YXRlOgotICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1f
anVtcDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVEdldEJ5
VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAg
ICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
KAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NU
eXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCk7CisgICAg
ICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1w
KCkgY29uc3QKICAgICB7CkBAIC0yNzYsMTQgKzI4NSwxNCBAQCBjbGFzcyBKSVRHZXRCeVZhbEdl
bmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Ig
eworY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkg
eyB9CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyBicmFuZCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0
dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAzOTgw
Mzk0ZTE2Y2NhZDEyMmZhODUwZDQxMTA5YjM1MDBlNjdhOWMzLi4xOTNlMjc4NmRiN2UzYzE3NWI2
NjU4ZmIzZDM5ZTk5ZjVhZmI1MzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaApAQCAtMzMsMTcgKzMzLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1v
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2Rl
KSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3Vy
cmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQo
Y3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklURG91
YmxlOgotICAgICAgICByZXR1cm4gZW1pdERvdWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlv
biwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAg
IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsK
KyAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJl
dHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwor
ICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTEyNyw2ICsxMjcsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3QKICAgICByZXR1cm4g
Y2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwor
ICAgIGFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIGV4Y2VwdGlvbkNoZWNrKCk7Cit9CisKICNp
ZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVy
blR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKIHsKQEAg
LTE1Niw2ICsxNjMsMTYgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2Fs
bDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyBmdW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRz
dCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1
ZUdQUik7CisjZWxzZQorICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJu
VmFsdWVHUFIpOworI2VuZGlmCit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBj
b25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0
ZXIgZHN0KQogewpAQCAtMTcwLDYgKzE4NywxOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQog
ICAgIHJldHVybiBjYWxsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KK0FMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIGZ1bmN0aW9uLCBW
aXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
ZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEsIEpTVmFsdWVSZWdzKHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsK
KyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNl
bmRpZgorfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVnKQogewogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25DZWxsKHJlZykpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBlZTE5ZTZhZGY3MDI4N2I2ZDE4
MGZjMjRiMTQ3NGUxYmZhMzE2OGU4Li5kMTk4ZDQxYTFjYmEwMzNiNzFhNjlkMjRiNWMwNmNiOGM3
MjBkZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE2
NCwxMyArMTY0LDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUK
ICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIHJlZ1Q1LAogICAgICAgICByZWdUMywg
cmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNs
b3dDYXNlKCk7CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0xODYsNyArMTkxLDE0IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0YW5j
ZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3Rh
bmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKKworICAgIENhbGwg
Y2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkg
eworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5z
dGFuY2VPZk9wdGltaXplOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZv
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlw
ZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdFZS
ZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCwgcmVnVDIsIHJlZ1QxKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBy
ZWdUMiwgcmVnVDEpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Y2FsbCk7CiB9CiAKQEAgLTE4MDQsNyArMTgxNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5
cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRG
b3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUpOworICAg
IEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVj
dGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKICAgICBKdW1wIGRv
bmUgPSBqdW1wKCk7CiAKQEAgLTE4MTksOCArMTgzMSwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJl
c3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRy
VGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMs
IHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJu
QWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwot
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFk
ZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihy
ZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFz
SW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRh
cmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgIH0gZWxz
ZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fYmFk
VHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2Vu
ZXJpYykpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5k
ZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAt
MTg1NCwxMSArMTg3MSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRl
eGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1
bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUw
MzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVu
dEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBl
bWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5
VmFsSW5mbyk7CiAgICAgCiAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAg
CiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBAIC0xODg0LDcgKzE5MDIsMTQgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0g
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlE
ZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5m
by0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdDsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ5VmFsSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eURlZmF1bHQpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEJ5VmFsSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsKIAogICAgIG1fYnlWYWxDb21waWxh
dGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1Bh
dGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0u
cmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKaW5kZXggMzZjNWJjOGJhNjU3NWExYjM1MmQ4NWY3ZGVjOTVjZWY1M2Vh
YTQ1OS4uOGZhZmJmNmFkZDc4MTQ2ODBhY2UwMWI5ODg5MjI2NzI2NmQ4NDY0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTYyLDEzICsx
NjIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90
byk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAg
ICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICBy
ZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVnVDMsIHJl
Z1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1faW5zdGFuY2VPZnMuYXBwZW5k
KGdlbik7CiAgICAgCiAgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJlZ1QwKTsKQEAgLTExODMsNyAr
MTE4NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZh
bEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMu
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUw
MzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0g
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3Ry
dWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVt
aXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBl
LCBudWxscHRyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAg
ZG9uZSA9IGp1bXAoKTsKIApAQCAtMTE5OCw3ICsxMjAwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRy
ZXNzUHQKICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0
clRhZywKICAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVz
LCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVy
bkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2Fs
bChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOwogfQog
CkBAIC0xMjM0LDcgKzEyMzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBB
cmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3Vy
cmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMg
PSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUs
IGJ5VmFsSW5mbyk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGFk
ZFNsb3dDYXNlKGJhZFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggNDE4NWM3NjJjOTg1MzFkMjk0MDc1MTdlMmU3YTczNDRlZmQzODNmZi4u
YjY3OTQ0M2U1YjM5M2Q3MzcwNDA2M2YyNTVmMTNiNTVhYmVjYzc2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDQ3LDcgKzEwNDcsMTAgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJl
c3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgog
ICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyks
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZURh
dGFJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2Fs
bEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9w
ZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUs
IGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KQEAgLTExMzksNyArMTE0MiwxMCBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KgogICAgIGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpH
aXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAg
IGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlS
ZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0
YUlDKCkpCisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0
Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNT
KSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKICAgICB9CiAKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBz
dWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CkBAIC0xMzIzLDcgKzEzMjks
MTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0
ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIg
dHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7
Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAg
ICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJp
Yyk7CiAgICAgfQogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjYxMiw3ICsyNjIxLDExIEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZh
dWx0LCBFbmNvZGVkSlNWYWx1ZSwgKEpTCiAgICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1Bh
dGhDb3VudCA+PSAxMAogICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBl
SW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8oKSkgewogICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUu
Ci0gICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0
cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmlj
KTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICAg
ICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5R2VuZXJpYzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdGlQYXRj
aENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCBhODdiYjMyY2NmZTdjZTdmYmUyNTU2NGRiMTFiZDcxNGVkOWMyZTE0Li4yNWQyZTlkMzc3
YmVhOWY0Y2U4MGIyMTBhMmQ3MzUzNjBmYjUwNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNjksMTIgKzY5LDE1IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1Qw
KTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVncyk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3VsdFJlZ3MsIHJlZ1QyKTsKICAgICAgICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAg
ICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4p
OwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTkzLDggKzk2LDggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKIAogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwot
ICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKwogICAgICAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
QEAgLTExOCw3ICsxMjEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUpLCBwcm9maWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxs
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsID0gYXBwZW5k
Q2FsbChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCBy
ZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzgsNyArMTQ1LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0g
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0Owog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTE1Nyw5ICsxNjUsMTAgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2Zp
bGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxs
IGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1
cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
cmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9n
ZXRfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0xODIsMTAgKzE5MSwxMyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsK
IAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwg
cmVzdWx0UmVncyk7CkBAIC0yMDEsOCArMjEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dl
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUK
IAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJ
bmRleDsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRC
eVZhbEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMjI2LDcgKzIzNywxMSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0
dWJJbmZvR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUp
OwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0yNDUsNyArMjYwLDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5
ICsyNzksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlz
IGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAg
ICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQo
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQor
ICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CkBAIC0yODUsMTAgKzMw
MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlR1BSLCBiYXNlKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5k
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUikpOworICAgICAgICBtX2NvZGVC
bG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJh
bmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgcmVnVDIpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQo
Z2VuKTsKIAogICAgIC8vIFdlIHNob3VsZCBlbWl0IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBv
ZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJyaWVyIGNsb2JiZXJzIHJlZ2lzdGVycy4KQEAgLTMw
Miw4ICszMjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogewogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAg
KyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vz
c0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzI4LDkgKzM0NywxNCBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRz
PGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlw
ZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9w
dGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAj
ZW5kaWYKKwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CiB9CiAKQEAgLTM0NiwxMCArMzcwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7
CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFj
Y2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCkBAIC0zNTcsOCArMzg0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnQKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21f
cHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRl
eDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKICAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAg
LTM4Myw3ICs0MDksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVja1By
aXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0
eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZh
bHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJh
bmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisg
ICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1p
emUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAKQEAgLTQxNSw4ICs0NDUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAgICAgUGF0Y2hhYmxlSnVt
cCBub3RJbmRleDsKICAgICBpZiAoIXByb3BlcnR5TmFtZUlzSW50ZWdlckNvbnN0YW50KSB7Ci0g
ICAgICAgIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEludChyZWdUMSk7Ci0gICAg
ICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGF1dG8gaXNJbnQzMiA9IGJy
YW5jaElmSW50MzIocmVnVDEpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mo
JmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgICAgICAgICBpc0ludDMyLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOworICAg
ICAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAgICAgICB9CiAgICAgICAgIC8vIFNl
ZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChy
ZWdUMSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwyMyArNDY4LDI0IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0
Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJs
ZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERv
dWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBl
bWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2Vz
ID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBi
eVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAg
ICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwog
ICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtNDU3LDcgKzQ5NCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUp
CiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKQEAgLTQ2NSw3
ICs1MDIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKICAgICAKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsK
KyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwg
VHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1
dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGlu
ZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZElt
bTMyKGluZGV4aW5nU2hhcGUpKTsKKwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgb3V0T2ZCb3Vu
ZHMgPSBicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJm
bHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKQEAgLTUxNSw3ICs1NjEsNyBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExp
c3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTIz
LDcgKzU2OSwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFs
KE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIAogICAgIEp1bXBMaXN0
IHNsb3dDYXNlczsKICAgICAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAg
ZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0
aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CisKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3Mo
cmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKQEAgLTU2OCw4
ICs2MjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdUMSk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtp
bmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCByZWdUMiwg
ZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1i
YXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25h
bFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXpl
LgpAQCAtNTgwLDcgKzYzNSwxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5
VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhp
cyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9u
KCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJ
bmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7
CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhG
dW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4u
c2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdU
MCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJv
cGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYzOCw4
ICs2OTksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihlY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYXV0byogb3BlcmF0aW9uID0gaXNEaXJl
Y3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxP
cHRpbWl6ZTsKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgQ2Fs
bCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChpc0RpcmVjdCA/IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCkBAIC02NTcsNyArNzIxLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5ICs3NDAsMTAgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlW
YWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVl
UFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNh
bGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJl
dHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4
X3ByZXBhcmVDYWxsIik7CkBAIC02OTYsOCArNzYyLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKLSAgICBQYXRj
aGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwotICAgIGFkZFNsb3dDYXNl
KGZhc3RQYXRoSm1wKTsKKyAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wOworICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBmYXJKdW1w
KEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0
dWJSb3V0aW5lUHRyVGFnKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZmFzdFBhdGhKbXAgPSBwYXRj
aGFibGVKdW1wKCk7CisgICAgICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICB9CiAg
ICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CiAgICAgCkBAIC03NDMsNyArODE0LDExIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVkSW1tMzIocHV0S2luZC52
YWx1ZSgpKSwgcHV0S2luZEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplOworICAgIGVs
c2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcgKzgzNiw4IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFy
ZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsK
IAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC03NzksOSArODU1LDEwIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIHB1dEtpbmRHUFIpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5z
dGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAg
aml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQor
ICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAtODQ2LDEx
ICs5MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBy
ZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKICAg
ICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDMsIHJlZ1QyKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQor
ICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAg
ICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpAQCAtODk4LDE1ICs5Nzgs
MTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5z
dHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemU7
CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fz
c2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCkBAIC05MTgsNyArMTAwMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsK
IAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC05MzUsOSArMTAxOSwxMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0
YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8v
IG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAg
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtOTU2LDEwICsxMDQxLDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVs
c2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsK
IAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CkBAIC0xMDA4LDE1
ICsxMDk2LDE4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7
CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAg
ICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdU
MCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkp
OworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAK
ICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTEwMjgsNyArMTExOSw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBK
SVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkg
KzExMzcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBt
YWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBp
bnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAg
ICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4
ICsxMTYxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTEwLDcgKzEyMDMsMTEg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
blRyeUdldEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMTMzLDggKzEyMzAsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdz
KHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3Ms
IEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTExNzYsNyArMTI3MywxMSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
R2V0QnlJZERpcmVjdE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAg
ZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0
aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMDgs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywg
QWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJl
Z3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dl
dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTIzMyw4ICsxMzM0LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAK
ICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJ
ZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTEyNzUsNyArMTM3NiwxMSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAg
ICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRh
ZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTI5NCw3ICsxMzk5LDggQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQo
dm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEzMTEsOSArMTQxNywx
MCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBk
aXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJu
aW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJK
dW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJl
dCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0
X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xMzU0LDcgKzE0NjEsMTEgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09w
dGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0
QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
ICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBA
IC0xMzczLDcgKzE0ODQsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwpAQCAtMTM5Miw5ICsxNTA0LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFy
ZUNhCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhp
c0dQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAK
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkg
dG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0
aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93
aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0MTgsMTEgKzE1MzEsMTAgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVj
b2RlKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAogICAgICAgICBkaXJlY3QgPyBQdXRLaW5k
OjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3QpOwotICAgIAogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNDY1LDcgKzE1NzcsMTEgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xv
d1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgIGVsc2UKKyAgICAgICAg
Y2FsbCA9IGFwcGVuZENhbGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApA
QCAtMTQ4MSw3ICsxNTk3LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKQEAgLTE1MDAsOSArMTYxNywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAK
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkg
dG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0
aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9w
cmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjM5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5f
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVEluQnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
bV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU2NCw3ICsxNjgyLDExIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
Pjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVy
YXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQ
Uik7CkBAIC0xNTg4LDEwICsxNzEwLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOwogCiAgICAgSklUSW5CeVZh
bEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nh
c2UoKTsKICAgICBtX2luQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QpOwpAQCAtMTYzNCw3ICsxNzU5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5C
eVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2YWx1
ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7CisgICAg
Q2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
SW5CeVZhbE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uSW5CeVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI4
MjQsOCArMjk1Myw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICBlbWl0TG9hZCh2YWx1
ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBw
dXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCisg
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtp
bmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBw
ZW5kKGp1bXAoKSk7CiAKQEAgLTI4MzUsNyArMjk2NCwxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHByZXNlcnZlIHRoZSB2YWx1ZSBh
bmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0aGUgdGFnLgogICAgIGVt
aXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24o
Z2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4u
c3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdl
bi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOwor
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25B
cmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5j
dGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQ
UkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAg
ICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygp
KTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAg
IGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjg4NywyOSArMzAyMiwyOSBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNl
IEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29k
ZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVj
b2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3Vi
bGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91
czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJp
ZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVj
b2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVy
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgVHlwZWRBcnJh
eVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBlRm9ySklUQXJyYXlNb2RlKGFycmF5TW9kZSk7CiAg
ICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRU
eXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIHR5cGUpOworICAgICAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwg
bnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IE9w
dGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJheSBpbiBJQwogICAgICAgICAgICAg
Ly8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5IC8gQmlnVWludDY0QXJyYXkgbmV2ZXIgY29tZXMg
aGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjExODMKICAgICAgICAgICAgIEFTU0VSVChpc0Zsb2F0KHR5cGUpKTsKLSAgICAgICAg
ICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5
UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIsIHR5cGUpOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI5MzYsOCArMzA3MSwxNCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHVi
Um91dGluZVB0clRhZywKICAgICAgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBz
dHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0
YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgfQotICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
aXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRC
eVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0
aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24g
PSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxS
ZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0
clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGly
ZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZy
b20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3
ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgpA
QCAtMjk3Niw4ICszMTE3LDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVO
YW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BCiAgICAgICAgICJC
YXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBz
dHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCku
ZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50
YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7
CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hD
YWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBi
eVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOwor
ICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVO
YW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0
dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJU
YWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgpAQCAtMzAxNCwxNSArMzE2MCwyMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRC
eVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogICAg
ICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVz
JyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGly
ZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCks
IHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZh
bHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29k
ZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgaWYgKEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZv
LT5tX25vdEluZGV4SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAg
YnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJp
YzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlW
YWxJbmZvLT5tX25vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVz
c1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVy
bkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtp
bmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25z
dW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAog
Ly8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2
YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hl
ZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENh
Y2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERpcmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRk
cmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzAzOCw3
ICszMTg5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5n
LCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAg
ICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRy
dXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRy
VGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGlu
ZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZElt
bTMyKERvdWJsZVNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkRG91YmxlKEJhc2VJbmRleChzY3Jh
dGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIGZwUmVnVDApOwpAQCAtMzA0Nyw3ICszMjA3LDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCitKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBleHBl
Y3RlZFNoYXBlKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0g
cmVnVDA7CkBAIC0zMDY1LDcgKzMyMjUsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250
aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKIAog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
aWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNo
MzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgICAg
ICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRh
cmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUu
bGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hh
YmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFw
ZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90
RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworCiAgICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwg
QWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAg
ICAgbG9hZFZhbHVlKEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIHJl
c3VsdCk7CkBAIC0zMDc0LDcgKzMyNDMsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRp
Z3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAg
IHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9y
YWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzA5Myw3ICszMjYy
LDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwog
CiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJheVN0b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBz
Y3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gs
IFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFw
ZSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
IHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RU
eXBlID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1
dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZh
ckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBK
SVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhp
cyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBl
IC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBh
dGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5
U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVz
cyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2Ny
YXRjaCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTMxMDUsNyAr
MzI4Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBl
IHR5cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayk7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9m
aWxlOwpAQCAtMzEzMCw3ICszMzA4LDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlw
ZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBh
dGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBl
Rm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAg
ICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gs
IFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAg
IGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQp
LCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmso
dGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRB
cnJheVR5cGUodHlwZSkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlw
ZWRBcnJheVR5cGUodHlwZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGlu
Qm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVt
aXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpAQCAtMzE4MSw3
ICszMzY5LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlKQor
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJy
YXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOwpAQCAtMzIwNiw3ICszMzk0LDE3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0z
Mih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsK
KyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNj
cmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAg
ICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBU
YXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBl
LmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9y
VHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBh
dGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBl
Rm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwogICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBK
dW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwog
ICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKaW5kZXggODU1N2QyZGVjZTVlNTY5NGY3ODE4MzBlMTI2MDI2YTNlNmMyZTYwZC4uY2NkMjQ0
ZDFhZGVmMmYyZWJjYzFlODg0OTYxMWY5ODk4ZGIwZDM3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSAr
MTMxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCks
IGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgcmVnVDQpOwor
ICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogICAgIG1fZGVsQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwg
cHJvcGVydHlSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJl
Z1Q0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKQEAgLTI1Nyw4ICsyNTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJl
Z3MsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJv
cGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRy
dWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAg
ICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIHJlc3VsdFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwg
cmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZh
bHMuYXBwZW5kKGdlbik7CkBAIC0zOTMsOCArMzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwog
CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7Cisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6
OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDgg
KzQzMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpD
aGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3Ms
IGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRl
QnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAgLTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAg
ICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVt
aXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2Fz
ZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8p
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBD
UkFTSCgpOwpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZh
bEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtNTIwLDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3Qg
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BB
UkFNKGJ5VmFsSW5mbyk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMSwgVHJ1c3RlZEltbTMyKENvbnRpZ3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpA
QCAtNTcyLDcgKzU3Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3Vv
dXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTU4MSw2ICs1ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAorICAgIFVOVVNFRF9QQVJBTShi
eVZhbEluZm8pOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAt
NjYwLDggKzY2Miw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlk
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ss
ICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIElu
dmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJl
c3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlw
ZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQo
Z2VuKTsKQEAgLTc0OCw4ICs3NTAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRC
eUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3Ms
IEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApOwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBy
ZXN1bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUNCwgcmVnVDMpLCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5
SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC04MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIEludmFsaWRHUFJSZWcsCiAgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFN
b2RlKCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAg
ICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBA
IHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsK
IAogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHViUm91dGluZS5oCmluZGV4IDg4MTQ2NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0Mjgz
NDg2Y2RmYWIuLjlkM2Q3NmI0M2I0NmEyM2FiMGQzODY4ZTlhZGRiODMxNGVjMDkzOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsK
IAorI2lmIFVTRShKU1ZBTFVFNjQpCit1c2luZyBTdHJ1Y3R1cmVJRCA9IHVpbnQzMl90OworI2Vs
c2UKK3VzaW5nIFN0cnVjdHVyZUlEID0gU3RydWN0dXJlKjsKKyNlbmRpZgorCitjbGFzcyBBY2Nl
c3NDYXNlOworCiAvLyBUaGlzIGlzIGEgYmFzZS1jbGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMs
IGFuZCBhbHNvIHRoZSBjbGFzcyB5b3Ugd2FudAogLy8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkg
aWYgeW91IGhhdmUgYSByb3V0aW5lIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJv
bSB0aGUgR0MuIElmIGluIGRvdWJ0LCB1c2Ugb25lIG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVz
LiBCdXQKQEAgLTEwMyw2ICsxMTEsNyBAQCBjbGFzcyBKSVRTdHViUm91dGluZSB7CiAKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fY29kZTsKICAgICB1
bnNpZ25lZCBtX3JlZkNvdW50OworICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXNoIHsgMCB9Owog
fTsKIAogLy8gSGVscGVyIGZvciB0aGUgY3JlYXRpb24gb2Ygc2ltcGxlIHN0dWIgcm91dGluZXMg
dGhhdCBuZWVkIG5vIGhlbHAgZnJvbSB0aGUgR0MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYw
Njg2MjczZGRhODFjYmI2ZDAxY2QyMWRkMDk4OWNjNmUyYjguLjQxMTViYTI1Y2VkMTYyM2IzYTI4
NTE3ZWNiNmQyYjg1NTk4MGY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxD
b2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2OCw3IEBAIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
OjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZv
LCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFy
cmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCi0gICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Y29kZVJlZiwgdm0pCisgICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZikKICAgICAs
IG1fdmFyaWFudHMoY2FzZXMuc2l6ZSgpKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFz
dENvdW50cykpCiB7CkBAIC04MCw2ICs4MSw3IEBAIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
OjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAgICAgICAgIGNvZGVCbG9jay0+bGlu
a0luY29taW5nUG9seW1vcnBoaWNDYWxsKGNhbGxlckZyYW1lLCBtX2NhbGxOb2Rlcy5hZGQoJmlu
Zm8pKTsKICAgICB9CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICBtYWtlR0NBd2Fy
ZSh2bSk7CiB9CiAKIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjp+UG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4
IDA3MjlkZTYyZjc0YTA3YWI2MjRiNTcyMjM5YjA4NDEwNGNiY2I0ZmUuLmI1YWE3Mjc1ZDMxMjIw
ZDEwZTdjMWY5YWRhMTVhNWZjYzcxNDhlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcApAQCAtNzEsOCArNzEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCkKK3N0
YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKKyAgICBp
ZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgcmV0dXJuIHN0dWJJbmZvLm1fc2xv
d09wZXJhdGlvbi5yZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCk7CisgICAgQ29kZUxvY2F0aW9u
Q2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsID0gc3R1YkluZm8ubV9zbG93UGF0aENhbGxMb2Nh
dGlvbjsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6RlRMSklUKSB7CiAgICAgICAgIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFn
PiB0YXJnZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+
KGNhbGwpOwpAQCAtMTA1LDYgKzEwOCwxNSBAQCB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRh
Z2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpOwogfQogCitzdGF0aWMgdm9pZCByZXBhdGNoU2xvd1Bh
dGhDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAg
aWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9zbG93T3Bl
cmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9jYXRpb24sIG5ld0NhbGxlZUZ1bmN0aW9u
KTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlvbiB7CiAgICAgR2l2ZVVwT25DYWNoZSwKICAg
ICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMDksNyArMjIxLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKgogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAg
ICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtpbmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFt
ZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOwogCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2Fz
ZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlQ2VsbCkpIHsKQEAg
LTIxOSw3ICsyMzEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFy
cmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VDZWxsKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5k
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEFycmF5TGVuZ3RoKGxvY2tlcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIzOSwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBj
b2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLCBwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VDZWxsKSkgewotICAgICAgICAgICAgICAg
IGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBDYWNoZVR5cGU6OlVuc2V0ICYmIElubGluZUFj
Y2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5zZXQKKyAgICAgICAg
ICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChzdHVi
SW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0g
SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChzdHViSW5mbyk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmluZ0xlbmd0aChsb2NrZXIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTUsMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KgogICAgICAgICAgICAgICAgICYmICFzbG90LndhdGNocG9pbnRTZXQoKQogICAgICAgICAgICAg
ICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAg
ICAgICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVByb3h5KSB7Ci0KICAgICAgICAgICAgICAgICBi
b29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3Bl
cnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAg
ICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAg
ICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5z
dGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0
KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5n
R2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5j
dGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRHZXRCeUlkU2Vs
Zihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0MzcsMjAgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKgogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwg
YmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHBy
b3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAg
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6
CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6CisgICAgICAgICAgICBjYXNl
IEdldEJ5S2luZDo6VHJ5OgorICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OkRpcmVjdDoKKyAg
ICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5k
OjpOb3JtYWxCeVZhbDoKKyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToK
KyAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05v
dFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVs
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM5LDcgKzQ2
NCw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3Vw
ZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZUdldEJ5KGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1Yklu
Zm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0
ZUdldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihraW5kKSk7CiB9CiAKIApA
QCAtNTI5LDcgKzU1NCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5
R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiAgICAgICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZv
T3JOdWxsKHZtKSwgSWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDAsNyArNTY1LDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2QKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBp
bmRleCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIGlmICh0cnlDYWNoZUFy
cmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2UsIGluZGV4LCBzdHViSW5m
bykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5VmFs
R2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsKIH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlh
dGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0
S2luZCBwdXRLaW5kKSAtPiBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkK
QEAgLTYzNiw3ICs2NjEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRC
eUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICBpZiAo
aXNQcm94eSAmJiAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwg
cHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmUpKQogICAgICAgICAg
ICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAg
ICAgICAgIGlmIChzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1
dCgpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpF
eGlzdGluZ1Byb3BlcnR5KSB7CkBAIC02NTgsNyArNjgzLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5s
aW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eVJlcGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVj
dHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5l
cmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OlB1dEJ5SWRTZWxmUGF0Y2gsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBz
bG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0
S2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBs
YWNlKGxvY2tlciwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCks
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNo
ZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC04MDEsNyArODI2LDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTgxNSw3ICs4NDAsNyBAQCB2b2lkIHJlcGF0Y2hQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlCiAgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAogICAgIGlmICh0cnlDYWNoZVB1
dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBwdXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3Qs
IHB1dEtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwog
fQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlT
bG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENh
Y2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIERlbEJ5S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUpCkBAIC04NDYsNyArODcxLDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9u
YXJ5KCkpCiAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogCi0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNz
Q2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5pc0RlbGV0ZUhpdCgpKSB7CiAgICAg
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtODc0
LDcgKzg5OSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQu
Z2VuZXJhdGVkU29tZUNvZGUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
LmNvZGUoKSk7CiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhK
dW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBw
cm9wZXJ0eU5hbWUudWlkKCkpKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTg5MSwxNSArOTE2LDE1IEBAIHZvaWQgcmVwYXRjaERlbGV0
ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBE
ZWxldGVQCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBr
aW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGds
b2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51
aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOworICAgICAgICAgICAg
cmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVC
eUlkR2VuZXJpYyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBh
dGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRp
b25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOwogICAgIH0K
IH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeSgKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLAotICAgIGJvb2wgd2FzRm91bmQs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQor
ICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTkzNyw3
ICs5NjIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5KAogICAgICAg
ICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAg
IExPR19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgICAgICAgICAg
c3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUpOworICAgICAgICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0
cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC05
ODQsNyArMTAwOSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAK
ICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFkZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xh
c3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogCi0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAor
ICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAg
ICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0ZvdW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBB
Y2Nlc3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQgPyBzbG90LmNhY2hlZE9m
ZnNldCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRB
Y2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJp
Y3QoKSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5ld0Nhc2UpKTsKQEAgLTk5Myw3ICsxMDE4LDE1
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAgICAgICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJhc2UpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAo
a2luZCkgeworICAgICAgICAgICAgY2FzZSBJbkJ5S2luZDo6Tm9ybWFsOgorICAgICAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1
YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29k
ZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEluQnlLaW5k
OjpOb3JtYWxCeVZhbDoKKyAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTEwMDcsMTIgKzEwNDAsMTIgQEAgdm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGIKICAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKHRyeUNhY2hlSW5CeShnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1Yklu
Zm8pID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICBpZiAodHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBz
dHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8oZ2xvYmFsT2Jq
ZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkp
OwogICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIG9wZXJhdGlvbkluQnlJZEdlbmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlWYWxHZW5lcmlj
KTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOwogICAgIH0KIH0KIApAQCAtMTAzOCw3ICsxMDcxLDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAg
ICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZl
bnQ6OkNoZWNrUHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8o
KSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2
bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2Fz
ZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2Rl
QmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8u
YWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6
c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMDQ2LDcgKzEwNzks
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgK
ICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hlY2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0
aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwog
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3Mo
Y29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA2MCw3ICsxMDkz
LDcgQEAgdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBpZiAodHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFu
ZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgYnJhbmRJRCwgc3R1YkluZm8p
ID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZh
dGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKQEAgLTEwOTcsNyAr
MTEzMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFu
ZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAgIExPR19JQygo
SUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kQWRkQWNjZXNzQ2FzZSwgb2xkU3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJh
bmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOwor
ICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFBy
aXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdU
Rk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMTA1LDcgKzExMzgsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6OlNldFByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFz
c0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ss
IHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTE5LDcgKzExNTIsNyBAQCB2b2lk
IHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsICBicmFuZElELCBzdHViSW5m
bykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKApAQCAtMTEzOSw3ICsxMTcyLDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigKICAgICAgICAg
CiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nh
c2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0
PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVlKTsKICAgICAgICAgaWYgKHByb3RvdHlwZSkg
ewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHZhbHVlKSkg
ewpAQCAtMTE3MywxMCArMTIwNiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUluc3RhbmNlT2YoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Okluc3RhbmNlT2ZSZXBs
YWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXIoKSkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLQot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKAotICAgICAgICAgICAgICAg
IHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKLSAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vz
cyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTE5MSw3
ICsxMjIxLDcgQEAgdm9pZCByZXBhdGNoSW5zdGFuY2VPZigKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VP
ZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFsdWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUsIHN0
dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKIHN0
YXRpYyB2b2lkIGxpbmtTbG93UGF0aFRvKFZNJiwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8s
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZVJlZikKQEAg
LTEyMDgsNyArMTIzOCw3IEBAIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNJiB2bSwgQ2FsbExp
bmtJbmZvJiBjYWxsTGlua0luZm8pCiB7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxM
aW5rSW5mbyk7CiAgICAgbGlua1Nsb3dQYXRoVG8odm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRo
dW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5l
OjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1
YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2bSwgdmlydHVhbFRodW5rKSk7CiB9CiAK
IHN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBjYWxsZWUpCkBAIC0xMzI2
LDcgKzEzNTYsNyBAQCBzdGF0aWMgdm9pZCBsaW5rVmlydHVhbEZvcihWTSYgdm0sIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSQogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1
bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZv
LCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklU
U3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZv
LnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZtLCB2aXJ0dWFsVGh1
bmspKTsKICAgICBjYWxsTGlua0luZm8uc2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0x
NjQ3LDE0ICsxNjc3LDI2IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRH
ZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBH
ZXRCeUtpbmQga2luZCkKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlGdW5jdGlvbihraW5kKSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0
dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlG
dW5jdGlvbihraW5kKSk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUtpbmQ6
Ok5vcm1hbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtp
bmQ6OlRyeToKKyAgICBjYXNlIEdldEJ5S2luZDo6RGlyZWN0OgorICAgIGNhc2UgR2V0QnlLaW5k
OjpQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6
CisgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lu
bGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
fQogCiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvKQogewogICAgIHVzaW5nIEZ1bmN0aW9uVHlwZSA9IGRlY2x0eXBlKCZv
cGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwotICAgIEZ1bmN0aW9uVHlwZSB1
bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQ
dXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiku
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rp
b24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChj
b2RlQmxvY2ssIHN0dWJJbmZvKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBGdW5jdGlvblR5
cGUgb3B0aW1pemVkRnVuY3Rpb247CiAgICAgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CkBAIC0xNjcxLDQ4ICsxNzEzLDQ5IEBAIHZvaWQgcmVz
ZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5v
blN0cmljdE9wdGltaXplOwogICAgIH0KIAotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChj
b2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlv
bik7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgb3B0aW1pemVkRnVuY3Rpb24pOworICAgIElubGluZUFjY2Vzczo6cmVz
ZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVz
ZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBEZWxCeUtpbmQga2luZCkKIHsKICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkK
LSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKTsKICAgICBlbHNlCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1
YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Ci19Ci0KLXN0YXRpYyB2b2lk
IHJlc2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCi17Ci0gICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1
YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAg
ICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nl
c3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRJbkJ5KENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEluQnlLaW5kIGtpbmQpCiB7
Ci0gICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBlbHNlCi0gICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25JbkJ5VmFsT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICBzd2l0Y2gg
KGtpbmQpIHsKKyAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWw6CisgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwor
ICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywg
c3R1YkluZm8pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWxCeVZh
bDoKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVy
YXRpb25JbkJ5VmFsT3B0aW1pemUpOworICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFz
SnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KIH0KIAotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICByZXNldFBhdGNoYWJs
ZUp1bXAoc3R1YkluZm8pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mbywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJl
c2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVy
YXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2ly
ZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cisg
ICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVt
cEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAK
IHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHVi
SW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1Bh
dGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGlt
aXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCwgSlNPYmplY3QqIGNhbGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKaW5kZXggOTI4Yzk5YjEyOTE5YTFhMDFhMzQyYTY1Zjc4NWM0ZTQ2YTBlMWZmNy4u
NTlhMTViOTBlYzk0MWIwMWZmODYxNTc1OGNiNzFkNzVmMmVlZTIxNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmgKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlE
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJs
b2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwogdm9pZCByZXNldEluQnkoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2luZCk7Ci12b2lkIHJlc2V0SW5zdGFu
Y2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRj
aENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBjOWRlNmE4YTM4YzExYjY5
Mzc2MTljMWU1OTRhZDE0NTFiM2YxYTk5Li40MDhmYmI2OWNjYjA5YTExM2QxMjIzY2MyNDU1ZWQ2
NmQzYTViOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKQEAgLTUzOCw2ICs1MzgsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENh
Z2UoKTsKICAgICB2KEJvb2wsIHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VUb3BMZXZlbEF3YWl0LCB0cnVlLCBOb3JtYWwsICJh
bGxvdyB0aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLiIpIFwK
ICAgICB2KEJvb2wsIHZlcmJvc2VFeGVjdXRhYmxlUG9vbEFsbG9jYXRpb24sIGZhbHNlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZURhdGFJQywgaXNBUk02NCgpLCBOb3JtYWws
IG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZURhdGFJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCmluZGV4IDhk
MDdhMjc1NzgzMzQwYmVhNGUxMGRkYTQ5MTYzZDEzYjQ5ODNmMTIuLmI4ZGQ0Y2JkNWQyODEwMTU3
ZjlhOTliZDljYjBmMDU1MWEzNmQ5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotdHlwZWRlZiB1aW50
MzJfdCBTdHJ1Y3R1cmVJRDsKK3VzaW5nIFN0cnVjdHVyZUlEID0gdWludDMyX3Q7CiAKIGlubGlu
ZSBTdHJ1Y3R1cmVJRCBudWtlZFN0cnVjdHVyZUlEQml0KCkKIHsKQEAgLTU4LDcgKzU4LDcgQEAg
aW5saW5lIFN0cnVjdHVyZUlEIGRlY29udGFtaW5hdGUoU3RydWN0dXJlSUQgaWQpCiAgICAgcmV0
dXJuIGlkICYgfm51a2VkU3RydWN0dXJlSURCaXQoKTsKIH0KICNlbHNlIC8vIG5vdCBVU0UoSlNW
QUxVRTY0KQotdHlwZWRlZiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlEOwordXNpbmcgU3RydWN0dXJl
SUQgPSBTdHJ1Y3R1cmUqOwogCiBpbmxpbmUgU3RydWN0dXJlSUQgbnVrZWRTdHJ1Y3R1cmVJREJp
dCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYmVhYzg2ZWIwZWI4
Y2Y1MTM4ZWZiZmRjMzgyMzQ3NDJiOGNiZGUxMS4uNGMxYmU0MTgxZmQyNzk4MzQ4MGZiYjk1Yjcz
ZTU0MTVjN2Y0YzZmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNs
dWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRl
ICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCkBAIC01NjcsNiArNTY4LDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3Aq
IHJ1bkxvb3AsIGJvb2wqIHN1Y2Nlc3MpCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAg
ICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAg
ICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVj
dCk7CisgICAgICAgIG1fc2hhcmVkSklUU3R1YnMgPSBtYWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJT
ZXQ+KCk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKQEAgLTY1NSw2ICs2NTcsMTAg
QEAgVk06On5WTSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZl
cnMuc2l6ZSgpOyArK2kpCiAgICAgICAgIFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNb
aV0pOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUKQorICAgIG1fc2hhcmVkSklUU3R1YnMgPSBu
dWxscHRyOworI2VuZGlmCiB9CiAKIHZvaWQgVk06OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRD
YWxsYmFjayh2b2lkKiBhcmd1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IGU5ZTA2YTc2NWFjNmJiMGNkYTIzYjRlNWZhNmY2N2QwZjJhNjFkNTUuLjQyMGRlYzBiOGZlNTgy
YmU3NjVkMmJhYzYyNTg3MzdmNDNiZjZlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtMTc1LDYgKzE3NSw3IEBAIGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xhc3Mg
U2FtcGxpbmdQcm9maWxlcjsKICNlbmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNo
YXJlZEpJVFN0dWJTZXQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJv
dmlkZXI7CiBjbGFzcyBTb3VyY2VQcm92aWRlckNhY2hlOwpAQCAtODQ2LDExICs4NDcsMTMgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxKSVRUaHVua3M+IGppdFN0dWJzOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gZ2V0Q1RJU3R1YihUaHVua0dlbmVyYXRvcik7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNoYXJlZEpJVFN0dWJTZXQ+IG1fc2hhcmVkSklUU3R1YnM7CiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5r
cz4gZnRsVGh1bmtzOwogI2VuZGlmCisKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVu
Y3Rpb24oTmF0aXZlRnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3Qg
RE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCg==
</data>
<flag name="commit-queue"
          id="452492"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430888</attachid>
            <date>2021-06-08 14:07:13 -0700</date>
            <delta_ts>2021-06-08 14:09:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210608140712.patch</filename>
            <type>text/plain</type>
            <size>450849</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzY2NDliOWYwZjdhNDg5ZGVlNmFhMjdkYWUyNmE4YWFkNTNiMDRiLi4zYTE0ZGY0YzExNzI5YTdh
ODYwNTA2NTlhOWU2ODlkNDJjMmZiMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MDAgQEAKKzIwMjEtMDYtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbm9u
LXJlcGF0Y2hpbmcgSUMgZm9yIEJhc2VsaW5lIEpJVCBpbiBBUk02NC4KKyAgICAgICAgVGhpcyBk
b2VzIG5vdCB3b3JrIGluIG5vbi1BUk02NCBhcmNoaXRlY3R1cmVzIChpbmNsdWRpbmcgWDY0KSBk
dWUgdG8gdGhlIHVzZSBvZiBsaW5rLXJlZ2lzdGVyLgorCisgICAgICAgIDEuIFdlIGFkZCBub24t
cmVwYXRjaGluZyBJQywgd2hpY2ggaXMgZW5hYmxlZCBvbmx5IGluIEJhc2VsaW5lIGR1ZSB0byBw
ZXJmb3JtYW5jZSByZWFzb24uIFdlIGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgZXhpc3Rpbmcg
SUMgaW4gREZHIGFuZCBGVEwuIE5vbi1yZXBhdGNoaW5nIGluY2x1ZGVzIGZhc3QtcGF0aCwgYW5k
IHNsb3ctcGF0aCdzIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgMi4gV2Ugc3RpbGwga2Vl
cCBJbmxpbmVBY2Nlc3MgaW4gYWxsIHRpZXJzLiBSZW1vdmluZyB0aGF0IGNhdXNlcyAwLjMgfiAx
LjAlIHJlZ3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLiBUaGlzCisgICAgICAgICAgIG1lYW5zIHRo
YXQgd2Ugc3RpbGwgbmVlZCBzb21lIHJlcGF0Y2hpbmcgd2hlbiB3ZSBmaXJzdCBpbnRyb2R1Y2Ug
c3R1YnMuCisgICAgICAgIDMuIFdlIGFkZCBhIG1lY2hhbmlzbSB0byBzaGFyZSBnZW5lcmF0ZWQg
Y29kZSBzdHVicyBpbiBub24tcmVwYXRjaGluZyBJQy4gQ3VycmVudGx5LCBnZXR0ZXIgLyBzZXR0
ZXIgLyBjdXN0b20KKyAgICAgICAgICAgYWNjZXNzb3JzIGFyZSBleGNsdWRlZCBzaW5jZSB0aGVp
ciBjb2RlIHJlbGllcyBvbiBKU0dsb2JhbE9iamVjdCwgQ29kZUJsb2NrIGV0Yy4gd2hpY2ggYXJl
IG5vdCBpbmNsdWRlZCBpbgorICAgICAgICAgICBBY2Nlc3NDYXNlJ3MgZGF0YSBzdHJ1Y3R1cmUu
CisgICAgICAgIDQuIFRoaXMgcGF0Y2ggc3RpbGwgcmVsaWVzIG9uIHRoYXQgQ29kZUJsb2NrIHdp
bGwgYmUgZGVzdHJveWVkIHN5bmNocm9ub3VzbHkgc2luY2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhh
dCBzaGFyaW5nLWhhc2gtdGFibGUKKyAgICAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBhbHJlYWR5
LWRlYWQgSklUIGNvZGUgc3R1YnMuIFdlIGNhbiBmaXggaXQgKGUuZy4gYW5ub3RhdGluZyBlcG9j
aCB0byB0aGVzZSBzdHVicywgYnVtcCB0aGVtIGluCisgICAgICAgICAgIGZpbmFsaXplVW5jb25k
aXRpb25hbGx5KSwgYnV0IHdlIGF2b2lkIGRvaW5nIHRoYXQgdG8gcHJldmVudCBmcm9tIGZ1cnRo
ZXIgZW5sYXJnaW5nIHRoaXMgcGF0Y2guIFRoaXMgcGF0Y2ggaXMgYWxyZWFkeQorICAgICAgICAg
ICBzaWduaWZpY2FudCBpbiBpdHMgc2l6ZS4KKyAgICAgICAgNS4gQWRkZWQgY2FsbE9wZXJhdGlv
bihBZGRyZXNzKSBzdXBwb3J0IGluIENDYWxsSGVscGVycywgd2hpY2ggY2FuIHNhdmUgdGhlIHRh
cmdldCBpbiBub25BcmdHUFIwLCBhbmQgY2FsbCBpdCBzbyB0aGF0IHdlIGNhbiB1c2UKKyAgICAg
ICAgICAgQWRkcmVzcyBpbmNsdWRpbmcgR1BSIHdoaWNoIGlzIGFsc28gdXNlZCBmb3IgYXJndW1l
bnRzLgorCisgICAgICAgIFBlcmZvcm1hbmNlIGlzIG5ldXRyYWwgaW4gSmV0U3RyZWFtMiBhbmQg
U3BlZWRvbWV0ZXIyLiBCdXQgaXQgb2ZmZXJzIHRoZSB3YXkgdG8gcmVtb3ZlIHNvbWUgY29kZSBn
ZW5lcmF0aW9uIGluIEJhc2VsaW5lLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjRFLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsKToK
KyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmNhbkJlU2hhcmVkKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1
YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpI
YXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6
U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0
dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2Vh
cmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0
OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRT
dHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNoYXJl
ZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OnJlbW92
ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86OnNldFVwKToKKyAg
ICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAgICAgICAo
SlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpT
Qzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmluaXRp
YWxpemVEaXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXREaXJlY3RD
YWxsVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1c2VEYXRhSUMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9u
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01K
SVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpnZXRT
Y3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVB
Y2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNj
ZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5j
ZU9mQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nh
c2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaDoKKyAg
ICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omhhc2ggY29uc3QpOgorICAg
ICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpvcGVyYXRvciE9KToKKyAgICAg
ICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2Vw
dGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMpOgorICAg
ICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94
eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2Fz
ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0
TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnBhdGNoYWJsZUp1
bXApOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvbXBpbGVyOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU2xv
d1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzbG93UGF0aElDQ2FsbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2Vs
bHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
Zik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1
c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFu
ZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVs
QnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFy
ZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6Cisg
ICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxP
cGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6
OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxL
ZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6
aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZU
TDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2Fs
bCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6QXJnQ29sbGVjdGlv
bik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaFJlZ0Fy
Zyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaEV4dHJh
UmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNo
Tm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRH
UFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQ
UkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjph
ZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2Fs
bEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
Ojpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3Rk
Ojppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46
OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0VudHJ5
SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKToK
KyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAo
SlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1ha2VHQ0F3YXJlKToKKyAgICAgICAgKEpTQzo6
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6UG9seW1vcnBoaWNBY2Nlc3NKSVRT
dHViUm91dGluZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRp
bmU6Om9ic2VydmVaZXJvUmVmQ291bnQpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lOjpjb21wdXRlSGFzaCk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAg
ICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpjcmVh
dGVJQ0pJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAg
ICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQ
b2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpjYXNlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OndlYWtTdHJ1Y3R1cmVzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6aGFzaCBj
b25zdCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJ
VENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6dXNlRGF0YUlDKToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVy
YXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRC
eUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
OjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlk
R2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVs
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxC
eVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5C
eVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0
QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93
UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVs
QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpz
bG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91Ymxl
TG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlw
ZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAqIGpp
dC9KSVRTdHViUm91dGluZS5oOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAg
ICAgICAoSlNDOjpyZWFkUHV0SUNDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNs
b3dQYXRoQ2FsbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlND
OjpyZXBhdGNoR2V0QnkpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUFycmF5R2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpyZXBhdGNoQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hQdXRCeUlEKToKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hEZWxldGVCeSk6Cisg
ICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5KToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6
OnJlcGF0Y2hDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlU2V0UHJp
dmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFNldFByaXZhdGVCcmFuZCk6CisgICAg
ICAgIChKU0M6OnRyeUNhY2hlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlcGF0Y2hJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6bGlua1Nsb3dGb3IpOgorICAgICAgICAoSlNDOjpsaW5r
VmlydHVhbEZvcik6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnkpOgorICAgICAgICAoSlNDOjpy
ZXNldFB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldERlbEJ5KToKKyAgICAgICAgKEpTQzo6
cmVzZXRJbkJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRJbnN0YW5jZU9mKToKKyAgICAgICAgKEpT
Qzo6cmVzZXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnJlc2V0U2V0UHJpdmF0
ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRQYXRjaGFibGVKdW1wKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6Ok9wdGlvbnM6OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIxLTA2LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3ODM3MSBhbmQgcjI3ODQ2My4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUu
aAppbmRleCA2MDg0NjZkMzM2MjA4MTQ3MDc1MWI4NmRmODdlMDI5NTMxZjQxNmVhLi5kNmYzYjdh
Yjk3MTgyZWUwZGNjYmU3ZDk2OGM2MGQ0MGVkOThkNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0yMjUs
MTkgKzIyNSwxOSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fz
c2VtYmxlckFSTTY0IHsKICAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJl
VHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewog
ICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcp
OwogICAgICAgICBBU1NFUlQoIU9wdGlvbnM6OnVzZUpJVENhZ2UoKSB8fCBjYWxsZXJUeXBlKHRh
ZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIHJldHVy
biBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CisgICAgICAgIGNhbGwoZGF0YVRlbXBSZWdp
c3RlciwgdGFnKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQodGFn
ICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwo
ZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAgICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0
YWcpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsT3BlcmF0aW9uKGNvbnN0
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gb3BlcmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDEyYTk3YTJkMjVkNWViZDFl
OTlhNWU1YWMyOWMyMjg5M2JhODM4ZjkuLjEzYWIwMWNhNzBlYjE0ZDhlNjU2YWYyNTk4NzAzMmRm
OWRmZDBlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgQWNjZXNzQ2FzZTo6QWNjZXNzQ2FzZShWTSYgdm0sIEpT
Q2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmkKICAgICBSRUxF
QVNFX0FTU0VSVChtX2NvbmRpdGlvblNldC5pc1ZhbGlkKCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwg
QWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4m
JiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVh
dGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSW5IaXQ6CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH07CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5l
dyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1
cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6
OmNyZWF0ZVRyYW5zaXRpb24oCitSZWZQdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRl
VHJhbnNpdGlvbigKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewpAQCAtMTIyLDM0ICsxMjIsMzQgQEAgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVy
LCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCBUcmFuc2l0aW9uLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgY29uZGl0
aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAorUmVmPEFjY2Vzc0Nh
c2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgp
KTsKICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBvbGRT
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZp
ZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwg
bmV3U3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mIHZtLCBKU0NlbGwqIG93
bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50aWZp
ZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgeyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgQ2hlY2tQcml2YXRlQnJhbmQsIGlkZW50
aWZpZXIsIGludmFsaWRPZmZzZXQsIHN0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgK
K1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCiAgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
OwotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5l
d1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3ND
YXNlKHZtLCBvd25lciwgU2V0UHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0
LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKIEFjY2Vzc0Nhc2U6On5BY2Nlc3NDYXNl
KCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21T
dHJ1Y3R1cmVTdHViSW5mbygKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3Ry
dWN0dXJlU3R1YkluZm8oCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBz
d2l0Y2ggKHN0dWJJbmZvLmNhY2hlVHlwZSgpKSB7CkBAIC0xODgsOSArMTg4LDkgQEAgSlNPYmpl
Y3QqIEFjY2Vzc0Nhc2U6OmFsdGVybmF0ZUJhc2UoKSBjb25zdAogICAgIHJldHVybiBjb25kaXRp
b25TZXQoKS5zbG90QmFzZUNvbmRpdGlvbigpLm9iamVjdCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gcmVzdWx0KG5ldyBBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUo
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODA3LDYgKzgwNyw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSA9PSBD
b21taXR0ZWQpOwogICAgIG1fc3RhdGUgPSBHZW5lcmF0ZWQ7CiAKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUubV9nbG9iYWxPYmplY3Q7CiAgICAgQ0NhbGxIZWxwZXJz
JiBqaXQgPSAqc3RhdGUuaml0OwogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpz
dGF0ZS5zdHViSW5mbzsKICAgICBWTSYgdm0gPSBzdGF0ZS5tX3ZtOwpAQCAtODUzLDcgKzg1NCw3
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlLT5oYXNNb25vUHJvdG8oKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChzdGF0ZS5tX2ds
b2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm90b3R5cGUuaXNPYmplY3QoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
YXNPYmplY3QocHJvdG90eXBlKSksIGJhc2VGb3JBY2Nlc3NHUFIpOwogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtOTY0LDYgKzk2NSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0
dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhz
dHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQ
Uik7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxs
b2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xMDYxLDYgKzEwNjQsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNl
UmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNj
cmF0Y2hHUFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2Nh
dGVTY3JhdGNoR1BSKCk7CiAKQEAgLTExNDQsNiArMTE0OSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VS
ZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5m
by5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2Ny
YXRjaEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0
ZVNjcmF0Y2hHUFIoKTsKIApAQCAtMTIwNSw2ICsxMjEyLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJl
Z3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9j
YXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZv
Lm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3Jh
dGNoR1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRl
U2NyYXRjaEdQUigpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0xMzE3LDYgKzEzMjYsOCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3Iu
bG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVS
ZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOwor
ICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHNj
cmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwpAQCAtMTQxNyw3ICsx
NDI4LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcG9seVByb3RvQWNjZXNzQ2hh
aW4pOwogCiAgICAgICAgIGlmIChjb25kaXRpb24uaXNXYXRjaGFibGVBc3N1bWluZ0ltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludChQcm9wZXJ0eUNvbmRpdGlvbjo6V2F0Y2hhYmlsaXR5RWZmb3J0OjpF
bnN1cmVXYXRjaGFiaWxpdHkpKSB7Ci0gICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2lu
dChjb25kaXRpb24pOworICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29kZUJs
b2NrLCBjb25kaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
MTQzNSw3ICsxNDQ2LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlJiBzdGF0ZSkKIAogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgY29kZSB0aGF0
IGhhcyBhIHdlYWsgcmVmZXJlbmNlIHRoYXQgaXNuJ3Qgb3RoZXJ3aXNlIGxpc3RlZCBhbnl3aGVy
ZS4KICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25kaXRpb24ub2JqZWN0KCktPnN0
cnVjdHVyZSh2bSk7Ci0gICAgICAgIHN0YXRlLndlYWtSZWZlcmVuY2VzLmFwcGVuZChXcml0ZUJh
cnJpZXI8SlNDZWxsPih2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKTsKKyAgICAgICAgc3RhdGUu
d2Vha1N0cnVjdHVyZXMuYXBwZW5kKHN0cnVjdHVyZS0+aWQoKSk7CiAKICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvbmRpdGlvbi5vYmplY3QoKSksIHNjcmF0
Y2hHUFIpOwogICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQoCkBAIC0xNTgyLDcg
KzE1OTMsMTIgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSkKIAogICAgICAgICAvLyBUaGlzIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5
IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSdyZSBhbgogICAgICAgICAvLyBleGNl
cHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgotICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsKCk7CisgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2
ZTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQor
ICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6
bHIpOworI2VuZGlmCisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBz
cGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKIAogICAgICAgICBhdXRvIHJlc3RvcmVMaXZlUmVnaXN0
ZXJzRnJvbVN0YWNrRm9yQ2FsbCA9IFsmXShBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3Rh
dGUmIHNwaWxsU3RhdGUsIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlKSB7CiAgICAgICAgICAgICBS
ZWdpc3RlclNldCBkb250UmVzdG9yZTsKQEAgLTE3MTIsNiArMTcyOCw3IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAjZW5kaWYK
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxP
YmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAgICBhY2Nlc3MuY2FsbExpbmtJbmZv
KCktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKKwogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBH
ZXR0ZXIpCiAgICAgICAgICAgICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOwogICAg
ICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CkBAIC0xNzIzLDggKzE3NDAsOCBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0gICAgICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKChjb2RlQmxvY2stPnN0
YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5wcmVzZXJ2ZWRS
ZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGlsbFN0YXRlLm51
bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiksCi0gICAgICAgICAg
ICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IChjb2Rl
QmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzdGF0ZS5w
cmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQgLSBzcGls
bFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbjsKKyAg
ICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tQb2lu
dGVyT2Zmc2V0KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgYm9vbCBjYWxsSGFzUmV0dXJuVmFsdWUg
PSBpc0dldHRlcigpOwogICAgICAgICAgICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tG
b3JDYWxsKHNwaWxsU3RhdGUsIGNhbGxIYXNSZXR1cm5WYWx1ZSk7CiAKQEAgLTE4NDUsNyArMTg2
MiwxNCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogICAgICAgICAgICAgc2tpcEJhcnJpZXIuYXBwZW5kKGppdC5iYXJyaWVyQnJh
bmNoKHZtLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUucHJl
c2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpOworCisg
ICAgICAgICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpCisgICAgICAg
ICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02NFJlZ2lzdGVyczo6bHIp
OworI2VuZGlmCisgICAgICAgICAgICBhdXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGV4dHJhUmVnaXN0ZXJz
VG9QcmVzZXJ2ZSk7CisKICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmdm0pLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRp
b25QdHJUYWcpOwpAQCAtMTg3NSw2ICsxODk5LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICAgICAg
YWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlUmVncyk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJ
bmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hHUFIyID0gSW52YWxpZEdQUlJlZzsKQEAgLTE5MzMsNiArMTk1OSwxMCBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2
ZTsKICAgICAgICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KGJhc2VHUFIp
OwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQodmFsdWVSZWdz
KTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0
YUlDKCkpCisgICAgICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQo
QVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVn
aXN0ZXJzVG9TdGFja0ZvckNhbGwoZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlKTsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBqaXQuc3RvcmUzMigKQEAgLTIwMzEsNiArMjA2MSw4
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUpCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAg
ICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhi
YXNlR1BSKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsK
ICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5z
aXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0aW9uKTsKQEAgLTIyMDMsNiArMjIzNSwxMDMgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCitib29sIEFjY2Vzc0Nhc2U6OmNhbkJl
U2hhcmVkKGNvbnN0IEFjY2Vzc0Nhc2UmIGxocywgY29uc3QgQWNjZXNzQ2FzZSYgcmhzKQorewor
ICAgIC8vIFdlIGRvIG5vdCBjYXJlIG1fc3RhdGUuCisgICAgLy8gQW5kIHdlIHNheSAiZmFsc2Ui
IGlmIGVpdGhlciBvZiB0aGVtIGhhdmUgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi4KKyAgICBpZiAo
bGhzLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4gfHwgcmhzLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLmFkZGl0aW9uYWxTZXQoKSB8fCBy
aHMuYWRkaXRpb25hbFNldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobGhz
Lm1fdHlwZSAhPSByaHMubV90eXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxo
cy5tX29mZnNldCAhPSByaHMubV9vZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobGhzLm1fdmlhUHJveHkgIT0gcmhzLm1fdmlhUHJveHkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobGhzLm1fc3RydWN0dXJlLmdldCgpICE9IHJocy5tX3N0cnVjdHVyZS5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9pZGVudGlmaWVyICE9IHJo
cy5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1fY29u
ZGl0aW9uU2V0ICE9IHJocy5tX2NvbmRpdGlvblNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc3dpdGNoIChsaHMubV90eXBlKSB7CisgICAgY2FzZSBMb2FkOgorICAgIGNhc2UgVHJh
bnNpdGlvbjoKKyAgICBjYXNlIERlbGV0ZToKKyAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJs
ZToKKyAgICBjYXNlIERlbGV0ZU1pc3M6CisgICAgY2FzZSBSZXBsYWNlOgorICAgIGNhc2UgTWlz
czoKKyAgICBjYXNlIEdldEdldHRlcjoKKyAgICBjYXNlIEluSGl0OgorICAgIGNhc2UgSW5NaXNz
OgorICAgIGNhc2UgQXJyYXlMZW5ndGg6CisgICAgY2FzZSBTdHJpbmdMZW5ndGg6CisgICAgY2Fz
ZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBTY29wZWRBcmd1bWVudHNMZW5ndGg6
CisgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKKyAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoK
KyAgICBjYXNlIEluZGV4ZWRJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRDb250aWd1b3VzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRBcnJheVN0
b3JhZ2VMb2FkOgorICAgIGNhc2UgSW5kZXhlZFNjb3BlZEFyZ3VtZW50c0xvYWQ6CisgICAgY2Fz
ZSBJbmRleGVkRGlyZWN0QXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5
SW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQ4TG9hZDoKKyAgICBjYXNl
IEluZGV4ZWRUeXBlZEFycmF5VWludDhDbGFtcGVkTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBl
ZEFycmF5SW50MTZMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MTZMb2FkOgor
ICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlw
ZWRBcnJheVVpbnQzMkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0MzJMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDY0TG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRTdHJpbmdMb2FkOgorICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVyaWM6CisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgY2FzZSBHZXR0ZXI6CisgICAgY2FzZSBTZXR0ZXI6IHsKKyAgICAgICAg
Ly8gR2V0dGVyIGFuZCBTZXR0ZXIgcmVsaWVzIG9uIENvZGVCbG9jaywgd2hpY2ggbWFrZXMgc2hh
cmluZyBpbXBvc3NpYmxlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY2Fz
ZSBDdXN0b21WYWx1ZUdldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgorICAg
IGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjog
eworICAgICAgICAvLyBUaGV5IGFyZSBlbWJlZGRpbmcgSlNHbG9iYWxPYmplY3QgdGhhdCBhcmUg
bm90IHRpZWQgdG8gc2hhcmluZyBKSVRTdHViUm91dGluZS4KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGNhc2UgSW50cmluc2ljR2V0dGVyOiB7CisgICAgICAgIGF1dG8mIGxo
c2QgPSBsaHMuYXM8SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYg
cmhzZCA9IHJocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1
cm4gbGhzZC5tX2ludHJpbnNpY0Z1bmN0aW9uID09IHJoc2QubV9pbnRyaW5zaWNGdW5jdGlvbjsK
KyAgICB9CisKKyAgICBjYXNlIE1vZHVsZU5hbWVzcGFjZUxvYWQ6IHsKKyAgICAgICAgYXV0byYg
bGhzZCA9IGxocy5hczxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRv
JiByaHNkID0gcmhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJl
dHVybiBsaHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ID09IHJoc2QubV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QKKyAgICAgICAgICAgICYmIGxoc2QubV9tb2R1bGVFbnZpcm9ubWVudCA9PSByaHNk
Lm1fbW9kdWxlRW52aXJvbm1lbnQKKyAgICAgICAgICAgICYmIGxoc2QubV9zY29wZU9mZnNldCA9
PSByaHNkLm1fc2NvcGVPZmZzZXQ7CisgICAgfQorCisgICAgY2FzZSBJbnN0YW5jZU9mSGl0Ogor
ICAgIGNhc2UgSW5zdGFuY2VPZk1pc3M6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9IGxocy5hczxJ
bnN0YW5jZU9mQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxJbnN0
YW5jZU9mQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9wcm90b3R5cGUgPT0g
cmhzZC5tX3Byb3RvdHlwZTsKKyAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5oCmluZGV4IGJkZDFiMjM3ZDYxOGEyY2NlODI3MjBmNzJjYTc1Mzdk
ZTNmYTcwNjguLjBlMmUyNjM4MjU0Mjg3ZjVmNWUyNjlmZjM4YTZjZGZhNDk2YTBlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApAQCAtMjgsMTAgKzI4
LDEzIEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKKyNpbmNsdWRlICJKSVRTdHVi
Um91dGluZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQb2x5UHJvdG9BY2Nlc3NDaGFp
bi5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
SGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzksNyArODIsNyBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIC8vIFdlIHdpbGwgc29t
ZXRpbWVzIGJ1ZmZlciBjb21taXR0ZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBvbHltb3JwaGljQWNj
ZXNzIG9iamVjdCBiZWZvcmUgZ2VuZXJhdGluZwogLy8gY29kZS4gVGhpcyBhbGxvd3MgdXMgdG8g
b25seSByZWdlbmVyYXRlIG9uY2Ugd2UndmUgYWNjdW11bGF0ZWQgKGhvcGVmdWxseSkgbW9yZSB0
aGFuIG9uZSBuZXcKIC8vIEFjY2Vzc0Nhc2UuCi1jbGFzcyBBY2Nlc3NDYXNlIHsKK2NsYXNzIEFj
Y2Vzc0Nhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNzQ2FzZT4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2Up
OwogcHVibGljOgogICAgIGVudW0gQWNjZXNzVHlwZSA6IHVpbnQ4X3QgewpAQCAtMTQ3LDE5ICsx
NTAsMTkgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZVR5cGU+KG5ldyBBY2Nlc3NDYXNlVHlwZShhcmd1bWVudHMuLi4pKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYs
IEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5
T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0
ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKICAgICAgICAgU3RydWN0dXJlKiA9IG51bGxw
dHIsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0KCksIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiA9IG51bGxwdHIpOwog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVUcmFuc2l0aW9u
KFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQs
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4g
Y3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVm
UHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAorICAg
IHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlRGVsZXRlKFZNJiwgSlNDZWxsKiBvd25lciwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlLAogICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiwgSlND
ZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKik7Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0mLCBK
U0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4g
Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNl
dFByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CiAgICAgCi0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1Yklu
Zm8oVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJ
bmZvKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1
YkluZm8mKTsKIAogICAgIEFjY2Vzc1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQpAQCAtMjUzLDEx
ICsyNTYsMzcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAjZWxzZQogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJikgeyB9CiAjZW5kaWYKLSAg
ICAKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVIYXNoKG1fY29uZGl0aW9uU2V0Lmhhc2goKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
dHlwZSksIG1fdmlhUHJveHksIG1fc3RydWN0dXJlLmdldCgpLCBtX29mZnNldCk7CisgICAgfQor
CisgICAgc3RhdGljIGJvb2wgY2FuQmVTaGFyZWQoY29uc3QgQWNjZXNzQ2FzZSYsIGNvbnN0IEFj
Y2Vzc0Nhc2UmKTsKKwogcHJvdGVjdGVkOgogICAgIEFjY2Vzc0Nhc2UoVk0mLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3Ry
dWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8UG9seVBy
b3RvQWNjZXNzQ2hhaW4+JiYpOwotICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYmKSA9IGRlZmF1
bHQ7Ci0gICAgQWNjZXNzQ2FzZShjb25zdCBBY2Nlc3NDYXNlJiBvdGhlcikgPSBkZWZhdWx0Owor
ICAgIEFjY2Vzc0Nhc2UoQWNjZXNzQ2FzZSYmIG90aGVyKQorICAgICAgICA6IG1fdHlwZShXVEZN
b3ZlKG90aGVyLm1fdHlwZSkpCisgICAgICAgICwgbV9zdGF0ZShXVEZNb3ZlKG90aGVyLm1fc3Rh
dGUpKQorICAgICAgICAsIG1fdmlhUHJveHkoV1RGTW92ZShvdGhlci5tX3ZpYVByb3h5KSkKKyAg
ICAgICAgLCBtX29mZnNldChXVEZNb3ZlKG90aGVyLm1fb2Zmc2V0KSkKKyAgICAgICAgLCBtX3N0
cnVjdHVyZShXVEZNb3ZlKG90aGVyLm1fc3RydWN0dXJlKSkKKyAgICAgICAgLCBtX2NvbmRpdGlv
blNldChXVEZNb3ZlKG90aGVyLm1fY29uZGl0aW9uU2V0KSkKKyAgICAgICAgLCBtX3BvbHlQcm90
b0FjY2Vzc0NoYWluKFdURk1vdmUob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikpCisgICAg
ICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUob3RoZXIubV9pZGVudGlmaWVyKSkKKyAgICB7IH0K
KworICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpCisgICAgICAgIDogbV90
eXBlKG90aGVyLm1fdHlwZSkKKyAgICAgICAgLCBtX3N0YXRlKG90aGVyLm1fc3RhdGUpCisgICAg
ICAgICwgbV92aWFQcm94eShvdGhlci5tX3ZpYVByb3h5KQorICAgICAgICAsIG1fb2Zmc2V0KG90
aGVyLm1fb2Zmc2V0KQorICAgICAgICAsIG1fc3RydWN0dXJlKG90aGVyLm1fc3RydWN0dXJlKQor
ICAgICAgICAsIG1fY29uZGl0aW9uU2V0KG90aGVyLm1fY29uZGl0aW9uU2V0KQorICAgICAgICAs
IG1fcG9seVByb3RvQWNjZXNzQ2hhaW4ob3RoZXIubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAg
ICAgICAgLCBtX2lkZW50aWZpZXIob3RoZXIubV9pZGVudGlmaWVyKQorICAgIHsgfQogCiAgICAg
QWNjZXNzQ2FzZSYgb3BlcmF0b3I9KGNvbnN0IEFjY2Vzc0Nhc2UmKSA9IGRlbGV0ZTsKICAgICB2
b2lkIHJlc2V0U3RhdGUoKSB7IG1fc3RhdGUgPSBQcmltb3JkaWFsOyB9CkBAIC0yNzUsNyArMzA0
LDcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAKICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IGV4aXN0
cyBiZWNhdXNlIG9mIGhvdyBBY2Nlc3NDYXNlIHB1dHMgcG9zdC1nZW5lcmF0aW9uIHRoaW5ncyBp
bnRvIGl0c2VsZi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2NDU2Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0OwogCiAg
ICAgLy8gUGVyZm9ybSBhbnkgYWN0aW9uIHRoYXQgbXVzdCBiZSBwZXJmb3JtZWQgYmVmb3JlIHRo
ZSBlbmQgb2YgdGhlIGVwb2NoIGluIHdoaWNoIHRoZSBjYXNlCiAgICAgLy8gd2FzIGNyZWF0ZWQu
IFJldHVybnMgYSBzZXQgb2Ygd2F0Y2hwb2ludCBzZXRzIHRoYXQgd2lsbCBuZWVkIHRvIGJlIHdh
dGNoZWQuCkBAIC0zMTUsNiArMzQ0LDE0NiBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKK2NsYXNzIFNoYXJlZEpJVFN0dWJT
ZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFNoYXJlZEpJVFN0dWJTZXQpOworcHVi
bGljOgorICAgIFNoYXJlZEpJVFN0dWJTZXQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdHJ1Y3QgSGFz
aCB7CisgICAgICAgIHN0cnVjdCBLZXkgeworICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0Owor
CisgICAgICAgICAgICBLZXkoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BSUmVn
IGV4dHJhR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMs
IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqIHdyYXBwZWQpCisgICAgICAgICAgICAg
ICAgOiBtX3dyYXBwZWQod3JhcHBlZCkKKyAgICAgICAgICAgICAgICAsIG1fYmFzZUdQUihiYXNl
R1BSKQorICAgICAgICAgICAgICAgICwgbV92YWx1ZUdQUih2YWx1ZUdQUikKKyAgICAgICAgICAg
ICAgICAsIG1fZXh0cmFHUFIoZXh0cmFHUFIpCisgICAgICAgICAgICAgICAgLCBtX3N0dWJJbmZv
R1BSKHN0dWJJbmZvR1BSKQorICAgICAgICAgICAgICAgICwgbV91c2VkUmVnaXN0ZXJzKHVzZWRS
ZWdpc3RlcnMpCisgICAgICAgICAgICB7IH0KKworICAgICAgICAgICAgS2V5KFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fd3JhcHBlZChiaXR3aXNl
X2Nhc3Q8UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMSkpKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAgICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZWQgPT0gYml0d2lzZV9jYXN0
PFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKTsgfQorCisgICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYg
YSwgY29uc3QgS2V5JiBiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBh
Lm1fd3JhcHBlZCA9PSBiLm1fd3JhcHBlZAorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fYmFz
ZUdQUiA9PSBiLm1fYmFzZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdmFsdWVHUFIg
PT0gYi5tX3ZhbHVlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9leHRyYUdQUiA9PSBi
Lm1fZXh0cmFHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3N0dWJJbmZvR1BSID09IGIu
bV9zdHViSW5mb0dQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNlZFJlZ2lzdGVycyA9
PSBiLm1fdXNlZFJlZ2lzdGVyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUG9seW1v
cnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSogbV93cmFwcGVkIHsgbnVsbHB0ciB9OworICAgICAg
ICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOwor
ICAgICAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV9zdHVi
SW5mb0dQUjsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKKyAgICAg
ICAgfTsKKworICAgICAgICB1c2luZyBLZXlUcmFpdHMgPSBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8
S2V5PjsKKworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLZXkmIHApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghcC5tX3dyYXBwZWQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIDE7CisgICAgICAgICAgICByZXR1cm4gcC5tX3dyYXBwZWQtPmhhc2goKTsKKyAgICAgICAg
fQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtleSYgYSwgY29uc3QgS2V5JiBi
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0cnVjdCBTZWFyY2hlciB7CisgICAgICAgIHN0cnVj
dCBUcmFuc2xhdG9yIHsKKyAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNl
YXJjaGVyJiBzZWFyY2hlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6Y29tcHV0ZUhhc2goc2VhcmNoZXIubV9j
YXNlcywgc2VhcmNoZXIubV93ZWFrU3RydWN0dXJlcyk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6OktleSBhLCBjb25zdCBTZWFyY2hl
ciYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYS5tX2Jhc2VHUFIgPT0g
Yi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92
YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJh
R1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1Yklu
Zm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5tX3Vz
ZWRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYUNhc2VzID0g
YS5tX3dyYXBwZWQtPmNhc2VzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJD
YXNlcyA9IGIubV9jYXNlczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFDYXNlcy5zaXplKCkg
IT0gYkNhc2VzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYkNh
c2VzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFBY2Nl
c3NDYXNlOjpjYW5CZVNoYXJlZCgqYUNhc2VzW2luZGV4XSwgKmJDYXNlc1tpbmRleF0pKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBhV2VhayA9IGEubV93cmFwcGVk
LT53ZWFrU3RydWN0dXJlcygpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBiV2Vh
ayA9IGIubV93ZWFrU3RydWN0dXJlczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFXZWFrLnNp
emUoKSAhPSBiV2Vhay5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBhV2Vh
ay5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
V2Vha1tpXSAhPSBiV2Vha1tpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBHUFJSZWcgbV9iYXNlR1BSOwor
ICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgR1BSUmVnIG1fZXh0cmFHUFI7Cisg
ICAgICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSOworICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRS
ZWdpc3RlcnM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4m
IG1fY2FzZXM7CisgICAgICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYgbV93ZWFr
U3RydWN0dXJlczsKKyAgICB9OworCisgICAgc3RydWN0IFBvaW50ZXJUcmFuc2xhdG9yIHsKKyAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGlu
ZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0dWItPmhhc2goKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEhhc2g6OktleSYga2V5
LCBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4ga2V5Lm1fd3JhcHBlZCA9PSBzdHViOworICAgICAgICB9CisgICAgfTsK
KworICAgIHZvaWQgYWRkKEhhc2g6OktleSYmIGtleSkKKyAgICB7CisgICAgICAgIG1fc3R1YnMu
YWRkKFdURk1vdmUoa2V5KSk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmUoUG9seW1vcnBoaWNB
Y2Nlc3NKSVRTdHViUm91dGluZSogc3R1YikKKyAgICB7CisgICAgICAgIGF1dG8gaXRlciA9IG1f
c3R1YnMuZmluZDxQb2ludGVyVHJhbnNsYXRvcj4oc3R1Yik7CisgICAgICAgIGlmIChpdGVyICE9
IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICBtX3N0dWJzLnJlbW92ZShpdGVyKTsKKyAgICB9
CisKKyAgICBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKiBmaW5kKGNvbnN0IFNlYXJj
aGVyJiBzZWFyY2hlcikKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBtX3N0dWJzLmZpbmQ8
U2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I+KHNlYXJjaGVyKTsKKyAgICAg
ICAgaWYgKGVudHJ5ICE9IG1fc3R1YnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnkt
Pm1fd3JhcHBlZDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEhhc2hTZXQ8SGFzaDo6S2V5LCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IG1fc3R1YnM7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnlWYWxJbmZvLmgKaW5kZXggZmM5OGY0ZTQwMGI4ZmM2Y2NiODhkZjBjYWE0YzVh
NTU1MzY3OWM4NC4uYjIyNmZiMTZmNWRiNzQ0ZjdmZTU1NmJlYzc1OGQ3Y2VhMDRlNGFhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApAQCAtMjQ0LDEwICsy
NDQsOCBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXRV
cChDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcCwgQ29kZUxv
Y2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlNb2Rl
IGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJu
YWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJ
bnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCisgICAgdm9pZCBzZXRVcChDb2RlTG9jYXRp
b25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJh
eU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJ
bnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKICAgICB7Ci0gICAgICAgIHRoaXMt
Pm5vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZUp1bXAg
PSBiYWRUeXBlSnVtcDsKICAgICAgICAgdGhpcy0+ZXhjZXB0aW9uSGFuZGxlciA9IGV4Y2VwdGlv
bkhhbmRsZXI7CiAgICAgICAgIHRoaXMtPmRvbmVUYXJnZXQgPSBkb25lVGFyZ2V0OwogICAgICAg
ICB0aGlzLT5iYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQgPSBiYWRUeXBlTmV4dEhvdFBhdGhUYXJn
ZXQ7CkBAIC0yNjIsOCArMjYwLDIxIEBAIHN0cnVjdCBCeVZhbEluZm8gewogCiAgICAgREVDTEFS
RV9WSVNJVF9BR0dSRUdBVEU7CiAKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJU
YWc+IG5vdEluZGV4SnVtcDsKLSAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
IGJhZFR5cGVKdW1wOworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsg
fQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQorCisg
ICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247CisKKyAgICB1
bmlvbiB7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBt
X25vdEluZGV4SnVtcFRhcmdldDsKKyAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFs
UHRyVGFnPiBtX25vdEluZGV4SnVtcDsKKyAgICB9OworICAgIHVuaW9uIHsKKyAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7
CisgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVt
cDsKKyAgICB9OworCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4gZXhjZXB0aW9uSGFuZGxlcjsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBkb25lVGFyZ2V0OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZmNmMTRmZGQzYTIwNTEzODkxNmM3MGY4ODVh
ODFlZGEwYjAzNzA5MC4uODBmNDA0NWEzMzE0YzI2NTU0MjE0Nzg1Y2UxNjAzMDVkYmY3N2U5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAK
QEAgLTQyMCwxMiArNDIwLDEyIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRGlyZWN0
Q2FsbCgpCiAgICAgQVNTRVJUKHUuY29kZUlDLm1fY2FsbExvY2F0aW9uKTsKICAgICBpZiAoaXNU
YWlsQ2FsbCgpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZhc3RQYXRoU3RhcnQoKSk7Ci0g
ICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKGZhc3RQYXRoU3RhcnQoKSwgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2Rl
T3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihb
Jl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1w
KCk7CiAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKSB7CiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHNsb3dQYXRoU3Rh
cnQoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgImluaXRpYWxpemUgZGlyZWN0IGNh
bGwiKTsKKyAgICAgICAgfSksICJpbml0aWFsaXplIGRpcmVjdCBjYWxsIik7CiAgICAgfSBlbHNl
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwodS5jb2RlSUMubV9jYWxs
TG9jYXRpb24sIHNsb3dQYXRoU3RhcnQoKSk7CiB9CkBAIC00MzYsMTEgKzQzNiwxMSBAQCB2b2lk
IENhbGxMaW5rSW5mbzo6c2V0RGlyZWN0Q2FsbFRhcmdldChDb2RlTG9jYXRpb25MYWJlbDxKU0Vu
dHJ5UHRyVGFnPiB0YXJnZXQpCiAKICAgICBpZiAoaXNUYWlsQ2FsbCgpKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGZhc3RQYXRoU3RhcnQoKSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6ZW1p
dEpJVENvZGVPdmVyKGZhc3RQYXRoU3RhcnQoKSwgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCkgewor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihmYXN0UGF0aFN0YXJ0KCksIHNj
b3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
ICAgICAgICAgICAgIC8vIFdlIHJlc2VydmVkIHRoaXMgbWFueSBieXRlcyBmb3IgdGhlIGp1bXAg
YXQgZmFzdFBhdGhTdGFydCgpLiBNYWtlIHRoYXQKICAgICAgICAgICAgIC8vIGNvZGUgbm9wcyBu
b3cgc28gd2UgZmFsbCB0aHJvdWdoIHRvIHRoZSBqdW1wIHRvIHRoZSBmYXN0IHBhdGguCi0gICAg
ICAgICAgICBqaXQuZW1pdE5vcHMoQ0NhbGxIZWxwZXJzOjpwYXRjaGFibGVKdW1wU2l6ZSgpKTsg
Ci0gICAgICAgIH0sICJTZXR0aW5nIGRpcmVjdCBjYWxsIHRhcmdldCIpOworICAgICAgICAgICAg
aml0LmVtaXROb3BzKENDYWxsSGVscGVyczo6cGF0Y2hhYmxlSnVtcFNpemUoKSk7CisgICAgICAg
IH0pLCAiU2V0dGluZyBkaXJlY3QgY2FsbCB0YXJnZXQiKTsKICAgICB9CiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHUuY29kZUlDLm1fY2FsbExvY2F0aW9uLCB0YXJnZXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGIxMDkw
YjVkNDE4ZTgzOWFlNmM4MjdhNjJmMGNmZDEzZDkzNzE3ZDYuLmQzZDEwNmZkNTQ1MDQzYWU1NDFk
MGQ2MTE4NTNkZWVlNWI3YjAzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKQEAgLTQyMyw2ICs0MjMsMTEgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgewogICAgICAgICByZXR1cm4gaml0VHlwZSgpID09IEpJVFR5cGU6OkJh
c2VsaW5lSklUOwogICAgIH0KKworICAgIGJvb2wgdXNlRGF0YUlDKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKSVRDb2RlOjp1c2VEYXRhSUMoaml0VHlwZSgpKTsKKyAgICB9CiAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZS5jcHAKaW5kZXggMGMzYzQxMjFkNTg2NjI3ZWE5NTA0MWJmNzE3MGRjN2M5ZDUwYWJiYS4u
NzY3MWQ4N2IxZWE3NDlkYzM0NTZmNzc2NWFjMDZjNGE4YmNmYjJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZQogICAgIG1fY3Vz
dG9tU2xvdEJhc2Uuc2V0TWF5QmVOdWxsKHZtLCBvd25lciwgY3VzdG9tU2xvdEJhc2UpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAg
ICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LAogICAg
IGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRy
PEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90
QmFzZSwKICAgICBzdGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJp
YnV0ZSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWlu
KQpAQCAtNjEsMTggKzYxLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4gcmVz
dWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmll
ciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxT
ZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBv
d25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
dmlhUHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkpOwogICAgIHJlc3VsdC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1
dGU7CiAgICAgcmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rp
b25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbUdldHRlcikgOiBudWxscHRyOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBl
IHR5cGUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBl
QWNjZXNzQ2hhaW4sIGJvb2wgdmlhUHJveHksIAogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBjdXN0b21TZXR0ZXIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSkKIHsKICAg
ICBBU1NFUlQodHlwZSA9PSBTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCB0
eXBlID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBv
d25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
dmlhUHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUs
IGNvbmRpdGlvblNldCwgdmlhUHJveHksIG51bGxwdHIsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3Zl
KHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9
IGN1c3RvbVNldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21T
ZXR0ZXIpIDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtOTEsOSArOTEsOSBA
QCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKGNvbnN0IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2UmIG90aAogICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9k
b21BdHRyaWJ1dGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CkBAIC0xMzksNiArMTM5LDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjplbWl0
RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnMKICAgICBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwog
ICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgIGFsbG9jYXRvci5s
b2NrKHZhbHVlUmVncyk7CisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7
CiAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAKICAgICBHUFJSZWcgcGFyYW1CYXNl
R1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTIyMyw2ICsyMjUsMTEgQEAgdm9pZCBHZXR0ZXJTZXR0
ZXJBY2Nlc3NDYXNlOjplbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnMKICAgICBmb3IgKEZQUlJlZyByZWcgOiBmcFNjcmF0Y2gpCiAgICAgICAgIHJlZ2lz
dGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnKTsKICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0Nh
bGwuZXhjbHVkZShSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7Cisj
aWYgQ1BVKEFSTTY0KQorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gaml0LmNvZGVCbG9jaygp
OworICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICByZWdpc3RlcnNUb1Nw
aWxsRm9yQ0NhbGwuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKIAogICAgIEFjY2Vz
c0Nhc2VTbmlwcGV0UGFyYW1zIHBhcmFtcyhzdGF0ZS5tX3ZtLCBXVEZNb3ZlKHJlZ3MpLCBXVEZN
b3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CiAgICAgc25pcHBldC0+Z2VuZXJh
dG9yKCktPnJ1bihqaXQsIHBhcmFtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAppbmRleCBhODQ4ODQ1OGY0YWJk
MmFhZDJlYmFmNjJiMjhhMzNjNDE4NjA0MDg3Li5jMzY3M2E0ZjE0YmYwNzg1NjYwYzU2NGI3ODMy
YTVkYjQ0NmI3MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTUzLDE3ICs1MywxNyBAQCBjbGFzcyBH
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2Ug
ewogCiAgICAgdm9pZCBlbWl0RE9NSklUR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNv
bnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiwgR1BSUmVnIGJhc2VGb3JHZXRHUFIpOwogCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCisgICAgc3RhdGljIFJl
ZjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosCiAg
ICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwg
V2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQ
dHJUYWc+IGN1c3RvbUdldHRlciwKICAgICAgICAgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBz
dGQ6Om9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+LCBSZWZQdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBj
cmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+
IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hl
YWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAogICAgICAgICBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiwgYm9vbCB2
aWFQcm94eSA9IGZhbHNlLAogICAgICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRh
Zz4gY3VzdG9tU2V0dGVyID0gbnVsbHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVs
bHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikg
Y29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29u
c3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAg
ICB+R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCmluZGV4IDgzMmNkMGI4ZmFmZDk4ZDBi
Mjg1OTNjYmJiMDU3YmFlOTZmYjMyMWEuLjQ4NDEwMTM5ZGMyZjhjMGQ1YzgwYTJmZjkwNWMzYWE2
YTEzNWRmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVB
Y2Nlc3MuY3BwCkBAIC0yMTYsNiArMjE2LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgR1BSUmVn
IGdldFNjcmF0Y2hSZWdpc3RlcihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgYWxs
b2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVRhZ0dQUik7CiAgICAgYWxsb2NhdG9yLmxvY2soc3R1
YkluZm8udmFsdWVUYWdHUFIpOwogI2VuZGlmCisgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9H
UFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9z
dHViSW5mb0dQUik7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3Jh
dGNoR1BSKCk7CiAgICAgaWYgKGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKQogICAgICAg
ICByZXR1cm4gSW52YWxpZEdQUlJlZzsKQEAgLTM3OSwxOSArMzgxLDcwIEBAIGJvb2wgSW5saW5l
QWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
IFN0cnVjdHVyZSoKICAgICByZXR1cm4gbGlua2VkQ29kZUlubGluZTsKIH0KIAotdm9pZCBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gdGFyZ2V0KQordm9pZCBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCiB7Ci0gICAgQ0NhbGxIZWxw
ZXJzIGppdDsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkgeworICAgICAgICBzdHVi
SW5mby5tX2NvZGVQdHIgPSB0YXJnZXQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBh
dXRvIGp1bXAgPSBqaXQuanVtcCgpOworICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVy
KHN0dWJJbmZvLnN0YXJ0LnJldGFnZ2VkPEpTSW50ZXJuYWxQdHJUYWc+KCksIHNjb3BlZExhbWJk
YTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJl
IGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgorICAgICAgICBhdXRvIGp1bXAgPSBq
aXQuanVtcCgpOworICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7CisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKKyAg
ICAgICAgfSk7CisgICAgfSksICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIp
OworfQogCi0gICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBub2Jv
ZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgotICAgIGJvb2wg
bmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7Ci0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVy
KGppdCwgc3R1YkluZm8uc3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgp
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRpb25NdXN0U3Vj
Y2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKLSAgICBSRUxFQVNFX0FTU0VSVChsaW5rQnVm
ZmVyLmlzVmFsaWQoKSk7Ci0gICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHRhcmdldCk7Cit2b2lk
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlD
KCkpIHsKKyAgICAgICAgLy8gSWYgaXQgaXMgbm90IEdldEJ5SWQtbGlrZS10aGluZywgd2UgZG8g
bm90IGVtaXQgbm9wIHNsZWQgKGUuZy4gR2V0QnlWYWwpLgorICAgICAgICAvLyBUaGUgY29kZSBp
cyBhbHJlYWR5IGFuIGluZGlyZWN0IGp1bXAsIGFuZCBvbmx5IHRoaW5nIHdlIHNob3VsZCBkbyBp
cyByZXBsYWNpbmcgbV9jb2RlUHRyLgorICAgICAgICBpZiAoc3R1YkluZm8uaGFzQ29uc3RhbnRJ
ZGVudGlmaWVyKSB7CisgICAgICAgICAgICAvLyBJZiBtX2NvZGVQdHIgaXMgcG9pbnRpbmcgdG8g
c3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uLCB0aGlzIG1lYW5zIHRoYXQgSW5saW5lQWNj
ZXNzIGNvZGUgaXMgbm90IGEgc3R1YiBvbmUuCisgICAgICAgICAgICAvLyBXZSByZXdyaXRlIHRo
aXMgd2l0aCB0aGUgc3R1Yi1iYXNlZCBkaXNwYXRjaGluZyBjb2RlIG9uY2UsIGFuZCBjb250aW51
ZSB1c2luZyBpdCB1bnRpbCB3ZSByZXNldCB0aGUgY29kZS4KKyAgICAgICAgICAgIGlmIChzdHVi
SW5mby5tX2NvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSA9PSBzdHViSW5mby5zbG93UGF0aFN0
YXJ0TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkgeworICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKHN0dWJJbmZvLnN0YXJ0LnJldGFnZ2VkPEpTSW50ZXJu
YWxQdHJUYWc+KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxI
ZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKCZzdHViSW5mbyksIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOworICAg
ICAgICAgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm8u
bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQu
anVtcCgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmVMb2NhdGlvbiA9IHN0dWJJbmZv
LmRvbmVMb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XShM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoanVtcCwgZG9uZUxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgfSksICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgc3R1YiBjYWxsIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0gdGFy
Z2V0OworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgRklOQUxJWkVfQ09ERShsaW5rQnVm
ZmVyLCBOb1B0clRhZywgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7Cisg
ICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoc3R1YkluZm8uc3RhcnQucmV0YWdnZWQ8
SlNJbnRlcm5hbFB0clRhZz4oKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsm
XShDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNs
ZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUg
b2YgYW4gSUMuCisgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7CisgICAgICAgIGppdC5h
ZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgIGxp
bmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQpOworICAgICAgICB9KTsKKyAgICB9KSwgIklubGlu
ZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNz
OjpyZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoc3R1YkluZm8u
c3RhcnQucmV0YWdnZWQ8SlNJbnRlcm5hbFB0clRhZz4oKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0Nh
bGxIZWxwZXJzJik+KFsmXShDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAvLyBXZSBkb24n
dCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUganVtcGluZyBp
bnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7
CisgICAgICAgIGF1dG8gc2xvd1BhdGhTdGFydExvY2F0aW9uID0gc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uOworICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKSB7CisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfSksICJJbmxpbmVBY2Nlc3M6IGxpbmtp
bmcgY29uc3RhbnQganVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNK
dW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHJld2lyZVN0dWJBc0p1bXBJbkFjY2Vz
c05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQ
YXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCmluZGV4IGY0OWIzNWI4ZjIyNjQw
NmM3ZmIyNmZmYmI0ODg2YjJiODQ3MWQxMmQuLmIxMDJhZTAyMzY1OTM2MGUxZDM2ZGU5MmRkZDE0
NGNkMmQyMjI1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5l
QWNjZXNzLmgKQEAgLTEwNCwxMCArMTA0LDE0IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAg
c3RhdGljIGJvb2wgaXNDYWNoZWFibGVBcnJheUxlbmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpT
QXJyYXkqKTsKICAgICBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZVN0cmluZ0xlbmd0aChTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoU3RydWN0
dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7Ci0gICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVt
cChTdHJ1Y3R1cmVTdHViSW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVTZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1
YkluZm8mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVN0cmluZ0xlbmd0
aChTdHJ1Y3R1cmVTdHViSW5mbyYpOwogCisgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVt
cEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRp
YyB2b2lkIHJld2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3Rh
dGljIHZvaWQgcmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2VzcyhDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1YkFz
SnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisKICAgICAvLyBU
aGlzIGlzIGhlbHBmdWwgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2l6ZSBvZiBhbiBJQyBvbgogICAg
IC8vIHZhcmlvdXMgcGxhdGZvcm1zLiBXaGVuIGFkZGluZyBhIG5ldyB0eXBlIG9mIElDLCBpbXBs
ZW1lbnQKICAgICAvLyBpdHMgcGxhY2Vob2xkZXIgY29kZSBoZXJlLCBhbmQgbG9nIHRoZSBzaXpl
LiBUaGF0IHdheSB3ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKaW5kZXggMjFmMjQ1M2JhYzdhZmFlNzcyNDFjYjA0
YTI1ZDIwZmRkOTkzYmMzNC4uOTk0OTA4ZDY4YjYyYmJlMDZlMDlhYTBiMzdlNzdjMTEwYzY2OTJk
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2UuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3Jl
YXRlKAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRp
b25TZXQsIEpTT2JqZWN0KiBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPihuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NU
eXBlLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5zdGFuY2VPZkFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBhY2Nlc3NUeXBlLCBz
dHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgcHJvdG90eXBlKSk7CiB9CiAKIHZvaWQgSW5zdGFuY2VP
ZkFjY2Vzc0Nhc2U6OmR1bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29t
bWEpIGNvbnN0CkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmR1
bXBJbXBsKFByaW50U3RyZWFtJiBvdXQsIENvbW1hUHJpbnRlciYgY29tbWEpIGNvbnN0CiAgICAg
b3V0LnByaW50KGNvbW1hLCAicHJvdG90eXBlID0gIiwgSlNWYWx1ZShwcm90b3R5cGUoKSkpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNs
b25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUo
KSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0YW5jZU9mQWNjZXNzQ2FzZT4gcmVz
dWx0KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+
cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCmluZGV4IDY5ZTJi
MzFhYTk0YTU5ZDMwZGZiNGNhZjIyNDQ5OWQ2MDI3Nzg0N2MuLmFkNzFlNjk0MmY0NDkyZmE4YWJk
ZWFhYzdlYTBmYzQ2YjcwNzllN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oCkBAIC0zNCwxNSArMzQsMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBB
Y2Nlc3NDYXNlIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gQWNjZXNzQ2FzZTsKKyAgICBm
cmllbmQgY2xhc3MgQWNjZXNzQ2FzZTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgK
ICAgICAgICAgVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsCiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUpOwog
ICAgIAogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlw
ZS5nZXQoKTsgfQogICAgIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVBy
aW50ZXImKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xv
bmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5h
bDsKICAgICAKICAgICB+SW5zdGFuY2VPZkFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFj
Y2Vzc0Nhc2UuY3BwCmluZGV4IDYzMDFkYzIzMzY5MzNkNjc2YzNiZTllOTBjNjAxODlhMTMxNzM4
MTcuLjM0YjFhODAyNzg4OTVmNzFhYmZlNjgyOTY5Y2RlNDMwZjMyZTdkNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDE4ICszOSwxOCBAQCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3ND
YXNlOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2Fj
aAogICAgIG1faW50cmluc2ljRnVuY3Rpb24uc2V0KHZtLCBvd25lciwgaW50cmluc2ljRnVuY3Rp
b24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0
aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHBy
b3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vz
c0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlv
biogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90
b3R5cGVBY2Nlc3NDaGFpbikKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwg
b2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50
cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3Ry
dWN0dXJlLCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlw
ZUFjY2Vzc0NoYWluKSkpOwogfQogCiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjp+SW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2Fz
ZT4gSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpu
ZXcgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRT
dGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaAppbmRleCA2
Mjg3MDA0MTU4NzMxZDViOGZlYjUwNjM1M2RlNTU5YjY0NDc2NDQ2Li40N2FmMWEyYmYxZGQ2Y2I5
MTM2MjYzMjEwMTkzYjQ3YTNmZjJhYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKQEAgLTQyLDkg
KzQyLDkgQEAgY2xhc3MgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBB
Y2Nlc3NDYXNlIHsKICAgICBzdGF0aWMgYm9vbCBjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVu
Y3Rpb24qLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGVtaXRJbnRyaW5zaWNHZXR0ZXIoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIEpTRnVu
Y3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYp
OworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0
cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBj
b25zdCBmaW5hbDsKIAogICAgIH5JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmNwcAppbmRleCAyOTU2ZGQwY2Q1ZDBlYWU2MWEwOGUzZGM3NjVi
Zjc0MzQ0MWM1ZjhkLi5jMjljMWRkZmFmNDgxNTU2NjE1MTcwODVhODhlMTlhMDczYWJlN2ZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCkBAIC00NSwxOCArNDUsMTggQEAgTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZTo6TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIENhY2gKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgb3duZXIsIG1vZHVs
ZUVudmlyb25tZW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5h
bWVzcGFjZU9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNj
b3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KQorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG1vZHVsZU5hbWVzcGFjZU9i
amVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQsIFNjb3BlT2Zmc2V0
IHNjb3BlT2Zmc2V0KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4o
bmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBtb2R1
bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBzY29wZU9mZnNldCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uodm0sIG93bmVy
LCBpZGVudGlmaWVyLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIG1vZHVsZUVudmlyb25tZW50LCBz
Y29wZU9mZnNldCkpOwogfQogCiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjp+TW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4g
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPiByZXN1bHQobmV3IE1vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcg
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0
ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaAppbmRleCA5MmEw
YjhhMzViNTQ3MTYyNDEzMGQ2NTA2NTNkMDViZjVkNzkzMzc3Li5kNDM5NTBiZjA2MzEzN2NmNzcz
Yjg0YzRhYWU0OTQ0YjA0YzlhM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKQEAgLTQ0LDkgKzQ0
LDkgQEAgY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBBY2Nl
c3NDYXNlIHsKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7IH0KICAgICBTY29wZU9mZnNl
dCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KIAotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiBvd25l
ciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqLCBKU01vZHVs
ZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4g
Y3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgU2NvcGVPZmZzZXQpOwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CisgICAg
UmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGVtaXQoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWxsVGhyb3Vn
aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKaW5kZXggM2QyMzNmYWQxMzM5MmRlMDJiZjNiM2M5
N2ZkMDY0N2YwZDFhYWZmMy4uYmU3M2ZkYjVlNWE3YTlmZjFiNzUyNzIwMjUyOTNjYjYyYTU4NDRm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04OSw2ICs5MCwzMiBA
QCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5kKCk7CiAgICAgfQor
CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICBIYXNoZXIgaGFzaGVy
OworICAgICAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6ICp0aGlzKQorICAgICAgICAgICAgYWRk
KGhhc2hlciwgY29uZGl0aW9uLmhhc2goKSk7CisgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgp
OworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIHJo
cykKKyAgICB7CisgICAgICAgIGlmIChsaHMuc2l6ZSgpICE9IHJocy5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gbGl0ZXIgPSBsaHMuYmVnaW4oKTsKKyAg
ICAgICAgYXV0byByaXRlciA9IHJocy5iZWdpbigpOworICAgICAgICBmb3IgKDsgbGl0ZXIgIT0g
bGhzLmVuZCgpOyArK2xpdGVyLCArK3JpdGVyKSB7CisgICAgICAgICAgICBpZiAoISgqbGl0ZXIg
PT0gKnJpdGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhzLCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEobGhzID09IHJocyk7
CisgICAgfQogICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvck9iamVjdChKU09i
amVjdCopIGNvbnN0OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGZvckNvbmRpdGlvbktp
bmQoUHJvcGVydHlDb25kaXRpb246OktpbmQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMDNhMmY2NzFm
NzQ0NmU0YWNhZGNkNzRiOWM4N2U4OWE3ZDA5YTAxNS4uYzU3NTFhODkzZDlmNWM5NDEyYzQ2NGIx
ZWU4ZDBjZDQ2Nzg4ZWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC01OSwxMCArNTksOSBAQCB2b2lkIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAg
b3V0LnByaW50KCI6IiwgbV9jb2RlKTsKIH0KIAotdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
Omluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRp
b24pCit2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24p
CiB7Ci0gICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VB
bmRJbnN0YWxsV2F0Y2hwb2ludCgKLSAgICAgICAgd2F0Y2hwb2ludHMsIGppdC0+Y29kZUJsb2Nr
KCksIHN0dWJJbmZvLCBjb25kaXRpb24pOworICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHVi
SW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQod2F0Y2hwb2ludHMsIGNv
ZGVCbG9jaywgc3R1YkluZm8sIGNvbmRpdGlvbik7CiB9CiAKIHZvaWQgQWNjZXNzR2VuZXJhdGlv
blN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCkBAIC03Myw3ICs3MiwxMCBAQCB2b2lkIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNjcmF0Y2goKQogdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6OnN1Y2NlZWQoKQogewogICAgIHJlc3RvcmVTY3JhdGNoKCk7Ci0gICAgc3VjY2Vzcy5hcHBl
bmQoaml0LT5qdW1wKCkpOworICAgIGlmIChqaXQtPmNvZGVCbG9jaygpLT51c2VEYXRhSUMoKSkK
KyAgICAgICAgaml0LT5yZXQoKTsKKyAgICBlbHNlCisgICAgICAgIHN1Y2Nlc3MuYXBwZW5kKGpp
dC0+anVtcCgpKTsKIH0KIAogY29uc3QgUmVnaXN0ZXJTZXQmIEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6bGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKQpAQCAtMTI2LDEwICsxMjgsMTEgQEAgYXV0byBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNv
bnN0IFJlZ2lzdGVyU2UKICAgICB9OwogfQogCi1hdXRvIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucygpIC0+
IFNwaWxsU3RhdGUKK2F1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdp
c3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lzdGVyU2V0JiBl
eHRyYSkgLT4gU3BpbGxTdGF0ZQogewogICAgIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnMgPSBh
bGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMoKTsKICAgICBsaXZlUmVnaXN0ZXJzLmV4Y2x1ZGUoY2Fs
bGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKIAog
ICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7CiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQs
IGxpdmVSZWdpc3RlcnMsIGV4dHJhU3RhY2tQYWRkaW5nKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBQ
b2x5bW9ycGhpY0FjY2Vzczo6flBvbHltb3JwaGljQWNjZXNzKCkgeyB9CiAKIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQorICAgIFZlY3RvcjxSZWZQdHI8
QWNjZXNzQ2FzZT4sIDI+IG9yaWdpbmFsQ2FzZXNUb0FkZCkKIHsKICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCkBAIC0yNjgsOSArMjcxLDkgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAg
Ly8gICBhZGQgbW9yZSB0aGluZ3MgYWZ0ZXIgZmFpbHVyZS4KICAgICAKICAgICAvLyBGaXJzdCBl
bnN1cmUgdGhhdCB0aGUgb3JpZ2luYWxDYXNlc1RvQWRkIGRvZXNuJ3QgY29udGFpbiBkdXBsaWNh
dGVzLgotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7
CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4gY2FzZXNUb0FkZDsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgb3JpZ2luYWxDYXNlc1RvQWRkLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFs
Q2FzZXNUb0FkZFtpXSk7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZN
b3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYg
aXQgaXMgbm90IHJlcGxhY2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0Lgog
ICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CkBAIC0yODcsOCArMjkwLDcgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgICAgIGNhc2Vz
VG9BZGQuYXBwZW5kKFdURk1vdmUobXlDYXNlKSk7CiAgICAgfQogCi0gICAgaWYgKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coImNhc2VzVG9BZGQ6
ICIsIGxpc3REdW1wKGNhc2VzVG9BZGQpLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihQb2x5bW9y
cGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlLCAiY2FzZXNUb0FkZDogIiwgbGlzdER1bXAoY2Fz
ZXNUb0FkZCkpOwogCiAgICAgLy8gSWYgdGhlcmUgYXJlbid0IGFueSBjYXNlcyB0byBhZGQsIHRo
ZW4gZmFpbCBvbiB0aGUgZ3JvdW5kcyB0aGF0IHRoZXJlJ3Mgbm8gcG9pbnQgdG8gZ2VuZXJhdGlu
ZyBhCiAgICAgLy8gbmV3IHN0dWIgdGhhdCB3aWxsIGJlIGlkZW50aWNhbCB0byB0aGUgb2xkIG9u
ZS4gUmV0dXJuaW5nIG51bGwgc2hvdWxkIHRlbGwgdGhlIGNhbGxlciB0byBqdXN0CkBAIC0zMzks
MTYgKzM0MSwxNSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjph
ZGRDYXNlcygKICAgICAgICAgbV9saXN0LmFwcGVuZChXVEZNb3ZlKGNhc2VUb0FkZCkpOwogICAg
IH0KICAgICAKLSAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAg
ICAgICAgZGF0YUxvZygiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0
KSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVy
Ym9zZSwgIkFmdGVyIGFkZENhc2VzOiBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCkpOwogCiAg
ICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkJ1ZmZlcmVkOwogfQogCiBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlKAotICAgIGNvbnN0IEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBuZXdBY2Nlc3MpCisgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2Nr
ZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgUmVmPEFjY2Vzc0Nhc2U+IG5ld0FjY2VzcykKIHsKLSAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKKyAgICBWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+LCAyPiBuZXdBY2Nlc3NlczsKICAgICBuZXdBY2Nlc3Nlcy5hcHBlbmQoV1RGTW92
ZShuZXdBY2Nlc3MpKTsKICAgICByZXR1cm4gYWRkQ2FzZXMobG9ja2VyLCB2bSwgY29kZUJsb2Nr
LCBzdHViSW5mbywgV1RGTW92ZShuZXdBY2Nlc3NlcykpOwogfQpAQCAtMzU5LDkgKzM2MCwxMiBA
QCBib29sIFBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsoVk0mIHZtKSBjb25zdAogICAgICAg
ICBpZiAoIWF0KGkpLnZpc2l0V2Vhayh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEpTQ2VsbD4mIHdlYWtSZWZlcmVuY2Ug
OiBtX3dlYWtSZWZlcmVuY2VzKSB7Ci0gICAgICAgIGlmICghdm0uaGVhcC5pc01hcmtlZCh3ZWFr
UmVmZXJlbmNlLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9z
dHViUm91dGluZSkgeworICAgICAgICBmb3IgKFN0cnVjdHVyZUlEIHdlYWtSZWZlcmVuY2UgOiBt
X3N0dWJSb3V0aW5lLT53ZWFrU3RydWN0dXJlcygpKSB7CisgICAgICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZSh3ZWFrUmVmZXJlbmNlKTsKKyAgICAgICAgICAg
IGlmICghdm0uaGVhcC5pc01hcmtlZChzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQxOSw4
ICs0MjMsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBpZiAoUG9seW1vcnBoaWNB
Y2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiUmVnZW5lcmF0ZSB3aXRo
IG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0KSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoUG9s
eW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIlJlZ2VuZXJhdGUgd2l0aCBtX2xpc3Q6
ICIsIGxpc3REdW1wKG1fbGlzdCkpOwogCiAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHN0YXRl
KHZtLCBnbG9iYWxPYmplY3QsIGVjbWFNb2RlKTsKIApAQCAtNDQwLDcgKzQ0Myw3IEBAIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9jCiAgICAgdW5zaWduZWQgc3JjSW5kZXggPSAwOwogICAgIHVuc2ln
bmVkIGRzdEluZGV4ID0gMDsKICAgICB3aGlsZSAoc3JjSW5kZXggPCBtX2xpc3Quc2l6ZSgpKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUo
bV9saXN0W3NyY0luZGV4KytdKTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNl
ID0gV1RGTW92ZShtX2xpc3Rbc3JjSW5kZXgrK10pOwogICAgICAgICAKICAgICAgICAgLy8gSWYg
dGhlIGNhc2UgaGFkIGJlZW4gZ2VuZXJhdGVkLCB0aGVuIHdlIGhhdmUgdG8ga2VlcCB0aGUgb3Jp
Z2luYWwgaW4gbV9saXN0IGluIGNhc2Ugd2UKICAgICAgICAgLy8gZmFpbCB0byByZWdlbmVyYXRl
LiBUaGF0IGNhc2UgbWF5IGhhdmUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIHVzZWQgYnkgdGhl
IGNvZGUgdGhhdCBpdApAQCAtNDkxLDYgKzQ5NCw4IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
CiAgICAgaWYgKHN0dWJJbmZvLnYudGhpc1RhZ0dQUiAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby52LnRoaXNUYWdHUFIpOwogI2VuZGlmCisgICAgaWYg
KHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAKICAgICBzdGF0ZS5zY3JhdGNoR1BS
ID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogCkBAIC01MDAsMTIgKzUwNSw2IEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29u
c3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KLSAgICAKLSAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7Ci0gICAgc3RhdGUu
aml0ID0gJmppdDsKLQotICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQot
ICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsK
IAogICAgIGJvb2wgZ2VuZXJhdGVkRmluYWxDb2RlID0gZmFsc2U7CiAKQEAgLTUxOSwxNCArNTE4
LDQzIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJh
dGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIGdlbmVyYXRlZEZpbmFsQ29k
ZSA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZl
cmJvc2UpCi0gICAgICAgIGRhdGFMb2coIk9wdGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2Fz
ZXMpLCAiXG4iKTsKLSAgICAKKyAgICBkYXRhTG9nTG5JZihQb2x5bW9ycGhpY0FjY2Vzc0ludGVy
bmFsOjp2ZXJib3NlLCAiT3B0aW1pemVkIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNlcykpOworCisg
ICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKKyAgICBib29sIGRvZXNKU0dldHRlclNldHRlckNh
bGxzID0gZmFsc2U7CisgICAgYm9vbCBjYW5CZVNoYXJlZCA9IHRydWU7CisgICAgVmVjdG9yPEpT
Q2VsbCo+IGNlbGxzVG9NYXJrOworICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4g
a2V5cyhjYXNlcy5zaXplKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1
dG8mIGVudHJ5IDogY2FzZXMpIHsKKyAgICAgICAgZG9lc0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2Fs
bHModm0sICZjZWxsc1RvTWFyayk7CisgICAgICAgIHN3aXRjaCAoZW50cnktPnR5cGUoKSkgewor
ICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkdldHRlcjoKKyAgICAgICAgY2FzZSBBY2Nlc3NDYXNl
OjpTZXR0ZXI6CisgICAgICAgICAgICAvLyBHZXR0ZXIgLyBTZXR0ZXIgcmVsaWVzIG9uIHN0YWNr
LXBvaW50ZXIgYWRqdXN0bWVudCwgd2hpY2ggaXMgdGllZCB0byB0aGUgbGlua2VkIENvZGVCbG9j
aywgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHVuc2hhcmVhYmxlLgorICAgICAgICAgICAgY2FuQmVT
aGFyZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGRvZXNKU0dldHRlclNldHRlckNhbGxzID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkN1c3RvbVZh
bHVlR2V0dGVyOgorICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yR2V0dGVy
OgorICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkN1c3RvbVZhbHVlU2V0dGVyOgorICAgICAgICBj
YXNlIEFjY2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yU2V0dGVyOgorICAgICAgICAgICAgLy8gQ3Vz
dG9tIGdldHRlciAvIHNldHRlciBlbWl0cyBKU0dsb2JhbE9iamVjdCBwb2ludGVyLCB3aGljaCBp
cyB0aWVkIHRvIHRoZSBsaW5rZWQgQ29kZUJsb2NrLgorICAgICAgICAgICAgY2FuQmVTaGFyZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAga2V5c1tpbmRleF0gPSBlbnRyeTsKKyAgICAg
ICAgKytpbmRleDsKKyAgICB9CisgICAgc3RhdGUubV9kb2VzQ2FsbHMgPSBkb2VzQ2FsbHM7Cisg
ICAgc3RhdGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGRvZXNKU0dldHRlclNldHRlckNh
bGxzOworCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSdyZSBjb252aW5jZWQgdGhhdCAnY2FzZXMn
IGNvbnRhaW5zIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnQgdG8gSklUIG5vdyBhbmQgd2UKICAgICAv
LyB3b24ndCBjaGFuZ2UgdGhhdCBzZXQgYW55bW9yZS4KICAgICAKICAgICBib29sIGFsbEd1YXJk
ZWRCeVN0cnVjdHVyZUNoZWNrID0gdHJ1ZTsKLSAgICBib29sIGhhc0pTR2V0dGVyU2V0dGVyQ2Fs
bCA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAg
ICBib29sIG5lZWRzU3RyaW5nUHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAgIGJvb2wgbmVlZHNT
eW1ib2xQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CkBAIC01NDIsMTAgKzU3MCw0NyBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICB9CiAgICAgICAgIGNvbW1pdChsb2NrZXIsIHZtLCBz
dGF0ZS53YXRjaHBvaW50cywgY29kZUJsb2NrLCBzdHViSW5mbywgKm5ld0Nhc2UpOwogICAgICAg
ICBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVjayAmPSBuZXdDYXNlLT5ndWFyZGVkQnlTdHJ1Y3R1
cmVDaGVjayhzdHViSW5mbyk7Ci0gICAgICAgIGlmIChuZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNz
Q2FzZTo6R2V0dGVyIHx8IG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpTZXR0ZXIpCi0g
ICAgICAgICAgICBoYXNKU0dldHRlclNldHRlckNhbGwgPSB0cnVlOworICAgICAgICBpZiAobmV3
Q2FzZS0+dXNlc1BvbHlQcm90bygpKQorICAgICAgICAgICAgY2FuQmVTaGFyZWQgPSBmYWxzZTsK
KyAgICB9CisgICAgaWYgKG5lZWRzU3ltYm9sUHJvcGVydHlDaGVjayB8fCBuZWVkc1N0cmluZ1By
b3BlcnR5Q2hlY2sgfHwgbmVlZHNJbnQzMlByb3BlcnR5Q2hlY2spCisgICAgICAgIGNhbkJlU2hh
cmVkID0gZmFsc2U7CisKKyAgICBhdXRvIGZpbmlzaENvZGVHZW5lcmF0aW9uID0gWyZdKFJlZlB0
cjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiYmIHN0dWIpIHsKKyAgICAgICAgbV9z
dHViUm91dGluZSA9IFdURk1vdmUoc3R1Yik7CisgICAgICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZN
b3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNB
Y2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIlJldHVybmluZzogIiwgbV9zdHViUm91dGluZS0+Y29k
ZSgpKTsKKworICAgICAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKKyAgICAgICAgbV9saXN0
LnNocmlua1RvRml0KCk7CisKKyAgICAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6S2luZCBy
ZXN1bHRLaW5kOworICAgICAgICBpZiAobV9saXN0LnNpemUoKSA+PSBPcHRpb25zOjptYXhBY2Nl
c3NWYXJpYW50TGlzdFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUpCisgICAgICAgICAgICBy
ZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxDb2RlOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlvblJl
c3VsdDo6R2VuZXJhdGVkTmV3Q29kZTsKKworICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlv
blJlc3VsdChyZXN1bHRLaW5kLCBtX3N0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICB9
OworCisgICAgQ0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOworICAgIHN0YXRlLmppdCA9ICZq
aXQ7CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkgeworICAgICAgICBpZiAoc3Rh
dGUubV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscykgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBu
byBndWFyYW50ZWUgdGhhdCBzdGFjay1wb2ludGVyIGlzIHRoZSBleHBlY3RlZCBvbmUuIFRoaXMg
aXMgbm90IGEgcHJvYmxlbSBpZiB3ZSBkbyBub3QgaGF2ZSBKUyBnZXR0ZXIgLyBzZXR0ZXIgY2Fs
bHMgc2luY2Ugc3RhY2stcG9pbnRlciBpcworICAgICAgICAgICAgLy8gYSBjYWxsZWUtc2F2ZSBy
ZWdpc3RlciBpbiB0aGUgQyBjYWxsaW5nIGNvbnZlbnNpb24uIEhvd2V2ZXIsIG91ciBKUyBleGVj
dXRhYmxlIGNhbGwgZG9lcyBub3Qgc2F2ZSBzdGFjay1wb2ludGVyLiBTbyB3ZSBhcmUgYWRqdXN0
aW5nIHN0YWNrLXBvaW50ZXIgYWZ0ZXIKKyAgICAgICAgICAgIC8vIEpTIGdldHRlciAvIHNldHRl
ciBjYWxscy4gQnV0IHRoaXMgY291bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIGluaXRpYWwgc3Rh
Y2stcG9pbnRlciwgYW5kIG1ha2VzIFBBQyB0YWdnaW5nIGJyb2tlbi4KKyAgICAgICAgICAgIC8v
IFRvIGVuc3VyZSBQQUMtdGFnZ2luZyB3b3JrLCB3ZSBmaXJzdCBhZGp1c3Qgc3RhY2stcG9pbnRl
ciB0byB0aGUgYXBwcm9wcmlhdGUgb25lLgorICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6
ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
ICAgICB9CiAKKyAgICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KKyAgICAg
ICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAg
CiAgICAgaWYgKGNhc2VzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUaGlzIGlzIHN1cGVyIHVu
bGlrZWx5LCBidXQgd2UgbWFrZSBpdCBsZWdhbCBhbnl3YXkuCiAgICAgICAgIHN0YXRlLmZhaWxB
bmRSZXBhdGNoLmFwcGVuZChqaXQuanVtcCgpKTsKQEAgLTY5MCw3ICs3NTUsNyBAQCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvYwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tUaGF0T3duc0V4Y2Vw
dGlvbkhhbmRsZXJzID0gbnVsbHB0cjsKICAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmc7Ci0gICAgaWYgKHN0YXRlLm5lZWRzVG9SZXN0
b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBoYXNKU0dldHRlclNldHRlckNhbGwpIHsKKyAg
ICBpZiAoc3RhdGUubmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGRvZXNK
U0dldHRlclNldHRlckNhbGxzKSB7CiAgICAgICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5k
bGVyLgogICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIHdo
ZW4gZG9pbmcgZ2VuZXJpY1Vud2luZCBmcm9tIGEgcHVyZSBKUyBnZXR0ZXIvc2V0dGVyIC4KICAg
ICAgICAgLy8gTm90ZSBhbHNvIHRoYXQgdGhpcyBpcyBub3QgcmVhY2hhYmxlIGZyb20gY3VzdG9t
IGdldHRlci9zZXR0ZXIuIEN1c3RvbSBnZXR0ZXIvc2V0dGVycyB3aWxsIGhhdmUgCkBAIC03MzAs
NDggKzc5NSw2MyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpy
ZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgICAgICBjYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcgPSBzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9u
SGFuZGxpbmcoKTsKICAgICB9CiAKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkgewor
ICAgICAgICBmYWlsdXJlLmxpbmsoJmppdCk7CisgICAgICAgIC8vIEluIEFSTTY0LCB3ZSBkbyBu
b3QgcHVzaCBhbnl0aGluZyBvbiBzdGFjayBzcGVjaWFsbHkuCisgICAgICAgIC8vIFNvIHdlIGNh
biBqdXN0IGp1bXAgdG8gdGhlIHNsb3ctcGF0aCBldmVuIHRob3VnaCB0aGlzIHRodW5rIGlzIGNh
bGxlZCAobm90IGp1bXBlZCkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFpbCBjYWxs
IHRvIHRoZSB0aHVuayB3aGljaCBjYWxscyB0aGUgc2xvdyBwYXRoIGZ1bmN0aW9uLgorICAgICAg
ICAvLyBBbmQgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBJQyBzbG93LXBhdGggZ2VuZXJhdGlvbiBpbiBC
YXNlbGluZUpJVC4KKyAgICAgICAgaml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dQYXRo
U3RhcnRMb2NhdGlvbigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0KKworICAgIFJl
ZlB0cjxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiBzdHViOworICAgIEZpeGVkVmVj
dG9yPFN0cnVjdHVyZUlEPiB3ZWFrU3RydWN0dXJlcyhXVEZNb3ZlKHN0YXRlLndlYWtTdHJ1Y3R1
cmVzKSk7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkgJiYgY2FuQmVTaGFyZWQpIHsK
KyAgICAgICAgU2hhcmVkSklUU3R1YlNldDo6U2VhcmNoZXIgc2VhcmNoZXIgeworICAgICAgICAg
ICAgc3R1YkluZm8uYmFzZUdQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnZhbHVlR1BSLAorICAg
ICAgICAgICAgc3R1YkluZm8ucmVncy50aGlzR1BSLAorICAgICAgICAgICAgc3R1YkluZm8ubV9z
dHViSW5mb0dQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsCisgICAgICAg
ICAgICBrZXlzLAorICAgICAgICAgICAgd2Vha1N0cnVjdHVyZXMsCisgICAgICAgIH07CisgICAg
ICAgIHN0dWIgPSB2bS5tX3NoYXJlZEpJVFN0dWJzLT5maW5kKHNlYXJjaGVyKTsKKyAgICAgICAg
aWYgKHN0dWIpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50
ZXJuYWw6OnZlcmJvc2UsICJGb3VuZCBleGlzdGluZyBjb2RlIHN0dWIgIiwgc3R1Yi0+Y29kZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIp
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNv
ZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9u
Q2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAg
ICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAg
IGRhdGFMb2coIkRpZCBmYWlsIHRvIGFsbG9jYXRlLlxuIik7CisgICAgICAgIGRhdGFMb2dMbklm
KFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UsICJEaWQgZmFpbCB0byBhbGxvY2F0
ZS4iKTsKICAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdhdmVVcDsKICAg
ICB9CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzdWNjZXNzTGFi
ZWwgPSBzdHViSW5mby5kb25lTG9jYXRpb247CiAKLSAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUu
c3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsKLQotICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIGlmIChjb2RlQmxvY2stPnVzZURh
dGFJQygpKQorICAgICAgICBBU1NFUlQoc3RhdGUuc3VjY2Vzcy5lbXB0eSgpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NMYWJlbCk7
CisgICAgICAgIGxpbmtCdWZmZXIubGluayhmYWlsdXJlLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24pOworICAgIH0KICAgICAKLSAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5h
bDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZyhGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0
dWJJbmZvLmNvZGVPcmlnaW4pLCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHVi
IGZvciAiLCBsaXN0RHVtcChjYXNlcyksICJcbiIpOworICAgIGRhdGFMb2dMbklmKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UsIEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1
YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIg
Zm9yICIsIGxpc3REdW1wKGNhc2VzKSk7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IGNvZGUgPSBGSU5BTElaRV9DT0RFX0ZPUigKICAgICAgICAgY29k
ZUJsb2NrLCBsaW5rQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIiVzIiwg
dG9DU3RyaW5nKCJBY2Nlc3Mgc3R1YiBmb3IgIiwgKmNvZGVCbG9jaywgIiAiLCBzdHViSW5mby5j
b2RlT3JpZ2luLCAiIHdpdGggcmV0dXJuIHBvaW50ICIsIHN1Y2Nlc3NMYWJlbCwgIjogIiwgbGlz
dER1bXAoY2FzZXMpKS5kYXRhKCkpOwotCi0gICAgYm9vbCBkb2VzQ2FsbHMgPSBmYWxzZTsKLSAg
ICBWZWN0b3I8SlNDZWxsKj4gY2VsbHNUb01hcms7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IGNh
c2VzKQotICAgICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxscyh2bSwgJmNlbGxzVG9N
YXJrKTsKLSAgICAKLSAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5t
X2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwotICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZN
b3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKLSAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlz
RW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7Ci0gICAgaWYgKFBv
bHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlJldHVy
bmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAgIAotICAgIG1fbGlzdCA9IFdURk1vdmUo
Y2FzZXMpOwotICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwotICAgIAotICAgIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKLSAgICBpZiAobV9saXN0LnNpemUoKSA+PSBP
cHRpb25zOjptYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUoKSB8fCBnZW5lcmF0ZWRGaW5hbENvZGUp
Ci0gICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRG
aW5hbENvZGU7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHRLaW5kID0gQWNjZXNzR2VuZXJhdGlv
blJlc3VsdDo6R2VuZXJhdGVkTmV3Q29kZTsKLSAgICAKLSAgICByZXR1cm4gQWNjZXNzR2VuZXJh
dGlvblJlc3VsdChyZXN1bHRLaW5kLCBjb2RlLmNvZGUoKSk7CisgICAgc3R1YiA9IGNyZWF0ZUlD
SklUU3R1YlJvdXRpbmUoY29kZSwgV1RGTW92ZShrZXlzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJl
cyksIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUu
bV9jYWxsTGlua0luZm9zKSwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2Fs
bFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKKworICAgIGlmIChjb2RlQmxvY2stPnVz
ZURhdGFJQygpKSB7CisgICAgICAgIGlmIChjYW5CZVNoYXJlZCkKKyAgICAgICAgICAgIHZtLm1f
c2hhcmVkSklUU3R1YnMtPmFkZChTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjpLZXkoc3R1YkluZm8u
YmFzZUdQUiwgc3R1YkluZm8udmFsdWVHUFIsIHN0dWJJbmZvLnJlZ3MudGhpc0dQUiwgc3R1Yklu
Zm8ubV9zdHViSW5mb0dQUiwgc3R1YkluZm8udXNlZFJlZ2lzdGVycywgc3R1Yi5nZXQoKSkpOwor
ICAgIH0KKworICAgIHJldHVybiBmaW5pc2hDb2RlR2VuZXJhdGlvbihXVEZNb3ZlKHN0dWIpKTsK
IH0KIAogdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6YWJvdXRUb0RpZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCmluZGV4IDI5MjAz
MjZkY2M5MTU0NzRiM2YxZWViN2Y3MjVlNmFiMzRhZWNiNDEuLjUwNWZhYjM3Zjg4OTQwMTkzOTE1
MzI0NzJjYzAzYTE5NmNjNTFiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBjbGFzcyBQ
b2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgLy8gV2hlbiB0aGlzIGZhaWxzIChyZXR1cm5zIEdhdmVV
cCksIHRoaXMgd2lsbCBsZWF2ZSB0aGUgb2xkIHN0dWIgaW50YWN0IGJ1dCB5b3Ugc2hvdWxkIG5v
dCB0cnkKICAgICAvLyB0byBjYWxsIHRoaXMgbWV0aG9kIGFnYWluIGZvciB0aGF0IFBvbHltb3Jw
aGljQWNjZXNzIGluc3RhbmNlLgogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZXMo
Ci0gICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2Nr
KiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
LCAyPik7CisgICAgICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAy
Pik7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENhc2UoCi0gICAgICAgIGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgICAgICBjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
JiwgUmVmPEFjY2Vzc0Nhc2U+KTsKICAgICAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJl
Z2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogICAgIApA
QCAtMTc5LDE2ICsxNzksMTUgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3MgewogICAgIGZyaWVu
ZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgZnJpZW5kIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU7CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
LCAyPiBMaXN0VHlwZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+
IExpc3RUeXBlOwogICAgIAogICAgIHZvaWQgY29tbWl0KAogICAgICAgICBjb25zdCBHQ1NhZmVD
b25jdXJyZW50SlNMb2NrZXImLCBWTSYsIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm8+JiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLAogICAgICAg
ICBBY2Nlc3NDYXNlJik7CiAKICAgICBMaXN0VHlwZSBtX2xpc3Q7Ci0gICAgUmVmUHRyPEpJVFN0
dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5lOworICAgIFJlZlB0cjxQb2x5bW9ycGhpY0FjY2Vzc0pJ
VFN0dWJSb3V0aW5lPiBtX3N0dWJSb3V0aW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBv
aW50c09uU3RydWN0dXJlU3R1YkluZm8+IG1fd2F0Y2hwb2ludHM7Ci0gICAgRml4ZWRWZWN0b3I8
V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IG1fd2Vha1JlZmVyZW5jZXM7CiB9OwogCiBzdHJ1Y3QgQWNj
ZXNzR2VuZXJhdGlvblN0YXRlIHsKQEAgLTE5Niw2ICsxOTUsOCBAQCBzdHJ1Y3QgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlIHsKICAgICAgICAgOiBtX3ZtKHZtKSAKICAgICAgICAgLCBtX2dsb2JhbE9i
amVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAg
ICAgLCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzKGZhbHNlKQorICAgICAgICAsIG1fZG9lc0Nh
bGxzKGZhbHNlKQogICAgICAgICAsIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNl
cHRpb25IYW5kbGluZyhmYWxzZSkKICAgICAgICAgLCBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJz
SWZFeGNlcHRpb24oZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkQ2FsbFNpdGVJbmRleChm
YWxzZSkKQEAgLTIyMywxMCArMjI0LDEyIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUg
ewogICAgIEZQUlJlZyBzY3JhdGNoRlBSIHsgSW52YWxpZEZQUlJlZyB9OwogICAgIEVDTUFNb2Rl
IG1fZWNtYU1vZGUgeyBFQ01BTW9kZTo6c2xvcHB5KCkgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiB3YXRjaHBvaW50czsKLSAgICBWZWN0b3I8
V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOworICAgIFZlY3RvcjxTdHJ1Y3R1
cmVJRD4gd2Vha1N0cnVjdHVyZXM7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0lu
Zm9zOworICAgIGJvb2wgbV9kb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA6IDE7CisgICAgYm9vbCBt
X2RvZXNDYWxscyA6IDE7CiAKLSAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uJik7CisgICAgdm9pZCBpbnN0YWxsV2F0Y2hwb2ludChDb2RlQmxv
Y2sqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYpOwogCiAgICAgdm9pZCByZXN0b3Jl
U2NyYXRjaCgpOwogICAgIHZvaWQgc3VjY2VlZCgpOwpAQCAtMjQ4LDcgKzI1MSw3IEBAIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBjYWxjdWxh
dGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAKICAgICBTcGls
bFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVy
U2V0JiBleHRyYSA9IHsgfSk7Ci0gICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNU
b1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCk7CisgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2
ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKGNvbnN0IFJlZ2lz
dGVyU2V0JiBleHRyYSA9IHsgfSk7CiAKICAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJv
bVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oY29uc3QgU3BpbGxTdGF0ZSYpOwogICAg
IHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGNvbnN0IFNwaWxsU3Rh
dGUmLCBjb25zdCBSZWdpc3RlclNldCYgZG9udFJlc3RvcmUgPSB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCmlu
ZGV4IGNjMjk3M2M5NGUxMTYyYTM4OWUyZWY1MGVlYTZhM2IzNGU3NWZhOWQuLjRiZjc4MGVkMzE3
NjZlZGU2YmNjNTYwNDQ2YTUwNzlhY2JjYzEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKQEAgLTM4LDE5ICsz
OCwxOSBAQCBQcm94eWFibGVBY2Nlc3NDYXNlOjpQcm94eWFibGVBY2Nlc3NDYXNlKFZNJiB2bSwg
SlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSBhY2NlcwogICAgIG1fdmlhUHJveHkgPSB2aWFQcm94
eTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6
OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0
LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2Fz
ZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNj
ZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFk
ZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nl
c3NDaGFpbikKIHsKICAgICBBU1NFUlQodHlwZSA9PSBMb2FkIHx8IHR5cGUgPT0gTWlzcyB8fCB0
eXBlID09IEdldEdldHRlciB8fCB0eXBlID09IFJlcGxhY2UpOwotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0
eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94
eSwgYWRkaXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwg
aWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFk
ZGl0aW9uYWxTZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKIFByb3h5
YWJsZUFjY2Vzc0Nhc2U6On5Qcm94eWFibGVBY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1Jl
ZjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFByb3h5YWJsZUFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgUHJveHlhYmxl
QWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm94
eWFibGVBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCmluZGV4IGRjMzllMjZjYTJmNGIyYjdhYmExMmI1YTU1
ZjMyNjY0NDEwZWZhNWMuLmU4NDM4NWNhNzVjOWY3NTJlOGU4ZTE2Y2RkZTBhYmNhYzdiY2M0ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nl
c3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFj
Y2Vzc0Nhc2UuaApAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIFByb3h5YWJsZUFjY2Vzc0Nhc2Ug
OiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAKICAgICBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hZGRpdGlvbmFsU2V0LmdldCgpOyB9CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCos
IEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1
cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCgpLAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlND
ZWxsKiwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0
cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAgIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwgV2F0Y2hw
b2ludFNldCogYWRkaXRpb25hbFNldCA9IG51bGxwdHIsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3ND
aGFpbj4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENv
bW1hUHJpbnRlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgflByb3h5YWJsZUFjY2Vzc0Nhc2UoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAKaW5kZXggYWZhZTRlODQyZmM3ZDRkZDFlZGU4ZWJiY2VlZWJiNGUyNmRiMjJhNC4u
YzQ1ODNkM2ZmOWY1NGM2YjZlMTMxYTNlMDQzZDNkZjIyNDE4YzBmNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC01
Miw2ICs1Miw3IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpCiAgICAgLCBwcm9wZXJ0eUlzSW50
MzIoZmFsc2UpCiAgICAgLCBwcm9wZXJ0eUlzU3ltYm9sKGZhbHNlKQogeworICAgIHJlZ3MudGhp
c0dQUiA9IEludmFsaWRHUFJSZWc7CiB9CiAKIFN0cnVjdHVyZVN0dWJJbmZvOjp+U3RydWN0dXJl
U3R1YkluZm8oKQpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFi
b3V0VG9EaWUoKQogfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZv
OjphZGRBY2Nlc3NDYXNlKAotICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9j
a2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
RUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIHN0ZDo6dW5pcXVl
X3B0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQorICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRK
U0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnQs
IFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
cmVzdWx0OwogICAgICAgICAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6
U3R1YikgewotICAgICAgICAgICAgcmVzdWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0s
IGNvZGVCbG9jaywgKnRoaXMsIFdURk1vdmUoYWNjZXNzQ2FzZSkpOworICAgICAgICAgICAgcmVz
dWx0ID0gdS5zdHViLT5hZGRDYXNlKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIGFjY2Vz
c0Nhc2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mb0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2coIkhhZCBzdHViLCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CkBAIC0xNzAsOSArMTcxLDkg
QEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2Fz
ZSgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9y
cGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+
LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVT
dHViSW5mbyh2bSwgY29kZUJsb2NrLCBpZGVudCwgKnRoaXMpOworICAgICAgICAgICAgYXV0byBw
cmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVC
bG9jaywgaWRlbnQsICp0aGlzKTsKICAgICAgICAgICAgIGlmIChwcmV2aW91c0Nhc2UpCiAgICAg
ICAgICAgICAgICAgYWNjZXNzQ2FzZXMuYXBwZW5kKFdURk1vdmUocHJldmlvdXNDYXNlKSk7CiAg
ICAgICAgICAgICAKQEAgLTI3OSw3ICsyODAsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpy
ZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwog
ICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgotICAg
ICAgICByZXNldEluc3RhbmNlT2YoKnRoaXMpOworICAgICAgICByZXNldEluc3RhbmNlT2YoY29k
ZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVs
ZXRlQnlJRDoKICAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6
Ok5vcm1hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCmluZGV4IGE5NDA1ZGNlYjlmMDI0ZjA0OTIyYTY3NTMwMTQxOGRhNmVkMzc5
ODkuLjBmNjc3NWYxNmZiYzViYWFmZDdhNjcxMTdjNTAxNGZkZjdlNjM1YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04
OCw3ICs4OCw3IEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICB2b2lkIGluaXRQdXRC
eUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3Ry
dWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRl
bnRpZmllcik7CiAgICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9w
ZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKLSAgICBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNH
bG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IGFkZEFjY2Vzc0Nhc2UoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgSlNHbG9iYWxP
YmplY3QqLCBDb2RlQmxvY2sqLCBFQ01BTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUmVmUHRy
PEFjY2Vzc0Nhc2U+KTsKIAogICAgIHZvaWQgcmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
QmFzZSYsIENvZGVCbG9jayopOwogCkBAIC0xMzQsMTIgKzEzNCw2IEBAIGNsYXNzIFN0cnVjdHVy
ZVN0dWJJbmZvIHsKICAgICAgICAgcmV0dXJuIGlubGluZVNpemU7CiAgICAgfQogCi0gICAgQ29k
ZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBwYXRjaGFibGVKdW1wKCkKLSAgICB7IAot
ICAgICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mKTsKLSAg
ICAgICAgcmV0dXJuIHN0YXJ0Lmp1bXBBdE9mZnNldDxKU0ludGVybmFsUHRyVGFnPigwKTsKLSAg
ICB9Ci0KICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzKApAQCAtMzQ1LDE5ICszMzksMzAgQEAgY2xhc3MgU3RydWN0dXJl
U3R1YkluZm8gewogcHVibGljOgogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiBzdGFydDsgLy8gVGhpcyBpcyBlaXRoZXIgdGhlIHN0YXJ0IG9mIHRoZSBpbmxpbmUg
SUMgZm9yICpieUlkIGNhY2hlcy4gb3IgdGhlIGxvY2F0aW9uIG9mIHBhdGNoYWJsZSBqdW1wIGZv
ciAnaW5zdGFuY2VvZicgY2FjaGVzLgogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IGRvbmVMb2NhdGlvbjsKLSAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJU
YWc+IHNsb3dQYXRoQ2FsbExvY2F0aW9uOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb247CiAKKyAgICB1bmlvbiB7CisgICAg
ICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gbV9zbG93UGF0aENhbGxMb2Nh
dGlvbjsKKyAgICAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRp
b247CisgICAgfTsKKworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRTdHViUm91dGluZVB0
clRhZz4gbV9jb2RlUHRyOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVQdHIo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fY29kZVB0cik7
IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd1BhdGhTdGFydExvY2F0aW9uKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBzbG93UGF0aFN0YXJ0
TG9jYXRpb24pOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIG1fc2xvd09wZXJh
dGlvbik7IH0KKwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAKLSAgICBHUFJSZWcg
YmFzZUdQUjsKLSAgICBHUFJSZWcgdmFsdWVHUFI7CisgICAgR1BSUmVnIGJhc2VHUFIgeyBJbnZh
bGlkR1BSUmVnIH07CisgICAgR1BSUmVnIHZhbHVlR1BSIHsgSW52YWxpZEdQUlJlZyB9OwogICAg
IHVuaW9uIHsKICAgICAgICAgR1BSUmVnIHRoaXNHUFI7CiAgICAgICAgIEdQUlJlZyBwcm90b3R5
cGVHUFI7CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUjsKICAgICAgICAgR1BSUmVnIGJyYW5k
R1BSOwogICAgIH0gcmVnczsKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQUiB7IEludmFsaWRHUFJS
ZWcgfTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUjsKICAg
ICAvLyBGSVhNRTogWzMyLWJpdHNdIENoZWNrIGlmIFN0cnVjdHVyZVN0dWJJbmZvOjpiYXNlVGFn
R1BSIGlzIHVzZWQgc29tZXdoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCmluZGV4IDE4NzU0M2QxNmVkMDY4MDhiOWExNjE3YzU3ZmVlYWRkNzIwY2E3NjQu
Ljk2YmZjNWEzMDM5YTM2MGZkMTBhYTQwOTRmNTcwNjBhN2NkYTlhOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTE1NCw2ICsxNTQsMTEgQEAgY2xh
c3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgbV9jYWxscy5h
cHBlbmQoQ2FsbExpbmtSZWNvcmQoZnVuY3Rpb25DYWxsLCBmdW5jdGlvbikpOwogICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25DYWxsOwogICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGNhbGwoYWRkcmVzcywgT3Bl
cmF0aW9uUHRyVGFnKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgK
aW5kZXggMjVhMTIxOWZkZDQzYmRmZTNjMDdiOGEyNzRkZjhlMGU1Nzg4ZDJiNS4uNjNlOTUyZWYx
ZTI0ZjhlY2ZmMjFjMTEzY2FmYTZkOTA2NDFmODQwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMjY0LDYgKzI2NCw2NSBAQCBp
bmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAg
ICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFt
ZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitjbGFzcyBDYWxsUmVzdWx0QW5k
QXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBDYWxsU2xvd1BhdGhH
ZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+IHsKK3B1YmxpYzoKKyAgICBDYWxsUmVzdWx0
QW5kQXJndW1lbnRzU2xvd1BhdGhJQ0dlbmVyYXRvcigKKyAgICAgICAgSnVtcFR5cGUgZnJvbSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlvbkFkZHJl
c3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNw
aWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwgUmVzdWx0VHlw
ZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgICAgIDogQ2FsbFNsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlLCBSZXN1bHRUeXBlPihmcm9tLCBqaXQsIHNwaWxsTW9kZSwgcmVx
dWlyZW1lbnQsIHJlc3VsdCkKKyAgICAgICAgLCBtX3N0dWJJbmZvR1BSKHN0dWJJbmZvR1BSKQor
ICAgICAgICAsIG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzKHNsb3dQYXRoT3BlcmF0aW9uQWRk
cmVzcykKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAsIG1fYXJndW1l
bnRzKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pCisgICAgICAgICwgbV9z
dHViSW5mbyhzdHViSW5mbykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRl
PHNpemVfdC4uLiBBcmd1bWVudHNJbmRleD4KKyAgICB2b2lkIHVucGFja0FuZEdlbmVyYXRlKFNw
ZWN1bGF0aXZlSklUKiBqaXQsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKTsKKyAgICAgICAgdGhpcy0+c2V0VXAoaml0KTsKKyAgICAgICAgbV9zdHViSW5mby0+bV9z
bG93T3BlcmF0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAgaml0LT5tX2ppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mb0dQUik7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPFJlc3VsdFR5cGUsIE5vUmVzdWx0VGFnPjo6
dmFsdWUpCisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Ns
b3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1l
bnRzKS4uLik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxG
dW5jdGlvblR5cGU+KG1fc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBleHRyYWN0UmVzdWx0KHRo
aXMtPm1fcmVzdWx0KSwgc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7
CisgICAgICAgIHRoaXMtPnRlYXJEb3duKGppdCk7CisgICAgfQorCisgICAgdm9pZCBnZW5lcmF0
ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIGZpbmFsCisgICAgeworICAgICAgICB1bnBh
Y2tBbmRHZW5lcmF0ZShqaXQsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3Np
emU8c3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+Pjo6dmFsdWU+KCkpOworICAgIH0KKworICAgIEdQ
UlJlZyBtX3N0dWJJbmZvR1BSOworICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBtX3Nsb3dQYXRo
T3BlcmF0aW9uQWRkcmVzczsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBzdGQ6
OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVudHM7CisgICAgU3RydWN0dXJlU3R1YkluZm8q
IG1fc3R1YkluZm87Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUg
RnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2Fs
bCgKKyAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFNw
aWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVx
dWlyZW1lbnQsCisgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMp
Cit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRo
SUNHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRz
Li4uPj4oZnJvbSwgaml0LCBzdHViSW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0aW9u
QWRkcmVzcywgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1l
bnRzLi4uKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0
aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5s
aW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisg
ICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBHUFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93
UGF0aE9wZXJhdGlvbkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBSZXN1bHRU
eXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gc2xvd1Bh
dGhJQ0NhbGwoZnJvbSwgaml0LCBzdHViSW5mbywgc3R1YkluZm9HUFIsIHNsb3dQYXRoT3BlcmF0
aW9uQWRkcmVzcywgZnVuY3Rpb24sIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05lZWRlZCwgcmVzdWx0LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEQoREZHX0pJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2U4NzM1M2My
ZjJlMjE1MmQ5MWVkYTE2ZjUxMjI1YzNlYjZmZjE0Yy4uNDk4M2EyMmFhZmI1YzAyMjZlMjU1MWIw
ODQzZjgzMzAxNzI1ZDhmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEwNDYsMjQgKzEwNDYsMzYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQog
CiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxV
c2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAor
ICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5n
cHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKIAotICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRv
U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NU
eXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3Jt
YXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJl
ZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9H
UFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMDcxLDcgKzEwODMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUp
CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgYWNj
ZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRh
Rm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMTA4NywyNyArMTA5OSwzOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJ
ZEZsdXNoKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHsKICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKLQog
ICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAg
ICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZv
LmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIo
KTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlLmdwcigpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKIAogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBK
SVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1w
KCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKLQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQorICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgYmFzZS51c2UoKTsK
QEAgLTExMTYsNyArMTE0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlk
Rmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwog
Ci0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywg
cmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBEb250U3Bp
bGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEzMSwxNCArMTE1NSwxOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUsIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVC
eUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOwpAQCAtMTE0OCwy
MCArMTE3NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2Rl
KiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJl
Z2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAg
ICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAot
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2Vu
ZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAg
LTExOTAsMjIgKzEyMzQsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChO
b2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVz
ZSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotCiAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG5vZGUtPmNoaWxkMigp
KTsKLQogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGtl
eSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBKU1ZhbHVlUmVncyBrZXlSZWdz
ID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKIAor
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkpOworCiAgICAgICAgIGlmIChu
ZWVkc1R5cGVDaGVjayhub2RlLT5jaGlsZDIoKSwgU3BlY0NlbGwpKQogICAgICAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoa2V5UmVncykpOwogCkBAIC0xMjE0
LDIwICsxMjYzLDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChO
b2RlKiBub2RlKQogICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwogCiAgICAgICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5
UmVncywgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVn
cywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpE
RkdKSVQpKQorICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkp
OwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAg
ICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9k
ZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21h
TW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9qaXQuYWRkRGVsQnlWYWwoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CkBAIC0xMjU2LDkgKzEzMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBiYXNlLCBQYXlsb2FkV29yZCk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlk
R1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewor
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0
dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCkBAIC0xMjY4LDE0
ICsxMzM4LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9k
ZSkKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRH
ZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3Ry
ZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2Vk
UmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQu
Y29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBl
OjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
R1BSKSwgcmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KG1faml0KTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIGdl
bi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCi0gICAgICAg
IE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAg
ICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5m
bygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNl
czsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1p
emUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6
Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhj
ZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMTI4
OCw3ICsxMzY5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUq
IG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBK
U1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGtleSk7CisgICAgc3RkOjpv
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1Yklu
Zm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CkBAIC0xMjk2LDE4ICsx
MzgzLDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUp
CiAgICAgYmFzZS51c2UoKTsKICAgICBrZXkudXNlKCk7CiAKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IHNsb3dDYXNlczsKKwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9y
aWdpbi5zZW1hbnRpYzsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdz
LCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJ
VCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncywgc3R1YkluZm9H
UFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAot
ICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6
ZSwKLSAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAotICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
Z2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBrZXlSZWdzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
b3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLAorICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2Vw
dGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBF
eGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0
ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MpOworICAgIH0KIAog
ICAgIG1faml0LmFkZEluQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzYwMyw5ICszNzAyLDE5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBub2RlLT5vcCgpID09IEdldFByaXZhdGVOYW1lKTsKICAgICBERkdfQVNTRVJUKG1faml0
LmdyYXBoKCksIG5vZGUsIG1fZ3JhcGguY2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN5bWJv
bFVzZSk7Ci0gICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwogCisg
ICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIEpTVmFsdWVSZWdz
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0g
c3R1YkluZm8tPmdwcigpOworICAgIH0KKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEp
KTsKKwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5l
cmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFt
LT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVn
aXN0ZXJzKCk7CkBAIC0zNjE2LDE0ICszNzI1LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpT
CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsK
IAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNl
ZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZSwgcHJvcGVydHksIHJlc3VsdC5yZWdzKCkpOworICAg
ICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAg
IGJhc2UsIHByb3BlcnR5LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLnN0dWJJ
bmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KG1faml0KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQor
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAgICBhdXRvIG1ha2VTbG93UGF0
aENhbGwgPSBbJl0oYXV0byBiYXNlKSB7CisgICAgYXV0byBtYWtlU2xvd1BhdGhJQ0NhbGwgPSBb
Jl0oYXV0byBiYXNlKSB7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwK
KyAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5w
YXlsb2FkR1BSKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplLAogICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwKQEAgLTM2MzEsOCArMzc0Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcml2YXRlTmFtZUJ5VmFsKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTCiAg
ICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGgg
PSBiYXNlSXNLbm93bkNlbGwKLSAgICAgICAgPyBtYWtlU2xvd1BhdGhDYWxsKENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKLSAgICAgICAgOiBtYWtlU2xvd1BhdGhD
YWxsKGJhc2UpOworICAgICAgICA/IG1ha2VTbG93UGF0aElDQ2FsbChDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlLnBheWxvYWRHUFIoKSkpCisgICAgICAgIDogbWFrZVNsb3dQYXRoSUNDYWxs
KGJhc2UpOwogCiAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzY0NCwyOCAr
Mzc1OSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlk
KE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNoIChtX2dyYXBoLmNoaWxkKG5vZGUsIDApLnVzZUtp
bmQoKSkgewogICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAg
ICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIo
KSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0g
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVz
dWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgp
LCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1w
KCksIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAg
ICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAot
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3Bp
bGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNzY0LDI5ICszODkx
LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2RlKiBu
b2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKE5v
ZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5q
c1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLQotICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKIAogICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5l
cmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAgICAgLy8gdG8gY2hlY2sgaXQgaGVyZS4KICAgICBh
dXRvIHB1dEtpbmQgPSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1
dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVG
aWVsZFNldDsKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQ
UiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIHB1
dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgp
KTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQ
UlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYnJhbmRWYWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZv
LT5ncHIoKTsKKyAgICB9CiAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVS
ZWdzKCk7Ci0KICAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwogCiAgICAg
c3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBicmFuZEdQUik7CkBAIC0zODAwLDE2ICsz
OTM4LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChO
b2RlKiBub2RlKQogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2Vs
bChiYXNlUmVncykpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgYmFzZVJlZ3Ms
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6Q2hlY2tQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIGJhc2VSZWdzLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBn
ZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgobV9qaXQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5v
UmVzdWx0LAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVn
cywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQs
CisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICB9CiAKICAgICBtX2ppdC5h
ZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzgyMCw5ICszOTY2LDE1IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSk7CisgICAg
c3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogCisgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
c3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICBHUFJSZWcgYnJhbmRHUFIgPSBicmFuZFZhbHVlLmdwcigpOwog
CkBAIC0zODM0LDE2ICszOTg2LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQ
cml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpTZXRQ
cml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIHVzZWRSZWdpc3RlcnMsCisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3Bl
cnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAg
ICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsIAotICAgICAgICBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVC
cmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTYxLDIyICs0MTIxLDI4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIs
IEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dDYXNlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEpTVmFsdWVSZWdzIHByb3RvdHlw
ZVJlZ3MsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0
Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UpCiB7
CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9qaXQuYWRkQ2FsbFNpdGUobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCi0gICAgICAgIHZhbHVlUmVn
cy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BSLCBz
Y3JhdGNoMkdQUiwKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJl
c3VsdEdQUiwKKyAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVncy5w
YXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwKICAgICAg
ICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5pc1R5cGUoU3BlY09iamVjdCB8IH5T
cGVjQ2VsbCkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKLSAgICAKICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dDYXNlKTsKLSAgICAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZh
bHVlUmVncywKLSAgICAgICAgcHJvdG90eXBlUmVncyk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1
YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICB9CiAgICAgCiAgICAgbV9q
aXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg3LDYgKzQxNTMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlCiAgICAg
ICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAKQEAg
LTM5OTQsMTMgKzQxNjEsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgCisgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAg
ICB9CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgICAgICBHUFJS
ZWcgcHJvdG90eXBlR1BSID0gcHJvdG90eXBlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogICAg
ICAgICAKLSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc2NyYXRj
aEdQUiwgc2NyYXRjaDJHUFIpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5v
ZGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVz
dWx0R1BSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpOwogICAgICAgICAK
ICAgICAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNDAxMCwxMiArNDE4MiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5zdGFuY2VPZihOb2RlKiBub2RlKQogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgIERGR19B
U1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwogICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5m
bzsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
SlNWYWx1ZU9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAKICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogICAgIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJ
bmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgIH0KICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwogICAgIEpTVmFsdWVSZWdzIHByb3RvdHlwZVJlZ3MgPSBwcm90b3R5cGUuanNWYWx1ZVJlZ3Mo
KTsKICAgICAKQEAgLTQwMzEsNyArNDIwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d0Nhc2UgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwocHJvdG90eXBlUmVncyk7CiAgICAgCi0gICAg
Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3Ms
IHJlc3VsdEdQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOworICAgIGNv
bXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCBy
ZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2Fz
ZSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEzMjc2LDQ2ICsxMzQ1NCw2NCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9JbmRleFN0cmluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZEZsdXNoKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpv
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAor
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2Uo
dGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgp
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVj
dCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAoKSwgRG9udFNwaWxsKTsK
IAogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBz
dHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5m
b0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVkUHV0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQ
Uiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUt
PmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAK
ICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5SWREaXJlY3QoTm9kZSogbm9kZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1
YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVn
cygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hl
ZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0
Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6RGlyZWN0LCBub2Rl
LT5lY21hTW9kZSgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDk0MiwxOCArMTUxMzgsMjAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVByb2ZpbGVUeXBlKE5vZGUqIG5vZGUpCiAgICAgbm9SZXN1bHQo
bm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJS
ZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1
dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUg
ZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlKQogewogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlz
LT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKICAg
ICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdl
IGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJh
c2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQodmFsdWVSZWdzLCBmYWxz
ZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNl
cHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgp
KTsKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwKICAgICAgICAgc2NyYXRj
aEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9q
aXQpOwpAQCAtMTQ5NjMsOSArMTUxNjEsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
UHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBO
b1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLAotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRz
KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xv
d1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
dmFsdWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZh
bHVlUmVncywKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBp
ZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlJZChnZW4s
IHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQ
YXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggZjhiMjk5OGQ0ZDE3YmVjZTQzNmQxOGY5OTE3NGY2ZWJjYzg5ODQ4My4uMjliYTI5YWU0
NzY2ZWFlYmM3ZmVjNzhkZjFhYTRkN2Q1NDY1YzZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzE5LDE2ICs3MTksMTYgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogCiAgICAgdm9pZCBjb21waWxlQ2hlY2tEZXRhY2hlZChOb2RlKik7
CiAKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2
b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtp
bmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBp
bGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lk
IGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUp
OworICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01v
ZGUgPSBOZWVkVG9TcGlsbCk7CiAgICAgdm9pZCBjYWNoZWRHZXRCeVZhbChDb2RlT3JpZ2luLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCk7CiAKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBj
YWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0
aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRD
b21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0
KCkpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBB
Y2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBM
aXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRU
YWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NU
eXBlKTsKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQ
Uk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJS
ZWcgcmVzdWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGls
ZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsK
KyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5v
bmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNj
ZXNzVHlwZSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNU
YWdHUFJPck5vbmUsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwg
R1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCA9IEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21waWxlRGVsZXRl
QnlJZChOb2RlKik7CkBAIC03NTEsNyArNzUxLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewog
ICAgIHZvaWQgZ2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGlu
dmVydCA9IGZhbHNlKTsKICAgICBib29sIGdlbmVyaWNKU1ZhbHVlU3RyaWN0RXEoTm9kZSosIGJv
b2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVHUFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQ
UiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQ
UiwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAg
ICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFsdWVSZWdzIHZhbHVl
R1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRHUFQsIEdQUlJlZyBz
dHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNv
bXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9t
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKik7CkBA
IC05NDksNiArOTQ5LDI2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxsT3BlcmF0aW9uKENDYWxsSGVscGVy
czo6QWRkcmVzcyBhZGRyZXNzLCBSZXN1bHRSZWdUeXBlIHJlc3VsdCwgQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0
aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0
KSwgcmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8CisgICAgICAgICFGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAorICAgIHZvaWQ+CisgICAgY2Fs
bE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0
aW9uVHlwZT4oYWRkcmVzcywgYXJncy4uLik7CisgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CisgICAg
fQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiAgICAgewogICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBh
cyBhIHdlYWstcG9pbnRlci4KQEAgLTk4OCw2ICsxMDA4LDEzIEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICAgICAgcmV0dXJuIG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgIH0K
IAorICAgIHZvaWQgYXBwZW5kQ2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1p
dFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAg
ICBtX2ppdC5hcHBlbmRDYWxsKGFkZHJlc3MpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGFwcGVuZE9wZXJhdGlvbkNhbGwoY29uc3QgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKQEAg
LTEwMTAsNiArMTAzNywyOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVy
biBjYWxsOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGFwcGVu
ZENhbGwoYWRkcmVzcyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7Cisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRkcmVz
cyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0MSwgR1BSUmVnIHJlc3VsdDIpCisgICAgeworICAgICAg
ICBhcHBlbmRDYWxsKGFkZHJlc3MpOworICAgICAgICBtX2ppdC5zZXR1cFJlc3VsdHMocmVzdWx0
MSwgcmVzdWx0Mik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxs
SGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzKQorICAgIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFkZHJlc3Ms
IHJlc3VsdFJlZ3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChh
ZGRyZXNzLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7Cisj
ZW5kaWYKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0
KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEdQUlJlZyByZXN1
bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChm
dW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxN2I0OGFjY2Q1ZWU2YzcwYmUwNjgzZjQxYzEzNWY2MmQ4
YmY4NTAwLi42ODI4ZTRlMDIxMzAzN2MzNjQ4N2QxOTgxZjI0MDQ3NjlhNDBlNWFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTE2OCwxNSArMTY4LDE2IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVl
KEVkZ2UgZWRnZSwgR1BSUmVnJiB0YWdHUFIsIEdQUlJlZyYgcGF5bG9hZEdQUiwKICAgICB9CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4s
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVn
aXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4s
IGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3Vs
dC5wYXlsb2FkR1BSKCksIGlkZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsK
KyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BS
KCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBheWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIGlk
ZW50aWZpZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRU
YWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVn
IHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5mb0dQ
UiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBl
IHR5cGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJbmZvR1BSKTsKICAgICAvLyBUaGlzIGlz
IGEgaGFja3kgZml4IGZvciB3aGVuIHRoZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBh
bGlhcyB0aGUgYmFzZSBwYXlsb2FkIHdpdGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBw
ZW5zCiAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgR2V0QnlJZEZsdXNoL0dldEJ5SWREaXJlY3RGbHVz
aCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVseSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBz
dG9yeSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8KICAgICAvLyB0cmlwIG92
ZXIgb25lIG1vdmUgaW5zdHJ1Y3Rpb24uCkBAIC0yMDAsOCArMjAxLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
ID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhp
dElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKGJh
c2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVu
dGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9h
ZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEludmFs
aWRHUFJSZWcsIHR5cGUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
ICAgICAKQEAgLTIyOCwxNSArMjI5LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcygK
LSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJS
ZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRH
UFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNl
UGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQUiwgR1BS
UmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQUlJlZyBzdHViSW5m
b0dQUiwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBp
bGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CisgICAgVU5VU0VEX1BBUkFNKHN0dWJJ
bmZvR1BSKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBiYXNl
UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSKSk7Cisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JO
b25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2Fk
R1BSKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9q
aXQpOwogICAgIApAQCAtMjM0MSw4ICsyMzQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAKICAgICAgICAgICAgIEpJVEdl
dEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJz
LAotICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MpOwor
ICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAg
ICAgICAgICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlk
R1BSUmVnKTsKIAogICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMzQwOSw3ICszNDExLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
SW52YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFn
R1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAg
ICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW52
YWxpZEdQUlJlZywgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdGhpc0dQUiwgcmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDI5
LDcgKzM0MzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2Uu
anNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbCh0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIsIHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBub3RDZWxsTGlzdCk7CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgdGhpc1RhZ0dQUiwg
dGhpc1BheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgSW52YWxpZEdQ
UlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNzcyZDQyNTBhYTczMGIyYzY2YzU2ODI3
OWZkYzMzNThhODEyZGU4MS4uNjIzNTVjOTQ4NzkxM2FhOTY0YjVhYmYzNTAxMGMyMjQ1ZTNjODE1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC0xNDcsMTIgKzE0NywxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxK
U1ZhbHVlKEVkZ2UgZWRnZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHJlc3VsdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5
cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2lu
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7
Ci0gICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRl
bnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOworICAgIGNhY2hlZEdldEJ5SWQo
b3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVy
LCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BS
UmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNj
ZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcg
c3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vz
c1R5cGUgdHlwZSkKIHsKICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3Jk
Q2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVP
cmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CkBAIC0xNjAsMjYgKzE2MCwzNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJh
c2VHUFIsIEdQUlJlZwogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJz
IHRvIHRoZSBzdGFjaywgd2UgZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNl
ZFJlZ2lzdGVycy5zZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2Up
OwogICAgIH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVy
LAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwg
dHlwZSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3R1YkluZm9HUFIsIHR5
cGUpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhU
YXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJ
ZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5n
R2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rp
b24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfQog
ICAgIAogICAgIG1faml0LmFkZEdldEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0
aFRhcmdldCkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVn
IHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCiB7CiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwpAQCAtMTg3LDIwICsxOTcsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAg
ICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5z
ZXQodGhpc0dQUiwgZmFsc2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHJlc3VsdEdQUiwgZmFs
c2UpOworICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIAogICAgIEpJVEdldEJ5SWRX
aXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNH
UFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFs
dWVSZWdzKHJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlz
R1BSKSwgc3R1YkluZm9HUFIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAg
ICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNo
ZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRX
aXRoVGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkV2l0aFRoaXMoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOwpAQCAtMjY4MSwxNiArMjcwMSwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsK
LSAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEp
KTsKLQorICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIHByb3BlcnR5KTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7
CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKKyAgICAgICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKwogICAgICAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVF
eGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6
ZSgpKTsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2Vk
UmVnaXN0ZXJzKCk7CkBAIC0yNzAwLDggKzI3MjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwoYmFzZUdQUikpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIp
LCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6
R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwg
c3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAg
ICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0yNzEyLDExICsy
NzM5LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAg
ICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7Ci0KLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
aml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpAQCAtMzk4OCw5ICs0MDIzLDE2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgR2V0
QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbFVzZSAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAg
ICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1
YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJ
bmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUu
Z3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKQEAgLTM5OTgsMTQgKzQwNDAsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7Cisg
ICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICAgICAgc3R1
YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVl
R1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC00MDE3LDcgKzQwNjYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub3RDZWxsTGlz
dC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKSk7CiAg
ICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFs
dWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVl
R1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3Qp
OworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWJkNjk0Zjhk
YzY0NTBkZmVjNGNlMmQ5MzFiZGU1Yjg4NmE0YTUzMi4uNGY5NzcwYWQ0ZmZhY2IyOTMxZGVhMjIy
NmQ4MzIzMjcxNjU3NmRlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMzk4OCw2ICszOTg4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIApAQCAtNDAw
OSwxMCArNDAxMCwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVn
IGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2Ny
YXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRv
ciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAorICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwg
c3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdENl
bGw7CiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAtNDAyNiwxMyArNDAyOCwy
NSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgIGlmIChub3RD
ZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub3RDZWxsLmxpbmsoJmppdCk7
Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1w
KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLCByZXN1bHRHUFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BS
KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQ
UiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRv
ci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENh
bGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQxMjAsNiArNDEzNCw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxN
YXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWco
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0
Y2hwb2ludCk7CiAKQEAgLTQxNDAsMTAgKzQxNTUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
IAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgYnJhbmRHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBh
cmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICBhdXRvIGdl
bmVyYXRvciA9IEJveDxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+OjpjcmVhdGUoCi0g
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNh
bGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCi0gICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQ
UikpOworICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCisgICAgICAg
ICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIG5vdENlbGw7CiAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwp
CkBAIC00MTY5LDEzICs0MTg1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAg
ICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICBub3RDZWxs
LmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5s
aW5rKCZqaXQpOworICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1w
KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQ
YXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRl
UHJpdmF0ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAotICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAg
ICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGFwcHJvcHJpYXRlUHJpdmF0
ZUFjY2Vzc0Z1bmN0aW9uKGFjY2Vzc1R5cGUpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQcml2
YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1Rv
KGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0
aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTQ1MjYsNiArNDU1NCw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENl
bGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJ
VCkgPyAxIDogMDsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIFB1dEJ5SWRGbHVz
aCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9sYXRpbGUgcmVnaXN0ZXJzLgogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyODQ4CkBA
IC00NTQ4LDEwICs0NTc3LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgLy8gSlMgc2V0dGVyIGNhbGwgSUNzIGdlbmVyYXRlZCBieSB0aGUgUHV0QnlJZCBJQyB3aWxs
IG5lZWQgdGhpcy4KICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhp
dENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRM
SklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOworCiAgICAgICAgICAg
ICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
SklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlm
aWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJl
Z2lzdGVyLCBlY21hTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwgc3R1YkluZm9HUFIsIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0
ZXIsIGVjbWFNb2RlLAogICAgICAgICAgICAgICAgICAgICBwdXRLaW5kKTsKIAogICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwpAQCAtNDU2MywxMiArNDU5
NCwyNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xv
d1BhdGhGdW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1Bh
dGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJ
bmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbmVyYXRvci0+c2xvd1BhdGhGdW5jdGlvbigpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmll
ci5yYXdCaXRzKCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGdlbmVyYXRvci0+c2xvd1BhdGhG
dW5jdGlvbigpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0
cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xv
d1BhdGhDYWxsKTsKQEAgLTUyNDksNiArNTI5Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlcikpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJ
VCkgPyAxIDogMDsKIAogICAgICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKIApAQCAtNTI2OSwxMCArNTMxMywxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAg
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgICAg
ICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICAgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAg
ICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAotICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLAorICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0
R1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gcHJvcGVydHlJc1N0cmluZzsKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHByb3BlcnR5SXNJbnQz
MjsKQEAgLTUyOTAsMTMgKzUzMzUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAg
ICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwgcmVz
dWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5j
YWxsKCk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01ODQ2LDcgKzU5MDMsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RD
ZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcikp
OwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJ
VCkgPyAyIDogMTsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
ZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0
aW9ucyhwYXRjaHBvaW50KTsKQEAgLTU4NjYsOSArNTkyMywxMSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1zWzFd
LmdwcigpKTsKICAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5ncHIo
KTsKKyAgICAgICAgICAgICAgICBhdXRvIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDAp
OworICAgICAgICAgICAgICAgIGF1dG8gc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMSkgOiBJbnZhbGlkR1BSUmVnOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHJldHVybkdQUik7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHJldHVybkdQUiAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHNjcmF0Y2hHUFIpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwpA
QCAtNTg4NCw3ICs1OTQzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3Jp
cHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBwYXJh
bXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0u
Z3ByKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFy
YW1zWzJdLmdwcigpKTsKQEAgLTU4OTQsMTkgKzU5NTMsMjAgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlkR2VuZXJhdG9yPjo6
Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0
Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQ
UiksIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklURGVsQnlWYWxHZW5lcmF0
b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0
Y2goMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJl
Z3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAg
ICAgcGFyYW1zLmFkZExhdGVQYXRoKApAQCAtNTkxNSwxMiArNTk3NSwyNCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhC
ZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRp
b25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNs
b3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTIzMDEsNiArMTIz
NzMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNl
cHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC0xMjMxNSw2ICsxMjM4OCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFy
Z2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVy
czo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENy
ZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5n
cFNjcmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJu
R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFs
dWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAKQEAgLTEyMzI4LDQxICsxMjQwMiw2OCBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0g
WyZdIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5k
OjpOb3JtYWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0dWJJ
bmZvR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBiYXNlLCBzdWJzY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocmV0dXJuR1BSKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MocmV0dXJuR1BSKSwgc3R1YkluZm9HUFIpOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfSgpOwogCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQ
YXRoKGppdCk7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5k
OjpOb3JtYWwpCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9y
LT5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1w
KCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKIAogICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRl
UGF0aCgKICAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQ
YXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
bGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwg
c2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
aml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCByZXR1cm5HUFIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZv
KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdWJzY3JpcHQpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIs
IGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsIHN1
YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgcmV0dXJuR1BSLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25JbkJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmV0dXJuR1BSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlLCBzdWJzY3Jp
cHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5
VmFsT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFz
ZSwgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAo
KS5saW5rVG8oZG9uZSwgJmppdCk7CiAKQEAgLTEyNTgwLDcgKzEyNjgxLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHByb3Rv
dHlwZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gMjsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAzIDogMjsKICAgICAgICAgcGF0Y2hw
b2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlciB9
OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CiAgICAgICAgIApAQCAtMTI1OTYsNiArMTI2OTcsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVHUFIgPSBwYXJhbXNb
Ml0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHBhcmFtcy5n
cFNjcmF0Y2goMSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDIpIDogSW52
YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZG9uZUp1bXA7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUlzQ2VsbCkgewpA
QCAtMTI2MTcsMTAgKzEyNzE5LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+
anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVy
YXRvciA9IEJveDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwgc2NyYXRjaEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwgdmFsdWVHUFIsIHByb3RvdHlwZUdQUiwg
c3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BS
LCBwcm90b3R5cGVJc09iamVjdCk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0
ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC0xMjYzMSwxMiArMTI3MzUsMjQgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9u
LCByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHVi
SW5mbygpKSwgdmFsdWVHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBl
R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSks
IHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJl
c3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHZhbHVlR1BSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
ID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
dGltaXphdGlvbkZ1bmN0aW9uLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCB2YWx1ZUdQUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhk
b25lLCAmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1Bh
dGhDYWxsKTsKQEAgLTE0MDgwLDYgKzE0MTk2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1i
ZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRo
aXMgaXMgYSBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29t
ZSBwZXJmb3JtYW5jZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2Ji
ZXJzIHZvbGF0aWxlIHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJl
Y3RuZXNzLCB0aG91Z2gsIHNpbmNlIHRoZQpAQCAtMTQxMDgsMTAgKzE0MjI1LDEyIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRlIGluZGV4Lgog
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JV
bndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1z
LmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAgICAgICBhdXRvIGdl
bmVyYXRvciA9IEJveDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExK
SVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVS
ZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1swXS5ncHIoKSksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhw
YXJhbXNbMF0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgdHlwZSk7CiAKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTE0MTI0LDEyICsxNDI0MywyNCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9u
LCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBd
LmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRp
Zmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmll
ci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhC
ZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTE0MTU0LDggKzE0Mjg1LDggQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHRoaXNWYWx1
ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6
bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6
IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlv
bkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0
Y2hwb2ludCk7CkBAIC0xNDE3NywxMCArMTQzMDgsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNh
bGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDog
SW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJh
bXNbMF0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0u
Z3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdw
cigpKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0
ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25l
ID0gaml0LmxhYmVsKCk7CkBAIC0xNDE5MywxMiArMTQzMjYsMjQgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBh
cmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3By
KCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcGFyYW1zWzBd
LmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3By
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKaW5kZXggMmFk
ZDQ5NGM1MzJhYWVhOGVlM2QxMWNlMTIyNzgxMTg5MzU2YWQ0Zi4uYjRlNDc1OGU1OGZiMWU3OTI2
YzZhMDcxODM3MzE1ODk4N2M3NmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCB3b3JkU2l6ZSA9IDg7CiAKIFNs
b3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRleHQoCi0gICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJl
ZyByZXR1cm5SZWdpc3RlcikKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhl
bHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyLCBHUFJS
ZWcgaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpCiAgICAgOiBtX2ppdChqaXQpCiAgICAgLCBt
X251bUFyZ3MobnVtQXJncykKICAgICAsIG1fcmV0dXJuUmVnaXN0ZXIocmV0dXJuUmVnaXN0ZXIp
CkBAIC02Myw2ICs2Myw4IEBAIFNsb3dQYXRoQ2FsbENvbnRleHQ6OlNsb3dQYXRoQ2FsbENvbnRl
eHQoCiAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5tZXJnZShtX2FyZ3VtZW50UmVn
aXN0ZXJzKTsKICAgICBpZiAocmV0dXJuUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKICAgICAg
ICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworICAgIGlmIChpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChpbmRpcmVjdENhbGxU
YXJnZXRSZWdpc3Rlcik7CiAgICAgbV9jYWxsaW5nQ29udmVudGlvblJlZ2lzdGVycy5maWx0ZXIo
dXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIAogICAgIHVuc2lnbmVkIG51bWJlck9mQ2FsbGluZ0Nv
bnZlbnRpb25SZWdpc3RlcnMgPQpAQCAtMTE0LDcgKzExNiwxMiBAQCBTbG93UGF0aENhbGxDb250
ZXh0Ojp+U2xvd1BhdGhDYWxsQ29udGV4dCgpCiAKIFNsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2Fs
bFRhcmdldCkgY29uc3QKIHsKLSAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZl
U2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCk7CisgICAgcmV0
dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgY2FsbFRhcmdldCwgbV9hcmd1bWVu
dFJlZ2lzdGVycywgbV9vZmZzZXQsIDApOworfQorCitTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhD
YWxsQ29udGV4dDo6a2V5V2l0aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykg
Y29uc3QKK3sKKyAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBudWxs
cHRyLCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCBtX29mZnNldCwgYWRkcmVzcy5vZmZzZXQpOwogfQog
CiBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCkBAIC0xMzMsNiArMTQwLDIyIEBA
IFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitTbG93UGF0
aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MgY2FsbFRhcmdldCkKK3sKKyAgICBTbG93UGF0aENhbGxLZXkga2V5ID0ga2V5V2l0
aFRhcmdldChjYWxsVGFyZ2V0KTsKKyAgICBTbG93UGF0aENhbGwgcmVzdWx0ID0gU2xvd1BhdGhD
YWxsKG1faml0LmNhbGwoSklUVGh1bmtQdHJUYWcpLCBrZXkpOworCisgICAgbV9qaXQuYWRkTGlu
a1Rhc2soCisgICAgICAgIFtyZXN1bHQsICZ2bV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGh1bmsg
PQorICAgICAgICAgICAgICAgIHZtLmZ0bFRodW5rcy0+Z2V0U2xvd1BhdGhDYWxsVGh1bmsodm0s
IHJlc3VsdC5rZXkoKSk7CisKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhyZXN1bHQuY2Fs
bCgpLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odGh1bmsuY29kZSgpKSk7Cisg
ICAgICAgIH0pOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihTdGF0ZSYgc3RhdGUsIENvZGVPcmlnaW4gY29kZU9yaWdp
bikKIHsKICAgICBpZiAoY29kZU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5oCmluZGV4IDcwZDI4OGUwM2YxZDhkODFmMjc3ZjZiODIxN2FjOWYzZmE4
MGMxMmEuLmQ2ZjI4NTQ5YTMxYjMzNWRkNWI1NzU5YWNlMjEwZjQ4MmE4MzFkNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaApAQCAtNTQsMTUgKzU0LDE3
IEBAIGNsYXNzIFNsb3dQYXRoQ2FsbCB7CiAvLyBUaGlzIHdpbGwgYmUgYW4gUkFJSSB0aGluZ3kg
dGhhdCB3aWxsIHNldCB1cCB0aGUgbmVjZXNzYXJ5IHN0YWNrIHNpemVzIGFuZCBvZmZzZXRzIGFu
ZCBzdWNoLgogY2xhc3MgU2xvd1BhdGhDYWxsQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgU2xvd1Bh
dGhDYWxsQ29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1
bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIpOworICAgIFNsb3dQYXRoQ2Fs
bENvbnRleHQoUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5zaWdu
ZWQgbnVtQXJncywgR1BSUmVnIHJldHVyblJlZ2lzdGVyLCBHUFJSZWcgaW5kaXJlY3RDYWxsVGFy
Z2V0UmVnaXN0ZXIpOwogICAgIH5TbG93UGF0aENhbGxDb250ZXh0KCk7CiAKICAgICAvLyBOT1RF
OiBUaGUgY2FsbCB0aGF0IHRoaXMgcmV0dXJucyBpcyBhbHJlYWR5IGdvaW5nIHRvIGJlIGxpbmtl
ZCBieSB0aGUgSklUIHVzaW5nIGFkZExpbmtUYXNrKCksCiAgICAgLy8gc28gdGhlcmUgaXMgbm8g
bmVlZCBmb3IgeW91IHRvIGxpbmsgaXQgeW91cnNlbGYuCiAgICAgU2xvd1BhdGhDYWxsIG1ha2VD
YWxsKFZNJiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KTsKKyAgICBT
bG93UGF0aENhbGwgbWFrZUNhbGwoVk0mLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpOwogCiBwcml2
YXRlOgogICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRoVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4gY2FsbFRhcmdldCkgY29uc3Q7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdp
dGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKSBjb25zdDsKICAgICAKICAgICBSZWdpc3Rl
clNldCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwogICAgIFJlZ2lzdGVyU2V0IG1fY2FsbGluZ0NvbnZl
bnRpb25SZWdpc3RlcnM7CkBAIC04Miw3ICs4NCw3IEBAIFNsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0
aW9uKAogewogICAgIFNsb3dQYXRoQ2FsbCBjYWxsOwogICAgIHsKLSAgICAgICAgU2xvd1BhdGhD
YWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50
VHlwZXMpICsgMSwgcmVzdWx0R1BSKTsKKyAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250
ZXh0KHVzZWRSZWdpc3RlcnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVz
dWx0R1BSLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPHZvaWQo
QXJndW1lbnRUeXBlcy4uLik+KGFyZ3VtZW50cy4uLik7CiAgICAgICAgIGNhbGwgPSBjb250ZXh0
Lm1ha2VDYWxsKHZtLCBmdW5jdGlvbik7CiAgICAgfQpAQCAtMTE3LDYgKzExOSw0OCBAQCBTbG93
UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKICAgICAgICAgcmVzdWx0LCBhcmd1bWVudHMuLi4pOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNh
bGxPcGVyYXRpb24oCisgICAgVk0mIHZtLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRh
cmdldCwKKyAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1bHRH
UFIsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIFNsb3dQYXRoQ2FsbCBjYWxs
OworICAgIHsKKyAgICAgICAgU2xvd1BhdGhDYWxsQ29udGV4dCBjb250ZXh0KHVzZWRSZWdpc3Rl
cnMsIGppdCwgc2l6ZW9mLi4uKEFyZ3VtZW50VHlwZXMpICsgMSwgcmVzdWx0R1BSLCBHUFJJbmZv
Ojpub25BcmdHUFIwKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxs
PHZvaWQoQXJndW1lbnRUeXBlcy4uLik+KGZ1bmN0aW9uLCBhcmd1bWVudHMuLi4pOworICAgICAg
ICBjYWxsID0gY29udGV4dC5tYWtlQ2FsbCh2bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIGZ1bmN0aW9uLm9mZnNldCkpOworICAgIH0KKyAgICBpZiAoZXhjZXB0
aW9uVGFyZ2V0KQorICAgICAgICBleGNlcHRpb25UYXJnZXQtPmFwcGVuZChqaXQuZW1pdEV4Y2Vw
dGlvbkNoZWNrKHZtKSk7CisgICAgcmV0dXJuIGNhbGw7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBWTSYg
dm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qq
IGV4Y2VwdGlvblRhcmdldCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcg
cmVzdWx0R1BSLAorICAgIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIGlmIChj
YWxsU2l0ZUluZGV4KSB7CisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLAorICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOworICAgIH0KKyAgICByZXR1cm4gY2FsbE9wZXJhdGlv
bih2bSwgdXNlZFJlZ2lzdGVycywgaml0LCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0aW9uLCByZXN1
bHRHUFIsIGFyZ3VtZW50cy4uLik7Cit9CisKK0NhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZv
ckNvZGVPcmlnaW4oU3RhdGUmLCBDb2RlT3JpZ2luKTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFN0YXRlJiBz
dGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhj
ZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyByZXN1
bHQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBjYWxsT3BlcmF0
aW9uKAorICAgICAgICBzdGF0ZS52bSgpLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGNhbGxTaXRlSW5k
ZXhGb3JDb2RlT3JpZ2luKHN0YXRlLCBjb2RlT3JpZ2luKSwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5j
dGlvbiwKKyAgICAgICAgcmVzdWx0LCBhcmd1bWVudHMuLi4pOworfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNwcAppbmRleCAyZDMwNmM2MjAz
M2E4MzkwOGU2ZmNjNmFiOWU2ZTg0Y2ZlODFlY2FhLi5jNGU3ZTgyNjFmZDQ3MzZiMWQzMzcyYmVm
NTUxM2VmZTVhYTM5YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbEtleS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExT
bG93UGF0aENhbGxLZXkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIAogdm9pZCBTbG93UGF0aENhbGxLZXk6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIjx1c2VkUmVnaXN0ZXJzID0gIiwgbV91c2VkUmVn
aXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwgIiwgY2FsbFRhcmdldCA9ICIsIFJhd1Bv
aW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAiLCBhcmd1bWVudFJlZ2lz
dGVycyA9ICIsIG1fYXJndW1lbnRSZWdpc3RlcnMsICI+Iik7CisgICAgb3V0LnByaW50KCI8dXNl
ZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lzdGVycywgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQs
ICIsIGluZGlyZWN0T2Zmc2V0ID0gIiwgbV9pbmRpcmVjdE9mZnNldCwgIiwgY2FsbFRhcmdldCA9
ICIsIFJhd1BvaW50ZXIobV9jYWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCAiLCBhcmd1
bWVudFJlZ2lzdGVycyA9ICIsIG1fYXJndW1lbnRSZWdpc3RlcnMsICI+Iik7CiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU2xvd1BhdGhDYWxsS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbEtleS5oCmluZGV4IDA4NmFlMDBlZTU4NTUyYzdjZTgzZDcwNTIwZTc2MTM4NDJi
ZGQzM2QuLjBjZTYxZjI2YmE5NTBiOTNmYzNhOGVjMTliNTY3NDFhZTEwMDBkMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaApAQCAtNTEsMTEg
KzUxLDEyIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgCiAgICAgU2xvd1BhdGhDYWxs
S2V5KAogICAgICAgICBjb25zdCBSZWdpc3RlclNldCYgc2V0LCBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGNhbGxUYXJnZXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVy
cywKLSAgICAgICAgcHRyZGlmZl90IG9mZnNldCkKKyAgICAgICAgcHRyZGlmZl90IG9mZnNldCwg
aW50MzJfdCBpbmRpcmVjdE9mZnNldCkKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoc2V0KQog
ICAgICAgICAsIG1fY2FsbFRhcmdldChjYWxsVGFyZ2V0LnJldGFnZ2VkPE9wZXJhdGlvblB0clRh
Zz4oKSkKICAgICAgICAgLCBtX2FyZ3VtZW50UmVnaXN0ZXJzKGFyZ3VtZW50UmVnaXN0ZXJzKQog
ICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX2luZGlyZWN0T2Zmc2V0KGlu
ZGlyZWN0T2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MywxMCArNjQsMTEgQEAgY2xh
c3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGNh
bGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICBjb25zdCBSZWdp
c3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50UmVn
aXN0ZXJzOyB9CiAgICAgcHRyZGlmZl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0
OyB9CisgICAgaW50MzJfdCBpbmRpcmVjdE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaXJl
Y3RPZmZzZXQ7IH0KICAgICAKICAgICBTbG93UGF0aENhbGxLZXkgd2l0aENhbGxUYXJnZXQoRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIFNsb3dQYXRoQ2FsbEtleSh1c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50
UmVnaXN0ZXJzKCksIG9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleSh1
c2VkUmVnaXN0ZXJzKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50UmVnaXN0ZXJzKCksIG9mZnNldCgp
LCBpbmRpcmVjdE9mZnNldCgpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CkBAIC03NiwxMyArNzgsMTEgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsK
ICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRW1wdHlWYWx1ZVRhZykKICAgICAgICAgOiBtX3Vz
ZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkVtcHR5VmFsdWUpCi0gICAgICAgICwgbV9vZmZzZXQo
MCkKICAgICB7CiAgICAgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShEZWxldGVkVmFsdWVU
YWcpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0OjpEZWxldGVkVmFsdWUp
Ci0gICAgICAgICwgbV9vZmZzZXQoMCkKICAgICB7CiAgICAgfQogICAgIApAQCAtOTMsMTggKzkz
LDIwIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgewogICAgICAgICByZXR1cm4gbV91
c2VkUmVnaXN0ZXJzID09IG90aGVyLm1fdXNlZFJlZ2lzdGVycwogICAgICAgICAgICAgJiYgbV9j
YWxsVGFyZ2V0ID09IG90aGVyLm1fY2FsbFRhcmdldAotICAgICAgICAgICAgJiYgbV9vZmZzZXQg
PT0gb3RoZXIubV9vZmZzZXQ7CisgICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29m
ZnNldAorICAgICAgICAgICAgJiYgbV9pbmRpcmVjdE9mZnNldCA9PSBvdGhlci5tX2luZGlyZWN0
T2Zmc2V0OwogICAgIH0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX3VzZWRSZWdpc3RlcnMuaGFzaCgpICsgUHRySGFzaDx2b2lkKj46Omhhc2gobV9j
YWxsVGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgbV9vZmZzZXQ7CisgICAgICAgIHJldHVy
biBtX3VzZWRSZWdpc3RlcnMuaGFzaCgpICsgUHRySGFzaDx2b2lkKj46Omhhc2gobV9jYWxsVGFy
Z2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgbV9vZmZzZXQgKyBtX2luZGlyZWN0T2Zmc2V0Owog
ICAgIH0KIAogcHJpdmF0ZToKICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CiAgICAg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX2NhbGxUYXJnZXQ7CiAgICAgUmVnaXN0ZXJT
ZXQgbV9hcmd1bWVudFJlZ2lzdGVyczsKLSAgICBwdHJkaWZmX3QgbV9vZmZzZXQ7CisgICAgcHRy
ZGlmZl90IG1fb2Zmc2V0IHsgMCB9OworICAgIGludDMyX3QgbV9pbmRpcmVjdE9mZnNldCB7IDAg
fTsKIH07CiAKIHN0cnVjdCBTbG93UGF0aENhbGxLZXlIYXNoIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVGh1bmtzLmNwcAppbmRleCBkYmZlZDQ0ZDVhMTJhYWRkZDI3NmE5MzMxMzNjMGIz
NmM4NjYxM2FkLi5kOTIwMmEzZDQxOWU1Y2IyYTU5ZTMxZmJlODVhNGFkNTNiZTQ5NDE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNHZW5lcmF0
aW9uVGh1bmtHZW5lcmF0b3IoCiAgICAgc2F2ZUFsbFJlZ2lzdGVycyhqaXQsIGJ1ZmZlcik7CiAg
ICAgCiAgICAgLy8gVGVsbCBHQyBtYXJrIHBoYXNlIGhvdyBtdWNoIG9mIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpcyBhY3RpdmUgZHVyaW5nIGNhbGwuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMSk7CisgICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJl
cXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsK
IAogICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKApAQCAtMjAwLDEzICsyMDAsMjAgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRv
cihWTSYgdm0sIGNvbnN0IFMKICAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXplb2YoZG91Ymxl
KTsKICAgICB9CiAgICAgCi0gICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CisgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0Fm
dGVyQ2FsbChHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6
bm9uQXJnR1BSMSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICAKLSAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIGtleS5hcmd1
bWVudFJlZ2lzdGVycygpKTsKKyAgICBSZWdpc3RlclNldCBkb250Q2xvYmJlciA9IGtleS5hcmd1
bWVudFJlZ2lzdGVycygpOworICAgIGlmICgha2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgZG9u
dENsb2JiZXIuc2V0KEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIHJlZ2lzdGVyQ2xvYmJlckNo
ZWNrKGppdCwgV1RGTW92ZShkb250Q2xvYmJlcikpOwogCi0gICAgQXNzZW1ibHlIZWxwZXJzOjpD
YWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIEFzc2VtYmx5SGVscGVy
czo6Q2FsbCBjYWxsOworICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBjYWxsID0g
aml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5jYWxsKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBrZXkuaW5kaXJlY3RPZmZz
ZXQoKSksIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zm
c2V0KCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIGppdC5yZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1
cm5HUFIpOwpAQCAtMjMyLDcgKzIzOSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBTCiAgICAg
aml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMVGh1bmspOwotICAgIHBhdGNoQnVmZmVyLmxp
bmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisg
ICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwga2V5LmNhbGxUYXJnZXQoKSk7CiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiRlRMIHNsb3cg
cGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRvQ1N0cmluZyhrZXkpLmRhdGEoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCAzNTRm
OTU0N2I0YWJmMzI4OTZkMWNlYjRlYTIwMGZiYjRhNGRlY2NkLi4wODRiMzhlZjgxMjUyNzUzOTdl
NmEzOGI1YzYyNzY3NGMwZjM0ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQog
CisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCkBAIC02NTIsNyArNjUzLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFs
Q2FsbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAg
YXV0byBjYWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxKSVRDb21w
aWxhdGlvblB0clRhZz4oY2FsbCk7CiAgICAgICAgIGxpbmtCdWZmZXIuYWRkTWFpblRocmVhZEZp
bmFsaXphdGlvblRhc2soWz0sICZ2bV0gKCkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtG
b3Iodm0sICppbmZvKTsKLSAgICAgICAgICAgIGluZm8tPnNldFNsb3dTdHViKEdDQXdhcmVKSVRT
dHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICAgICAgICAgIGluZm8t
PnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZtLCB2aXJ0dWFsVGh1
bmspKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbExv
Y2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4odmlydHVhbFRo
dW5rLmNvZGUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCAxYTc2M2I3YTc1ZGJjYTE3ODFiMGIwZjA4OTJm
NGY0OTE5YzFkNWJjLi5iNmMzZmZiM2E5Y2M4N2QxZWU4NzcxNjM4MzZlYzA4ZWNiMDQwZGYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjplbnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KFZNJiB2
bSwgR1BSUmVnIHNoYWRvd1BhY2tldCwgR1BSUmVnCiAgICAgc3RvcmVQdHIoc2NyYXRjaDIsIEFk
ZHJlc3Moc2NyYXRjaDFOb25BcmdHUFIpKTsKIH0KIAotdm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRK
SVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUs
IFdURjo6RnVuY3Rpb248dm9pZChDQ2FsbEhlbHBlcnMmKT4gZW1pdENvZGUsIGNvbnN0IGNoYXIq
IGRlc2NyaXB0aW9uKQordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUsIFNjb3BlZExhbWJkYTx2b2lk
KENDYWxsSGVscGVycyYpPiBlbWl0Q29kZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCiB7CiAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKICAgICBlbWl0Q29kZShqaXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjhiMTIxM2Y2ZDI0YzcwYWZiNTAzMzIwZWFh
NzJkODllN2Q4NmJlOS4uZDgxMTg0N2JhZjBiZWYzYTdlMTM5NzQxMzdlZjNiZTg0MTZkMzIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJk
YS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjA3LDcgKzIwOCw3IEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogCiAgICAgLy8gZXh0cmFHUFJBcmdz
IGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBpbiByZWdpc3Rl
ciBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KICAgICAvLyBleHRyYVBva2UgaXMgdXNlZCB0byB0
cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFjay4KLSAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewogICAgICAgICBBcmdD
b2xsZWN0aW9uKCkKICAgICAgICAgewpAQCAtMjE5LDggKzIyMCw4IEBAIGNsYXNzIENDYWxsSGVs
cGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NEZXN0aW5h
dGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVk
IGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29s
bGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVu
c2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUs
IHVuc2lnbmVkIGYsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGg+CisgICAgICAgIEFyZ0NvbGxlY3Rp
b24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnLCBoPiYgb3RoZXIpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAg
ICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwpAQCAtMjMwLDY1ICsy
MzEsNzQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOwog
ICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51
bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJl
ZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyAr
IDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRo
aXMpOwogCiAgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFy
Z3VtZW50OwogICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2Vz
XSA9IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0
aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQs
IEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNl
cyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgq
dGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAg
ICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsKICAg
ICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0aW5h
dGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsg
MSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVz
dGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAg
ICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJl
c3VsdC5jcm9zc1NvdXJjZXNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAg
ICAgcmVzdWx0LmNyb3NzRGVzdGluYXRpb25zW251bUNyb3NzU291cmNlc10gPSBkZXN0aW5hdGlv
bjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4g
cHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BS
UmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlz
KTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyAr
IDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAg
ICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAg
ICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9u
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQ
UkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyAr
IDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzICsgMSwgZXh0cmFQb2tlPiBwdXNoTm9uQXJnKEdQUlJlZyBhcmd1bWVu
dCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRo
aXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
ICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisKKyAgICAg
ICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CisgICAg
ICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRp
b247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRy
YVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJnKCkKKyAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4
dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4o
KnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEs
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAg
fQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYWRk
U3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOwor
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDE+IGFkZFBva2UoKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAx
PigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCkBA
IC0zMzEsMTIgKzM0MSwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlI
ZWxwZXJzIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5M
SU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3VycmVudEdQUkFyZ3Vt
ZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlT
X0lOTElORSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJB
cmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAgLy8gQ2xhbmcgY2xhaW1zIHRoYXQgaXQgY2Fu
bm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVnL0dQUlJlZzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBkaXJlY3RseSB0byBzdGQ6Om1heC4uLiBzZWVt
cyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVy
cyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7CiAKKyAgICAgICAgVU5VU0VEX1BBUkFNKG5vbkFyZ0dQUnMpOworCiAgICAgICAg
IGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CiAgICAgICAgIGN1cnJlbnRGUFJB
cmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigidHlwZS1saW1pdHMiKQpAQCAtMzUwLDE1ICszNjIsMTUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5
cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJB
cmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3Vt
ZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1
cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7
Ci0gICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJl
bnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1
bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAg
ICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBi
b29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1
cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3Rh
Y2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKLSAgICAg
ICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFy
Z3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9r
ZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHJl
dHVybiAhKHBva2VPZmZzZXQgJiAxKTsKICAgICB9CiAKQEAgLTM3Niw4ICszODgsOCBAQCBjbGFz
cyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNpZiBVU0UoSlNWQUxV
RTY0KQogCiAgICAgLy8gQXZvaWQgTVNWQyBvcHRpbWl6YXRpb24gdGltZSBleHBsb3Npb24gYXNz
b2NpYXRlZCB3aXRoIF9fZm9yY2VpbmxpbmUgaW4gcmVjdXJzaXZlIHRlbXBsYXRlcy4KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIEFMV0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0
ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBu
b25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJn
dW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJl
Z1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTM5MiwzMSArNDA0LDMxIEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0Fy
ZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBS
UmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3Vs
ZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBtYXJzaGFs
bEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdz
Li4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBH
UFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJn
cy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAg
ICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3Ms
IGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDI0LDggKzQzNiw4IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2Vsc2UgLy8gVVNFKEpTVkFM
VUU2NCkKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJS
RU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFz
c2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAKQEAgLTQ2OSwyNSArNDgxLDI1IEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJz
KSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7CisgICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cy5hZGRHUFJFeHRyYUFyZygpLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgLy8gT3Ro
ZXJ3aXNlIHBhc3MgRlAgYXJndW1lbnQgb24gc3RhY2suCi0gICAgICAgIGlmIChzdGFja0FsaWdu
ZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2Up
OworICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpKSB7CisgICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAg
IHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0
YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0
PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJS
ZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdp
c3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CkBAIC00
OTcsMzQgKzUwOSwzNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlwZW5h
bWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
QXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1
bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291
cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnRB
cmdDb3VudCArIDEgPT0gbnVtQXJnUmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
ICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAx
LCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
ICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFk
ZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhY2tB
bGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UpKSB7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwor
ICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgewor
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwor
ICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAx
KTsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwotICAgICAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAyKTsKKyAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDIpOwogICAgICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRk
R1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAg
ICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBF
bmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykK
ICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9
IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZC5ncHIoKSk7CkBAIC01NDQsOSArNTU2LDkg
QEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAg
ICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBw
YXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIGFyZ3MuLi4pOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3Mp
CiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQg
PSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZy50YWdHUFIoKSk7CkBAIC01NjksMTEgKzU4MSwx
MSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICNlbmRp
ZiAvLyBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJs
ZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUK
ICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4g
Ly8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93biBpbXBs
ZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IC8vIFJpZ2h0IG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50IGltbWVk
aWF0ZSBhcmd1bWVudHMgc2luY2Ugd2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25zIHdpdGggbm9uLXJl
Z2lzdGVyIHZhbHVlcy4KICAgICAgICAgLy8gSWYgd2UgZXZlciBuZWVkZWQgdG8gc3VwcG9ydCBp
bW1lZGlhdGUgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIHdlIHdvdWxkIG5lZWQgdG8gZHVwbGlj
YXRlIHRoaXMgbG9naWMgZm9yIGJvdGggdHlwZXMsIHdoaWNoIHNvdW5kcwpAQCAtNTkxLDQ2ICs2
MDMsNDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3Rk
Ojppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYg
c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAm
JiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0
ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYm
IHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAg
JiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAgIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJn
R1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAg
ICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNl
UmVncywgVHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1l
Li4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBz
dGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYg
KChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6
OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJH
VU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19zYW1lPEFyZywgc3Rk
OjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
QXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRy
KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0byBkZWFsIHdpdGgg
b3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0
ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEUsIFN0cnVjdHVyZSo+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3NhbWU8QXJnLCBERkc6
OlJlZ2lzdGVyZWRTdHJ1Y3R1cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0
ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNjM5LDggKzY1MSw4IEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI3VuZGVmIFJF
U1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0aGUgYXJndW1lbnQgcmVnaXN0
ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1G
UFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAg
LTY1NSwzMSArNjY3LDQ0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogICAgICAgICBzZXR1cFN0dWJBcmdzPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oY2xh
bXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZnByRGVz
dGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGFyZ1Nv
dXJjZVJlZ3MuZnByU291cmNlcykpOwogICAgIH0KIAotcHVibGljOgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBu
b25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRW50cnlJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdXNpbmcgRmlyc3RBcmd1bWVudFR5
cGUgPSB0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJn
dW1lbnRUeXBlPDA+OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxGaXJzdEFy
Z3VtZW50VHlwZSwgQ2FsbEZyYW1lKj46OnZhbHVlKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBqc3Zh
bHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNp
emVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKKyNlbmRpZgorICAgICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgfSBlbHNlIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBm
b3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4u
CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7
CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgfQorICAgIH0KIAotI2RlZmluZSBGSVJT
VF9BUkdVTUVOVF9UWVBFIHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0
ZW1wbGF0ZSBBcmd1bWVudFR5cGU8MD4KK3B1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUq
Pjo6dmFsdWU+IHNldHVwQXJndW1lbnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2Ug
anN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGlj
X2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNp
emVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNlbmRpZgotICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4o
QXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJh
dGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4u
Lik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNf
c2FtZTxGSVJTVF9BUkdVTUVOVF9UWVBFLCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVwQXJndW1l
bnRzKEFyZ3MuLi4gYXJncykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNG
b3JJbmRpcmVjdENhbGwoR1BSUmVnIGZ1bmN0aW9uR1BSLCBBcmdzLi4uIGFyZ3MpCiAgICAgewot
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9y
IDY0LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2Fs
bEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5k
aWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAs
IDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7
CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJbXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxl
Y3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4oKS5wdXNoTm9uQXJnKGZ1bmN0aW9uR1BSLCBH
UFJJbmZvOjpub25BcmdHUFIwKSwgYXJncy4uLik7CiAgICAgfQogCi0jdW5kZWYgRklSU1RfQVJH
VU1FTlRfVFlQRQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJl
Y3RDYWxsKEFkZHJlc3MgYWRkcmVzcywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgc2V0
dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoYWRkcmVzcy5iYXNlLCBHUFJJbmZvOjpub25B
cmdHUFIwKSwgYXJncy4uLik7CisgICAgfQogCiAgICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVn
IGRlc3RBLCBHUFJSZWcgZGVzdEIpCiAgICAgewpAQCAtODE5LDcgKzg0NCw3IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgIC8vIExlYXZlcyBiZWhp
bmQgYSBwb2ludGVyIHRvIHRoZSBQYWNrZXQgd2Ugc2hvdWxkIHdyaXRlIHRvIGluIHNoYWRvd1Bh
Y2tldC4KICAgICB2b2lkIGVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQoVk0mLCBHUFJSZWcgc2hh
ZG93UGFja2V0LCBHUFJSZWcgc2NyYXRjaDFOb25BcmdHUFIsIEdQUlJlZyBzY3JhdGNoMik7CiAK
LSAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29kZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
SW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ0NhbGxIZWxwZXJzJik+
LCBjb25zdCBjaGFyKik7CisgICAgc3RhdGljIHZvaWQgZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZSwgU2NvcGVkTGFtYmRhPHZvaWQo
Q0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmNwcAppbmRleCBmN2FhMzI5ZmUyNWQxOWM3MzcxODQ3MGFlZmZiM2I0YWFlYTA1ZGI2Li5lNjY0
MWJmNjJmNGQ2MjdmY2YzNWQzMDAxZmI4YTI1Y2M0YWI0MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKICNpbmNsdWRl
ICJIZWFwLmgiCkBAIC0zOCwxOCArMzksMjIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUdDQXdh
cmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAgIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKK0dD
QXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUpCiAgICAgOiBKSVRTdHVi
Um91dGluZShjb2RlKQogewotICAgIHZtLmhlYXAubV9qaXRTdHViUm91dGluZXMtPmFkZCh0aGlz
KTsKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkg
eyB9CiAKK3ZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYWtlR0NBd2FyZShWTSYgdm0pCit7
CisgICAgdm0uaGVhcC5tX2ppdFN0dWJSb3V0aW5lcy0+YWRkKHRoaXMpOworICAgIG1faXNHQ0F3
YXJlID0gdHJ1ZTsKK30KKwogdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJv
UmVmQ291bnQoKQogewotICAgIGlmIChtX2lzSmV0dGlzb25lZCkgeworICAgIGlmIChtX2lzSmV0
dGlzb25lZCB8fCAhbV9pc0dDQXdhcmUpIHsKICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIG5lZWRl
ZCBmb3Igd2hlbiB0aGUgc3lzdGVtIHNodXRzIGRvd24uIEl0IG1heSBiZSB0aGF0CiAgICAgICAg
IC8vIHRoZSBKSVQgc3R1YiByb3V0aW5lIHNldCBnZXRzIGRlbGV0ZWQgYmVmb3JlIHdlIGdldCBh
cm91bmQgdG8gZGVsZXRpbmcKICAgICAgICAgLy8gdGhpcyBndXkuIEluIHRoYXQgY2FzZSB0aGUg
R0MgaW5mb3JtcyB1cyB0aGF0IHdlJ3JlIGpldHRpc29uZWQgYWxyZWFkeQpAQCAtNzQsMTAgKzc5
LDM1IEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpkZWxldGVGcm9tR0MoKQogICAgIGRl
bGV0ZSB0aGlzOwogfQogCitQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpQb2x5bW9y
cGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vz
c0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrU3RydWN0dXJl
cykKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlKQorICAgICwgbV92bSh2bSkKKyAg
ICAsIG1fY2FzZXMoV1RGTW92ZShjYXNlcykpCisgICAgLCBtX3dlYWtTdHJ1Y3R1cmVzKFdURk1v
dmUod2Vha1N0cnVjdHVyZXMpKQoreworfQorCit2b2lkIFBvbHltb3JwaGljQWNjZXNzSklUU3R1
YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQoKQoreworICAgIGlmIChtX3ZtLm1fc2hhcmVk
SklUU3R1YnMpCisgICAgICAgIG1fdm0ubV9zaGFyZWRKSVRTdHVicy0+cmVtb3ZlKHRoaXMpOwor
ICAgIEJhc2U6Om9ic2VydmVaZXJvUmVmQ291bnQoKTsKK30KKwordW5zaWduZWQgUG9seW1vcnBo
aWNBY2Nlc3NKSVRTdHViUm91dGluZTo6Y29tcHV0ZUhhc2goY29uc3QgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+PiYgY2FzZXMsIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYg
d2Vha1N0cnVjdHVyZXMpCit7CisgICAgSGFzaGVyIGhhc2hlcjsKKyAgICBmb3IgKGF1dG8mIGtl
eSA6IGNhc2VzKQorICAgICAgICBXVEY6OmFkZChoYXNoZXIsIGtleS0+aGFzaCgpKTsKKyAgICBm
b3IgKGF1dG8mIHN0cnVjdHVyZUlEIDogd2Vha1N0cnVjdHVyZXMpCisgICAgICAgIFdURjo6YWRk
KGhhc2hlciwgc3RydWN0dXJlSUQpOworICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOworfQorCiBN
YXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4m
IGNvZGUsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwKKyAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVj
dG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
JiYgd2Vha1N0cnVjdHVyZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgY29uc3QgVmVjdG9y
PEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zKQotICAg
IDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAgIDogUG9seW1vcnBoaWNBY2Nl
c3NKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0
cnVjdHVyZXMpKQogICAgICwgbV9jZWxscyhjZWxscy5zaXplKCkpCiAgICAgLCBtX2NhbGxMaW5r
SW5mb3MoV1RGTW92ZShjYWxsTGlua0luZm9zKSkKIHsKQEAgLTEwNiw5ICsxMzYsOSBAQCB2b2lk
IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5h
bChTbG90VmlzaXRvciYgdmlzaQogfQogCiBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGFuZGxlcjo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoCi0g
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29k
ZSwgVk0mIHZtLCAgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiBj
ZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAorICAgIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4
ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1
cmVJRD4mJiB3ZWFrU3RydWN0dXJlcywgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9y
PEpTQ2VsbCo+JiBjZWxscywgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2FibGVDYWxs
U2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KQotICAgIDogTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxM
aW5rSW5mb3MpKQorICAgIDogTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSwg
V1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpLCBvd25lciwgY2VsbHMsIFdU
Rk1vdmUoY2FsbExpbmtJbmZvcykpCiAgICAgLCBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5k
bGVyKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKQogI2lmIEVOQUJMRShERkdfSklUKQog
ICAgICwgbV9jb2RlT3JpZ2luUG9vbCgmbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlci0+
Y29kZU9yaWdpbnMoKSkKQEAgLTE1Miw4ICsxODIsMTAgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJv
dXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCiB9CiAKIAot
UmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKK1JlZjxQb2x5bW9ycGhp
Y0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCisgICAg
Rml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLAorICAgIEZpeGVkVmVjdG9y
PFN0cnVjdHVyZUlEPiYmIHdlYWtTdHJ1Y3R1cmVzLAogICAgIFZNJiB2bSwKICAgICBjb25zdCBK
U0NlbGwqIG93bmVyLAogICAgIGJvb2wgbWFrZXNDYWxscywKQEAgLTE2NSwxOCArMTk3LDI1IEBA
IFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgaWYgKCFtYWtl
c0NhbGxzKSB7CiAgICAgICAgIC8vIEFsbG9jYXRpbmcgQ2FsbExpbmtJbmZvcyBtZWFucyB3ZSBz
aG91bGQgaGF2ZSBjYWxscy4KICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgp
KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSklUU3R1YlJvdXRpbmUoY29kZSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0
aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcykpKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzKSB7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2tG
b3JFeGNlcHRpb25IYW5kbGVycy0+aml0VHlwZSgpKSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvZGUsIHZt
LCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2Vw
dGlvbkhhbmRsZXJzLCBleGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICBh
dXRvIHN0dWIgPSBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyKGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJl
cyksIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhj
ZXB0aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAg
IHN0dWItPm1ha2VHQ0F3YXJlKHZtKTsKKyAgICAgICAgcmV0dXJuIHN0dWI7CiAgICAgfQogCi0g
ICAgaWYgKGNlbGxzLmlzRW1wdHkoKSAmJiBjYWxsTGlua0luZm9zLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKGNvZGUsIHZtKTsKKyAgICBp
ZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKSB7CisgICAgICAg
IGF1dG8gc3R1YiA9IGFkb3B0UmVmKCpuZXcgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGlu
ZShjb2RlLCB2bSwgV1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpKSk7Cisg
ICAgICAgIHN0dWItPm1ha2VHQ0F3YXJlKHZtKTsKKyAgICAgICAgcmV0dXJuIHN0dWI7CisgICAg
fQogICAgIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOwor
ICAgIGF1dG8gc3R1YiA9IGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGlu
ZShjb2RlLCB2bSwgV1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpLCBvd25l
ciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKKyAgICBzdHViLT5tYWtlR0NBd2Fy
ZSh2bSk7CisgICAgcmV0dXJuIHN0dWI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKaW5kZXgg
NDhiZWZiYzQ4N2ZjYTI1NzBjNjVjOTI5Zjk0ZDE4ZTZjZTFjYTlmZC4uM2E2N2RmYmM1ODZmYjdh
NWNkZWZmMjE1Zjg0NDY4OGEyMGNiOWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNlIERG
RyB7CiBjbGFzcyBDb2RlT3JpZ2luUG9vbDsKIH0KIAorY2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNz
IENhbGxMaW5rSW5mbzsKIGNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0OwogCkBAIC01NCwxMiArNTYs
MTQgQEAgY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAvLyBsaXN0IHdoaWNoIGRvZXMgbm90IGdl
dCByZWNsYWltZWQgYWxsIGF0IG9uY2UpLgogY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDog
cHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIHB1YmxpYzoKLSAgICBHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZN
Jik7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mKTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkg
b3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZt
KQorICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShWTSYgdm0sIGNvbnN0IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwg
dm0pKTsKKyAgICAgICAgYXV0byBzdHViID0gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUoY29kZSkpOworICAgICAgICBzdHViLT5tYWtlR0NBd2FyZSh2bSk7CisgICAgICAgIHJl
dHVybiBzdHViOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CkBAIC02
OSw2ICs3Myw4IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHVi
Um91dGluZSB7CiAgICAgfQogICAgIAogICAgIHZvaWQgZGVsZXRlRnJvbUdDKCk7CisKKyAgICB2
b2lkIG1ha2VHQ0F3YXJlKFZNJik7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBvYnNlcnZl
WmVyb1JlZkNvdW50KCkgb3ZlcnJpZGU7CkBAIC04MSwxNCArODcsNDQgQEAgY2xhc3MgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsKIAogICAgIGJvb2wgbV9t
YXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSmV0dGlzb25lZCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzR0NBd2FyZSB7IGZhbHNlIH07Cit9OworCitjbGFzcyBQb2x5bW9y
cGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEdDQXdhcmVKSVRTdHViUm91dGluZTsKKworICAg
IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vz
c0Nhc2U+PiYmLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJik7CisKKyAgICBjb25zdCBGaXhl
ZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBjYXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2Fz
ZXM7IH0KKyAgICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mIHdlYWtTdHJ1Y3R1cmVz
KCkgY29uc3QgeyByZXR1cm4gbV93ZWFrU3RydWN0dXJlczsgfQorCisgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1faGFzaCkKKyAgICAgICAgICAgIG1faGFz
aCA9IGNvbXB1dGVIYXNoKG1fY2FzZXMsIG1fd2Vha1N0cnVjdHVyZXMpOworICAgICAgICByZXR1
cm4gbV9oYXNoOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25z
dCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiwgY29uc3QgRml4ZWRWZWN0b3I8U3Ry
dWN0dXJlSUQ+Jik7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQo
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICBGaXhlZFZlY3RvcjxS
ZWZQdHI8QWNjZXNzQ2FzZT4+IG1fY2FzZXM7CisgICAgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
IG1fd2Vha1N0cnVjdHVyZXM7CiB9OwogCiAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBtYXJr
IG9uZSBhZGRpdGlvbmFsIG9iamVjdCBkdXJpbmcgR0MgaWYgeW91ciBzdHViCiAvLyByb3V0aW5l
IGlzIGtub3duIHRvIGJlIGV4ZWN1dGluZy4KLWNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKK2NsYXNzIE1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGlu
ZSB7CiBwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmU7CisKICAgICBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKAotICAgICAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25z
dCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZv
PiYmKTsKKyAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBGaXhlZFZl
Y3RvcjxTdHJ1Y3R1cmVJRD4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVjdG9yPEpT
Q2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7CiAgICAgfk1hcmtpbmdHQ0F3YXJlSklUU3R1
YlJvdXRpbmUoKSBvdmVycmlkZTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTEwNyw5ICsxNDMsOSBA
QCBjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRT
dHViUm91dGluZSB7CiAvLyBmb3IgbmV3IGV4Y2VwdGlvbiBoYW5kbGVycyB0byB1c2UgdGhlIHNh
bWUgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXguCiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVX
aXRoRXhjZXB0aW9uSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVFN0dWJS
b3V0aW5lIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEdDQXdhcmVKSVRTdHViUm91dGluZSBCYXNl
OworICAgIHVzaW5nIEJhc2UgPSBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOwogCi0gICAg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBv
d25lciwgY29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJs
b2NrKiwgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOworICAgIEdDQXdhcmVKSVRTdHViUm91dGlu
ZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwg
Rml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZl
Y3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2Fi
bGVDYWxsU2l0ZUluZGV4KTsKICAgICB+R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXIoKSBmaW5hbDsKIAogICAgIHZvaWQgYWJvdXRUb0RpZSgpIGZpbmFsOwpAQCAtMTI5
LDkgKzE2NSwxMCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlciBmaW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogLy8gYXBwcm9wcmlhdGUuIEdl
bmVyYWxseSB5b3Ugb25seSBuZWVkIHRvIHBhc3MgcG9pbnRlcnMgdGhhdCB3aWxsIGJlIHVzZWQK
IC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxsIHRvIEMrKyBvciBKUy4KIC8vIAotLy8gUmVmPEpJVFN0
dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKKy8vIFJlZjxQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAogLy8gICAgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKIC8vICAgIFZN
JiB2bSwKKy8vICAgIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywKIC8v
ICAgIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAvLyAgICBib29sIG1ha2VzQ2FsbHMsCiAvLyAgICAu
Li4pOwpAQCAtMTQyLDggKzE3OSw4IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhF
eGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyB0aGlz
IGZ1bmN0aW9uIHVzaW5nIHZhcmFyZ3MsIEkgZW5kZWQgdXAgd2l0aCBtb3JlIGNvZGUgdGhhbiB0
aGlzIHNpbXBsZQogLy8gd2F5LgogCi1SZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKAotICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0
clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywKK1JlZjxQ
b2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lPiBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKAor
ICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBG
aXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVj
dHVyZUlEPiYmIHdlYWtTdHJ1Y3R1cmVzLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGJvb2wg
bWFrZXNDYWxscywKICAgICBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZv
PiYmIGNhbGxMaW5rSW5mb3MsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25I
YW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0
ZUluZGV4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA4ZjQ1YjM3N2Mx
Njk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkLi4wNjdhYmZmMWQ2YWQyMDA3NTQ1MTgwMDc3
YjBjNGE1NWM3NzcyMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQ
UkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDYw
LDYgKzQ2MCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IGFyZ3VtZW50R1BSMyA9IFg4NlJlZ2lzdGVyczo6cjk7IC8vIHJlZ1QzCiAjZW5kaWYKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8v
IHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5v
bkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IFg4NlJlZ2lzdGVy
czo6ZWR4OyAvLyByZWdUMSBvciByZWdUMgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5v
blByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVn
VDQgb24gV2luZG93cykKQEAgLTY1Miw2ICs2NTMsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjYgPSBBUk02NFJlZ2lzdGVyczo6eDY7
IC8vIHJlZ1Q2CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFI3ID0gQVJN
NjRSZWdpc3RlcnM6Ong3OyAvLyByZWdUNwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5v
bkFyZ0dQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7IC8vIHJlZ1Q4CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsgLy8gcmVnVDkKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IEFSTTY0UmVnaXN0ZXJz
Ojp4MDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQ
UjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDFhZmZlOWU5Mzc3NjI5NmZmNzI3OWUxN2Y1MGJi
ODI4YTE0NTNhZjMuLmZkMjNiYjkxYmM5MTcwOTAyMmIxNjYyMzE3MzVmMTUyNGM4OTkzMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTEyNjUsMTIgKzEyNjUsMTIgQEAgdm9pZCBK
SVQ6OmxpbmsoKQogCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYnlWYWxDb21waWxhdGlvbklu
Zm8gOiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvKSB7CiAgICAgICAgICAgICBQYXRjaGFibGVKdW1w
IHBhdGNoYWJsZU5vdEluZGV4SnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5vdEluZGV4SnVt
cDsKLSAgICAgICAgICAgIGF1dG8gbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPigpOworICAgICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFs
UHRyVGFnPiBub3RJbmRleEp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJ
bmRleEp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxv
Y2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkpOwogCiAgICAgICAgICAgICBQYXRj
aGFibGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFk
VHlwZUp1bXA7Ci0gICAgICAgICAgICBhdXRvIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPigpOworICAgICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0lu
dGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcDsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJs
ZUJhZFR5cGVKdW1wKS5pc1NldCgpKQogICAgICAgICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29k
ZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpT
SW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wKSk7CiAKQEAg
LTEyNzksMTQgKzEyNzksMTkgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICAgICAgYXV0byBz
bG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8u
c2xvd1BhdGhUYXJnZXQpKTsKIAogICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlW
YWxJbmZvLT5zZXRVcCgKLSAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAsCi0gICAgICAgICAg
ICAgICAgYmFkVHlwZUp1bXAsCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlciwKICAg
ICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheU1vZGUsCiAgICAgICAgICAg
ICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlQcm9maWxlLAogICAgICAgICAgICAgICAg
IGRvbmVUYXJnZXQsCiAgICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhUYXJnZXQsCiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhUYXJnZXQpOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBp
bGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJn
ZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICAgICAgYnlW
YWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gc2xvd1Bh
dGhUYXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXAgPSBub3RJbmRleEp1bXA7CisgICAgICAgICAgICAgICAgYnlWYWxDb21w
aWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wID0gYmFkVHlwZUp1bXA7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IDU4MGZmNTAxMzU3M2ZhNjg1NzE3MjBmZTE3NzhlMjUxNmRhZTc3OWQuLjdmZWQ4YmE0ODk5MDYy
ZDgwODkyY2QyNWFiMWUwMWUyZmFmMjhhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
Mjk0LDYgKzI5NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbkNhbGw7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGFwcGVuZENhbGwoQWRkcmVzcyBm
dW5jdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbChmdW5jdGlvbiwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAg
ICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CkBAIC0zOTcsMzkgKzQw
MiwzOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gUHJvcGVydHkgaXMgaW50LWNoZWNr
ZWQgYW5kIHplcm8gZXh0ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLgogICAgICAgICAvLyBT
dHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxlZC4gUmV0dXJucyB0aGUgc2xvdyBjYXNlcy4gRmFs
bC10aHJvdWdoCiAgICAgICAgIC8vIGNhc2UgY29udGFpbnMgcmVzdWx0IGluIHJlZ1QwLCBhbmQg
aXQgaXMgbm90IHlldCBwcm9maWxlZC4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpIHsg
cmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgSW50MzJTaGFw
ZSk7IH0KLSAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3Vv
dXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhp
bmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOwotICAgICAgICBKdW1wTGlz
dCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJ
bnN0cnVjdGlvbiosIEpJVEFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7CisgICAg
ICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykgeyByZXR1cm4g
ZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8sIEludDMy
U2hhcGUpOyB9CisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0
aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CisgICAgICAgIEp1bXBM
aXN0IGVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEJ5VmFsSW5mbyosIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGln
dW91c1NoYXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKKyAgICAg
ICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRB
cnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOwogCiAgICAgICAg
IC8vIFByb3BlcnR5IGlzIGluIHJlZ1QxLCBiYXNlIGlzIGluIHJlZ1QwLiByZWdUMiBjb250YWlu
cyBpbmRlY2luZyB0eXBlLgogICAgICAgICAvLyBUaGUgdmFsdWUgdG8gc3RvcmUgaXMgbm90IHll
dCBsb2FkZWQuIFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFuZAogICAgICAgICAvLyB6ZXJvLWV4
dGVuZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4gU3RydWN0dXJlIGlzIGFscmVhZHkgcHJvZmls
ZWQuCiAgICAgICAgIC8vIHJldHVybnMgdGhlIHNsb3cgY2FzZXMuCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdEludDMy
UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyog
YnlWYWxJbmZvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIEludDMyU2hhcGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
LCBieVZhbEluZm8sIEludDMyU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgRG91YmxlU2hhcGUpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
LCBieVZhbEluZm8sIERvdWJsZVNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChPcCBi
eXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2Vu
ZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5
VmFsSW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAg
ICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENvbnRpZ3VvdXNTaGFw
ZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdT
aGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgot
ICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwo
T3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOwogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3QgZW1pdEludFR5cGVkQXJyYXlQdXRCeVZh
bChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBK
dW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBCeVZhbEluZm8qLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3As
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBCeVZhbEluZm8qLCBUeXBlZEFycmF5VHlwZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+CiAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKQEAgLTkwMSwxMyArOTA2LDE3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KTsKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KEFkZHJlc3MpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJl
dHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAjZW5kaWYKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFj
a09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNW
YWx1ZVJlc3VsdChjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0KTsKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2Zp
bGUoTWV0YWRhdGEmLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+Cisg
ICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRX
aXRoUHJvZmlsZShNZXRhZGF0YSYsIEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwog
ICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KICAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6aGFzUmVzdWx0LCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbD4KQEAgLTkxNyw2ICs5
MjYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
ICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxsT3BlcmF0aW9uKEFkZHJl
c3MgdGFyZ2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5
cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAjaWYgT1MoV0lORE9XUykg
JiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KICAgICAgICAg
c3RydWN0IGlzNjRCaXRUeXBlIHsKQEAgLTkzNyw2ICs5NTQsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uKTsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
QW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAg
ICB2b2lkIGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAg
ICAgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9u
VHlwZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIC8vIHg2NCBXaW5kb3dzIGNhbm5v
dCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhhbiA2
NCBiaXRzLgorICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0VHlwZTx0eXBlbmFtZSBG
dW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46OnZhbHVlKQorICAgICAg
ICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShB
ZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgfQog
I2Vsc2UgLy8gT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgQXJncy4u
LiBhcmdzKQpAQCAtOTQ0LDYgKzk3MiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOwogICAgICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgfQor
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgICAgIHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBh
cmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2Fs
bDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIHRhcmdldC5v
ZmZzZXQpKTsKKyAgICAgICAgfQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGEsIHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC05NTQsNiArOTg5LDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICAgICAgfQogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVu
YW1lIE1ldGFkYXRhLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90
PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAg
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIEFkZHJlc3MgdGFy
Z2V0LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRh
cmdldCwgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgQWRkcmVzcyhHUFJJ
bmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSwgcmVzdWx0KTsKKyAgICAgICAgfQorCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoUmVzdWx0KE9w
ZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBBcmdzLi4uIGFy
Z3MpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDFi
NDlkNDg5ZGFhMmI3ODZhYjc5MzkyZjlhMzRlYmM2NDRjZGFiMTguLjZhYjU0ODgyZDdkOTEyYzU2
MTlmNmJhZjQwYTFjNjVhMDMxYmU2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcApAQCAtMzk4LDggKzM5OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChC
eXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5p
bXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEsIEFj
Y2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC00MzIsOCArNDMyLDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRv
cl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAg
CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0
cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVy
YXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbmV4dFZSZWcsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwg
PSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
LCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyYXRvckdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3
Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OworCiAgICAgYXV0byBkb25lID0ganVtcCgpOwogCiAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7
CkBAIC00ODAsOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZl
ZFJlZ3MgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgICAg
IHByZXNlcnZlZFJlZ3MuYWRkKHZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
KSksIHByZXNlcnZlZFJlZ3MsCi0gICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCkp
LCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIEFjY2Vz
c1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2Vs
aW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNv
ZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgcHJlc2VydmVkUmVncywKKyAgICAg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
dm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksIEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRH
UFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgcmVnVDMsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBA
IC00OTksOCArNTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUg
PSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgc2NyYXRjaDEsIHNj
cmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CiAKICAgICAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
dm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiks
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAg
ICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZt
KCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBK
U1ZhbHVlUmVncyh2YWx1ZUdQUiksIHJlZ1Q0LCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNTI4
LDE2ICs1MzUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKICAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgICAgICBub3RP
YmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyUmVzdWx0R1BSKSk7Ci0gICAgICAgIG5v
dE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwogCiAgICAg
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5p
bXBsKCk7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9n
ZXRCeUlkSW5kZXgrK107CiAgICAgICAgIAogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUo
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICBub3RPYmpl
Y3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAorICAgICAgICBD
YWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKSB7CisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4o
Ynl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRvbmVWUmVn
LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5v
bkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgZG9uZVZSZWcsIFRydXN0
ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0
ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CisKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihk
b25lVlJlZywgcmVnVDEpOwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fdmFsdWUsIHJlZ1QwKTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50
KGp1bXAoKSk7CkBAIC01NTYsOCArNTcwLDEzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAK
ICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAgICAgQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7Ci0KKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5v
bkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlPGRlY2x0eXBl
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3
Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplLCB2YWx1ZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAg
ICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZWNj
NGU1ZjNmZjZkMDdmOTljMDc4NGRkNGMxMmRlYmEwZTIxMGRjZi4uMTUyNTE0YWZkY2FjNzgyYWM5
Yzg3NGU1NTBhZmZiOWM3MjhiZWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcApAQCAtMzk2LDEyICszOTYsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgIEpJVFR5cGU6
OkJhc2VsaW5lSklULAogICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAg
ICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkp
KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlk
ZW50LT5pbXBsKCkpLAogICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyYXRvckdQUiwgcGF5bG9h
ZEl0ZXJhdG9yR1BSKSwKICAgICAgICAgbmV4dFJlZ3MsCisgICAgICAgIEludmFsaWRHUFJSZWcs
CiAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKQEAgLTUwNSwxMiArNTA3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICBwcmVz
ZXJ2ZWRSZWdzLmFkZChwYXlsb2FkVmFsdWVHUFIpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgSklUVHlwZTo6
QmFzZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCiAg
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksCiAgICAgICAgICAgICBwcmVzZXJ2ZWRSZWdzLAogICAgICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5
TmFtZXMtPmRvbmUuaW1wbCgpKSwKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1
bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAgICAgICAgIGRvbmVSZWdzLAorICAg
ICAgICAgICAgSW52YWxpZEdQUlJlZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dD
YXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC01MzMsMTIgKzUzNywxNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAog
ICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgICAgIG1fY29kZUJsb2Nr
LAorICAgICAgICAgICAgSklUVHlwZTo6QmFzZWxpbmVKSVQsCiAgICAgICAgICAgICBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2Rl
SW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAgICAgICBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+
dmFsdWUuaW1wbCgpKSwKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIs
IHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKICAgICAgICAgICAgIHJlc3VsdFJlZ3MsCisgICAgICAg
ICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXgg
Nzc0NTlhYmVhYzNlMmJmNDBkNDliMmViZGY3ZDZjNjc4NTMxYjk1Ni4uNzM3NjY3OWJlODcyYjU5
ODkzZjlhY2EzMTk4ZTllZmU1NTIyZjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgKQEAgLTUxLDEzICs1MSwxNSBAQCBjbGFzcyBUcmFja2VkUmVmZXJlbmNlczsKIGNsYXNzIFZN
OwogCiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90IHsKLSAgICBOb25lLAotICAgIEhvc3RD
YWxsVGh1bmssCi0gICAgSW50ZXJwcmV0ZXJUaHVuaywKLSAgICBCYXNlbGluZUpJVCwKLSAgICBE
RkdKSVQsCi0gICAgRlRMSklUCisgICAgTm9uZSA9IDBiMDAwLAorICAgIEhvc3RDYWxsVGh1bmsg
PSAwYjAwMSwKKyAgICBJbnRlcnByZXRlclRodW5rID0gMGIwMTAsCisgICAgQmFzZWxpbmVKSVQg
PSAwYjAxMSwKKyAgICBERkdKSVQgPSAwYjEwMCwKKyAgICBGVExKSVQgPSAwYjEwMSwKIH07Citz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHdpZHRoT2ZKSVRUeXBlID0gMzsKK3N0YXRpY19hc3Nl
cnQoV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5
cGVfdDxKSVRUeXBlPj4oSklUVHlwZTo6RlRMSklUKSkgKyAxID09IHdpZHRoT2ZKSVRUeXBlKTsK
IAogY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7
CiBwdWJsaWM6CkBAIC0xNTUsNiArMTU3LDE1IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBK
SVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gSklUVHlwZTo6QmFzZWxpbmVK
SVQ7CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgdXNlRGF0YUlDKEpJVFR5cGUgaml0VHlwZSkK
KyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlRGF0YUlDKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBl
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNl
RGF0YUlDSW5PcHRpbWl6aW5nSklUKCk7CisgICAgfQorCiAgICAgdmlydHVhbCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IAogICAgIGVudW0gY2xhc3MgU2hhcmVBdHRyaWJ1dGUgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5k
ZXggMTg5M2M2ODAxMmIwMmI3NTYwMDczMWE2Zjc3NjljYWIxYmUwZGRkMC4uZmRmZDJhOWRiNWNj
NWUxMGJkMjcyYTNkODFhYTFmZjU4MTQzZWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTQzLDkgKzQzLDEw
IEBAIHN0YXRpYyBTdHJ1Y3R1cmVTdHViSW5mbyogZ2FyYmFnZVN0dWJJbmZvKCkKIH0KIAogSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKAotICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKICAgICBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycykKICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faml0VHlw
ZShqaXRUeXBlKQogewogICAgIG1fc3R1YkluZm8gPSBtX2NvZGVCbG9jayA/IG1fY29kZUJsb2Nr
LT5hZGRTdHViSW5mbyhhY2Nlc3NUeXBlLCBjb2RlT3JpZ2luKSA6IGdhcmJhZ2VTdHViSW5mbygp
OwogICAgIG1fc3R1YkluZm8tPmNhbGxTaXRlSW5kZXggPSBjYWxsU2l0ZTsKQEAgLTYwLDIwICs2
MSwyMiBAQCB2b2lkIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKIAogICAgIG1f
c3R1YkluZm8tPmRvbmVMb2NhdGlvbiA9IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0
clRhZz4obV9kb25lKTsKIAotICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoQ2FsbExvY2F0aW9uID0g
c2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5m
by0+bV9zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SlNJbnRlcm5h
bFB0clRhZz4obV9zbG93UGF0aENhbGwpOwogICAgIG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRM
b2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc2xv
d1BhdGhCZWdpbik7CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCi0g
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAotICAgIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkK
LSAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ss
IGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJz
KQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQogewogICAgIG1fc3R1
YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1
ZUdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnRoaXNHUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5m
b0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIg
PSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gdmFsdWUudGFn
R1BSKCk7CkBAIC04MywxMyArODYsMTUgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVy
YXRvcigKIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0
UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQo
KSk7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0
UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+
KG1fc3RhcnQpKTsKKyAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAg
ICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRp
b247CiB9CiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIHNpemVfdCBpbmxpbmVJQ1NpemUpCiB7CisgICAgLy8gV2UgZ2VuZXJh
dGUgdGhlIHNhbWUgY29kZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgU2hhcmVkSUMgaXMgZW5hYmxl
ZCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgdG8gdXNlIElubGluZUFjY2VzcworICAgIC8vIGZvciB0
aGUgcGVyZm9ybWFuY2UgcmVhc29uLgogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKICAgICBz
aXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CiAg
ICAgbV9zbG93UGF0aEp1bXAgPSBqaXQuanVtcCgpOwpAQCAtMTAxLDkgKzEwNiw5IEBAIHZvaWQg
SklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKE1hY3JvQXNzZW1ibGVyJiBqaXQs
IHNpemVfdCBpbmxpbmVJQ1NpCiB9CiAKIEpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRH
ZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCi0gICAgOiBKSVRC
eUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUs
IHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKKyAgICA6IEpJVEJ5
SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNj
ZXNzVHlwZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICwg
bV9pc0xlbmd0aEFjY2Vzcyhwcm9wZXJ0eU5hbWUudWlkKCkgPT0gY29kZUJsb2NrLT52bSgpLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBsKCkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZS5w
YXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BSKCkpOwpAQCAtMTE1LDkgKzEyMCw5IEBAIHZvaWQg
SklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogfQogCiBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhp
cywgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKU1ZhbHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgdGhpc1JlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3Io
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0
QnlJZFdpdGhUaGlzLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQodGhpc1JlZ3MucGF5bG9hZEdQUigpICE9IHRoaXNSZWdzLnRh
Z0dQUigpKTsKIApAQCAtMTMzLDEwICsxMzgsMTAgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklU
UHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAg
ICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIAogICAg
IEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgICAgIDogSklUQnlJZEdl
bmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQs
IHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3Io
Y29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKICAgICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkKIHsKQEAgLTE3
MSwxNCArMTc2LDE1IEBAIFZfSklUT3BlcmF0aW9uX0dTc2lKSkMgSklUUHV0QnlJZEdlbmVyYXRv
cjo6c2xvd1BhdGhGdW5jdGlvbigpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpJVERlbEJ5
VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJh
c2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxl
dGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKK0pJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZh
bEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0
Y2gpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9z
dHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAgICAgQVNTRVJUKGJhc2Uu
cGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJh
c2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5
R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
cmVzdWx0LnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1
YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIo
KSAhPSByZXN1bHQudGFnR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNl
LnRhZ0dQUigpOwpAQCAtMTkxLDI2ICsxOTcsMzAgQEAgSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJ
VERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUK
IHZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1
bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9q
aXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2Fs
bChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklURGVsQnlWYWxHZW5lcmF0
b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKK3ZvaWQgSklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZh
c3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1
bXAubV9qdW1wLmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0
aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1f
c3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRo
LmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0
ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklURGVsQnlJZEdl
bmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQotICAgIDogQmFzZShjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQs
IHVzZWRSZWdpc3RlcnMpCitKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9y
KENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQorICAgIDog
QmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6OkRlbGV0ZUJ5SUQsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFz
Q29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICBBU1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkg
IT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2Uu
cGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlk
R1BSUmVnOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsK
KyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICBBU1NFUlQoYmFzZS50YWdHUFIoKSAhPSByZXN1bHQudGFnR1BSKCkp
OwogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwpAQCAtMjIzLDI2
ICsyMzMsMzAgQEAgSklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3IKIHZvaWQgSklURGVsQnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewogICAgIG1fc3Rh
cnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1w
KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5m
by0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVz
cyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZD
b2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1f
c2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFi
ZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICBMaW5r
QnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERlbEJ5SWRH
ZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAubV9qdW1wLmlzU2V0KCkpOwotICAg
IEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlw
ZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRo
U3RhcnRMb2NhdGlvbjsKIH0KIAotSklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
KQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6OkluQnlWYWwsIHVzZWRSZWdpc3RlcnMpCitKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJ
bkJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDog
QmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vz
c1R5cGU6OkluQnlWYWwsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5mby0+aGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3Bl
cnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXls
b2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1bHQudGFnR1BSKCk7
CkBAIC0yNTMsNyArMjY3LDExIEBAIEpJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5l
cmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yCiB2b2lkIEpJVElu
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsK
ICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0
Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkgewor
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyks
IG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQor
ICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25l
ID0gaml0LmxhYmVsKCk7CiB9CiAKQEAgLTI2MSwxMiArMjc5LDE1IEBAIHZvaWQgSklUSW5CeVZh
bEdlbmVyYXRvcjo6ZmluYWxpemUoCiAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZm
ZXImIHNsb3dQYXRoKQogewogICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEJhc2U6
OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZShm
YXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpCisg
ICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRM
b2NhdGlvbjsKIH0KIAotSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50
aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSkK
LSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6SW5CeUlkLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKK0pJVEluQnlJ
ZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKAorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9j
aywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluQnlJZCwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIC8vIEZJWE1FOiBX
ZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBwYXRoIGZvciAibGVuZ3RoIiBwcm9wZXJ0eS4KICAg
ICBVTlVTRURfUEFSQU0ocHJvcGVydHlOYW1lKTsKQEAgLTI3OSwxNSArMzAwLDE1IEBAIHZvaWQg
SklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQp
CiB9CiAKIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0g
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4LAotICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsCisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlw
ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLAogICAgIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyLCBib29sIHByb3RvdHlwZUlzS25vd25PYmplY3QpCi0gICAgOiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQorICAgIDogSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1Yklu
Zm8tPmJhc2VHUFIgPSB2YWx1ZTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdDsK
ICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3RvdHlwZUdQUiA9IHByb3RvdHlwZTsKKyAgICBtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0
dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CkBAIC0zMDcsMjEgKzMyOCwyNCBA
QCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAogCiB2b2lk
IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
IGppdCkKIHsKLSAgICBtX2p1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fc3RhcnQg
PSBqaXQubGFiZWwoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpIHsK
KyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8p
LCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9u
ZSA9IGppdC5sYWJlbCgpOwogfQogCiB2b2lkIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmZpbmFs
aXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93
UGF0aCwKLSAgICAgICAgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4o
bV9qdW1wKSk7Ci0gICAgCi0gICAgZmFzdFBhdGgubGluayhtX2p1bXAubV9qdW1wLCBzbG93UGF0
aC5sb2NhdGlvbk9mPE5vUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pKTsKKyAgICBCYXNlOjpmaW5h
bGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlw
ZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRo
U3RhcnRMb2NhdGlvbjsKIH0KIAotSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJv
cGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQorSklUR2V0QnlW
YWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1
ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVCbG9jaywg
aml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lz
dGVycykKICAgICAsIG1fYmFzZShiYXNlKQogICAgICwgbV9yZXN1bHQocmVzdWx0KQogewpAQCAt
MzMwLDYgKzM1NCw3IEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVy
dHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIg
PSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBz
dHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VU
YWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVz
dWx0LnRhZ0dQUigpOwpAQCAtMzQwLDIwICszNjUsMjMgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6
OkpJVEdldEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGUKIHZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3Nl
bWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
bV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQu
Y2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcp
OworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1w
KCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklUR2V0QnlWYWxHZW5l
cmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBz
bG93UGF0aCkKK3ZvaWQgSklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXIm
IGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5p
c1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cisg
ICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9m
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJ
bmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpCi0gICAgOiBCYXNlKGNvZGVCbG9j
aywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykK
K0pJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2Rl
QmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVz
ZWRSZWdpc3RlcnMpCiB7CiAgICAgQVNTRVJUKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6Q2hl
Y2tQcml2YXRlQnJhbmQgfHwgYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJh
bmQpOwogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwpAQCAt
MzYxLDYgKzM4OSw3IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsCiAgICAgbV9zdHViSW5mby0+
YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MuYnJhbmRH
UFIgPSBicmFuZC5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBJbnZh
bGlkR1BSUmVnOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNl
LnRhZ0dQUigpOwogICAgIG1fc3R1YkluZm8tPnYuYnJhbmRUYWdHUFIgPSBicmFuZC50YWdHUFIo
KTsKQEAgLTM3MSwxNiArNDAwLDE5IEBAIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsCiB2b2lkIEpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRo
SnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyht
X2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5j
YWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5r
QnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpm
aW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0g
ICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAg
IGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwg
ZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+
bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA5MDRkYjE0MjIyMzhiZDE0Y2YzNDI5MWFmNzUzNjg0
MDhiYTU3YjlhLi40YjQ3OWI5NzZlMWU3NzE2YzAzMzZlNTI1Zjc3MmVkMzJmY2QxNWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCkBAIC00MSwxMiArNDEsMTIgQEAgY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgU3RydWN0dXJl
U3R1YkluZm87CiAKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKK2VudW0gY2xhc3Mg
SklUVHlwZSA6IHVpbnQ4X3Q7CiAKIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHBy
b3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQotICAgIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0
ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyk7Cisg
ICAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMpOwogICAgIAogcHVibGljOgogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbygp
IGNvbnN0IHsgcmV0dXJuIG1fc3R1YkluZm87IH0KQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIAogcHJvdGVjdGVkOgogICAgIENvZGVCbG9jayog
bV9jb2RlQmxvY2s7CisgICAgSklUVHlwZSBtX2ppdFR5cGU7CiAgICAgU3RydWN0dXJlU3R1Yklu
Zm8qIG1fc3R1YkluZm87CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9kb25lOwpAQCAt
NzcsOCArNzgsOCBAQCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yIHsKICAgICBKSVRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRCeUlk
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sq
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKIHB1YmxpYzoKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdApAQCAtMTAxLDEzICsxMDIsMTMg
QEAgY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFz
cyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3Mg
SklUR2V0QnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1
YmxpYzoKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5m
b0dQUiwgQWNjZXNzVHlwZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJik7CiAKQEAgLTExNSwyNiArMTE2LDI2IEBAIGNsYXNzIEpJVEdldEJ5SWRHZW5l
cmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgYm9vbCBtX2lzTGVuZ3RoQWNj
ZXNzOwogfTsKIAotY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIDogcHVibGljIEpJ
VEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisg
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0
aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0
aChNYWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCiAgICAgeyB9
CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CisgICAgICAgIENvZGVC
bG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNl
LAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcg
c2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0
UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQ1LDE0ICsxNDYsMTQgQEAgY2xhc3Mg
SklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBQdXRL
aW5kIG1fcHV0S2luZDsKIH07CiAKLWNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBCYXNlID0g
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklURGVsQnlWYWxHZW5lcmF0
b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sq
LCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBDb2RlQmxvY2sqLCBK
SVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRj
aCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAg
IHsKQEAgLTE3MCwxNCArMTcxLDE0IEBAIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVi
bGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklURGVsQnlJZEdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcg
QmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVERlbEJ5SWRH
ZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2Ny
YXRjaCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAog
ICAgIHsKQEAgLTIwMSw4ICsyMDIsOCBAQCBjbGFzcyBKSVRJbkJ5VmFsR2VuZXJhdG9yIDogcHVi
bGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yKCkg
eyB9CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1Bh
dGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yMjAsNDIgKzIyMSw1MCBAQCBjbGFzcyBKSVRJbkJ5
VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICBNYWNy
b0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNzIEpJ
VEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVElu
QnlJZEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoK
ICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEluQnlJZEdlbmVyYXRvcigK
LSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwg
SklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IgewogcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsK
ICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKCkgeyB9CiAgICAgCiAgICAgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsCi0gICAg
ICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJS
ZWcgc2NyYXRjaDIsCisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVz
dWx0LAorICAgICAgICBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzdHVi
SW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsCiAgICAgICAgIGJvb2wg
cHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRl
RmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNs
b3dQYXRoSnVtcCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9zbG93UGF0aEp1bXAu
bV9qdW1wLmlzU2V0KCkpOworICAgICAgICByZXR1cm4gbV9zbG93UGF0aEp1bXAubV9qdW1wOwor
ICAgIH0KKwogICAgIHZvaWQgZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVy
LCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOwogCiBwcml2YXRlOgotICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fanVtcDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbV9zdGFydDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRo
SnVtcDsKIH07CiAKLWNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBCYXNlID0gSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7IH0K
IAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0
eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yNzYsMTQgKzI4
NSwxNCBAQCBjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0
aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1
c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAg
ICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCk7CisgICAgICAgIENvZGVCbG9j
ayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyBicmFuZCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAppbmRleCAzOTgwMzk0ZTE2Y2NhZDEyMmZhODUwZDQxMTA5YjM1MDBl
NjdhOWMzLi4xOTNlMjc4NmRiN2UzYzE3NWI2NjU4ZmIzZDM5ZTk5ZjVhZmI1MzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMzMsMTcgKzMzLDE3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBK
SVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKSVQ6OmVtaXRMb2FkRm9yQXJy
YXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIEpJVEFycmF5TW9k
ZSBhcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAg
ICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAg
ICAgICAgcmV0dXJuIGVtaXRJbnQzMkxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBi
eVZhbEluZm8pOwogICAgIGNhc2UgSklURG91YmxlOgotICAgICAgICByZXR1cm4gZW1pdERvdWJs
ZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRE
b3VibGVMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBj
YXNlIEpJVENvbnRpZ3VvdXM6Ci0gICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3Vy
cmVudEluc3RydWN0aW9uLCBiYWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3Vz
TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBK
SVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdlTG9hZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFn
ZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyNyw2ICsxMjcsMTMgQEAgQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2soY29uc3QgRnVuY3QKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQorewor
ICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIGFwcGVuZENhbGwoZnVuY3Rpb24pOworICAg
IGV4Y2VwdGlvbkNoZWNrKCk7Cit9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQog
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBmdW5jdGlvbikKIHsKQEAgLTE1Niw2ICsxNjMsMTYgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcyBm
dW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQorICAgIGVtaXRTdG9yZShk
c3QsIHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIE1ldGFkYXRhPgogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFBy
b2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+IGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQogewpAQCAtMTcwLDYgKzE4NywxOSBA
QCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBNZXRhZGF0YT4KK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRhdGEmIG1l
dGFkYXRhLCBBZGRyZXNzIGZ1bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZWxzZQor
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIEpTVmFsdWVSZWdzKHJldHVyblZh
bHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpKTsKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1
ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogewogICAgIGlmICghbV9jb2RlQmxvY2st
PmlzS25vd25DZWxsKHJlZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAppbmRleCBlZTE5ZTZhZGY3MDI4N2I2ZDE4MGZjMjRiMTQ3NGUxYmZhMzE2OGU4Li5kMTk4ZDQx
YTFjYmEwMzNiNzFhNjlkMjRiNWMwNmNiOGM3MjBkZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE2NCwxMyArMTY0LDE4IEBAIHZvaWQgSklUOjplbWl0
X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEsIHByb3RvKTsKIAogICAgIEpJVElu
c3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3Vs
dAogICAgICAgICByZWdUMiwgLy8gdmFsdWUKICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAg
ICAgIHJlZ1Q1LAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbnN0YW5jZU9mcy5h
cHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0x
ODYsNyArMTkxLDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvciYgZ2VuID0gbV9pbnN0YW5jZU9mc1ttX2luc3RhbmNlT2ZJbmRleCsrXTsKICAg
ICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0VlJlZywgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDIsIHJlZ1QxKTsKKworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplOworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUp
PihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDIsIHJlZ1QxKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMiwgcmVnVDEpOwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTE4MDQsNyArMTgxNiw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8q
IGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBvdGhlciB0eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVt
cExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9u
LCBhcnJheU1vZGUsIGJhZFR5cGUpOworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2Fk
Rm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxs
cHRyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRy
dWUpKSksIHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTE4MTksOCArMTgz
MSwxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0
Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2lu
ZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAg
IAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2Fs
bChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsK
KyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNJbmRleGVk
UHJvcGVydHlHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoSnVtcChieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgp
KSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxs
PFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNz
UHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOworICAgIH0KIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTg1NCwxMSArMTg3MSwxMiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBl
cyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0g
ZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBlKTsK
KyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5z
dHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgCiAgICAgbW92ZShUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAKLSAg
ICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7CkBA
IC0xODg0LDcgKzE5MDIsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQKICAgICAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbEluZm8pOworCisg
ICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
SGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdDsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ5
VmFsSW5mbyksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uPGRl
Y2x0eXBlKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQpPihBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkc3Qs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1Qx
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJ
bmZvKTsKIAogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5k
ZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7CiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5m
b1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMzZjNWJjOGJh
NjU3NWExYjM1MmQ4NWY3ZGVjOTVjZWY1M2VhYTQ1OS4uOGZhZmJmNmFkZDc4MTQ2ODBhY2UwMWI5
ODg5MjI2NzI2NmQ4NDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcApAQCAtMTYyLDEzICsxNjIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5z
dGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0CiAgICAgICAg
IHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAgICAgSW52YWxp
ZEdQUlJlZywKICAgICAgICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OwogICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CiAgICAgCiAgICAgZW1pdFN0b3JlQm9v
bChkc3QsIHJlZ1QwKTsKQEAgLTExODMsNyArMTE4NSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
c1B0CiAgICAgCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyBsaWtl
IFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExv
YWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUpOwor
ICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTE5OCw3ICsx
MjAwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2RlQmxvY2ssIHBh
dGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIkJhc2VsaW5lIGhhc19p
bmRleGVkX3Byb3BlcnR5IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmco
Km1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAg
ICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1
bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwogICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJl
c3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1
cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5R2VuZXJpYykpOwogfQogCkBAIC0xMjM0LDcgKzEyMzYsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdAogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvdGhlciB0
eXBlcyBsaWtlIFR5cGVkQXJyYXlzIGFuZCBBcmd1bWVudHMuCiAgICAgLy8gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzMgYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUwMzQuCi0gICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
ID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBiYWRUeXBl
KTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50
SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgbW92ZShUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKTsKIAogICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNDE4NWM3NjJjOTg1MzFk
Mjk0MDc1MTdlMmU3YTczNDRlZmQzODNmZi4uYjY3OTQ0M2U1YjM5M2Q3MzcwNDA2M2YyNTVmMTNi
NTVhYmVjYzc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC0xMDQ3LDcgKzEwNDcsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBp
ZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERv
bid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0
aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7Cisg
ICAgICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZv
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyk7CiAgICAg
fQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNtYU1vZGUpKTsKIH0KQEAg
LTExMzksNyArMTE0MiwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIGlmIChyZXN1
bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9uJ3QgZXZl
ciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIo
T1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKTsKKyAg
ICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpCisgICAgICAgICAgICBieVZhbEluZm8t
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYzsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFk
ZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5l
cmljKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRpcmVjdFB1dEJ5
VmFsKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8sIGVj
bWFNb2RlKSk7CkBAIC0xMzIzLDcgKzEzMjksMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoK
ICAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
KSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1
dFByaXZhdGVOYW1lR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygp
KQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN0aVBhdGNoQ2Fs
bEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyk7CiAgICAgfQogCiAgICAgc2NvcGUucmVsZWFz
ZSgpOwpAQCAtMjYxMiw3ICsyNjIxLDExIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBFbmNvZGVkSlNWYWx1ZSwgKEpTCiAgICAg
ICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMAogICAgICAgICAgICAgfHwg
b2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgewogICAgICAgICAgICAgLy8g
RG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChjb2RlQmxv
Y2stPnVzZURhdGFJQygpKQorICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlH
ZW5lcmljKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhODdiYjMyY2NmZTdjZTdmYmUyNTU2NGRi
MTFiZDcxNGVkOWMyZTE0Li4yNWQyZTlkMzc3YmVhOWY0Y2U4MGIyMTBhMmQ3MzUzNjBmYjUwNzAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cApAQCAtNjksMTIgKzY5LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgICAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5
VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAg
ICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0UmVncyk7Cisg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3Vs
dFJlZ3MsIHJlZ1QyKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KHByb3BlcnR5
KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwog
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAg
ICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTkz
LDggKzk2LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAogICAgICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dl
dEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXhdOwotICAgICAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAg
ICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJ
bmRleCsrXTsKKwogICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTExOCw3ICsxMjEsMTEgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUpLCBwcm9m
aWxlR1BSKTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKLSAgICAgICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplKTsKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeVZhbE9wdGltaXpl
KTsKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzgsNyArMTQ1
LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0
R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
QEAgLTE1Nyw5ICsxNjUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNp
ZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0
aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0
LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsIik7CkBAIC0x
ODIsMTAgKzE5MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwK
LSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCByZXN1bHRSZWdzKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6
R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwg
cmVzdWx0UmVncywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9n
ZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC0yMDEsOCArMjEzLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZh
bEluZGV4XTsKLSAgICArK21fZ2V0QnlWYWxJbmRleDsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwogICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAt
MjI2LDcgKzIzNywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFw
cGVuZENhbGwob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxs
OworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAg
ICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQ
Uik7CkBAIC0yNDUsNyArMjYwLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKQEAgLTI2Myw5ICsyNzksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEcKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8g
RklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0
YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVu
dCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1
bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9w
ZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsIik7CkBAIC0yODUsMTAgKzMwMiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlR1BSLCBiYXNlKTsKIAogICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
QWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhi
cmFuZEdQUikpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdz
KGJyYW5kR1BSKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9w
cml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIAogICAgIC8vIFdlIHNob3VsZCBlbWl0
IHdyaXRlLWJhcnJpZXIgYXQgdGhlIGVuZCBvZiBzZXF1ZW5jZSBzaW5jZSB3cml0ZS1iYXJyaWVy
IGNsb2JiZXJzIHJlZ2lzdGVycy4KQEAgLTMwMiw4ICszMjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2
YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAgKyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4Owor
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzI4
LDkgKzM0NywxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeQogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2Fs
bCA9IGFwcGVuZENhbGwob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYKKwogICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKQEAgLTM0NiwxMCArMzcwLDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2UpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0
ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nh
c2UoKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCkBAIC0z
NTcsOCArMzg0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnQKIHsKICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4g
PSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXhdOwotICAg
ICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTM4Myw3ICs0MDksMTEgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnQKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0
czxkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50
VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0
aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTQxNSw4ICs0
NDUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgYmFzZSk7CiAgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleDsKICAgICBpZiAoIXByb3BlcnR5
TmFtZUlzSW50ZWdlckNvbnN0YW50KSB7Ci0gICAgICAgIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJs
ZUp1bXBJZk5vdEludChyZWdUMSk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAg
ICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gaXNJbnQzMiA9IGJyYW5jaElmSW50MzIocmVnVDEpOworICAgICAgICAg
ICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJn
ZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0ludDMyLmxpbmsodGhp
cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFi
bGVKdW1wSWZOb3RJbnQocmVnVDEpOworICAgICAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgp
OworICAgICAgICB9CiAgICAgICAgIC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwuCiAg
ICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChyZWdUMSwgcmVnVDEpOwogICAgIH0KQEAgLTQzMiwy
MyArNDY4LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFy
cmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJVEludDMy
OgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsK
KyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
LCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3VvdXM6Ci0g
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVEFycmF5
U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Ci0gICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAg
ICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgp
OwpAQCAtNDU3LDcgKzQ5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1No
YXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywg
SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0g
Ynl0ZWNvZGUubV92YWx1ZTsKQEAgLTQ2NSw3ICs1MDIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWQKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFw
ZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7
CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlw
ZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsK
KyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlw
ZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJl
Y3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5n
U2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKwogICAgIAog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
cmVnVDIpOwogICAgIEp1bXAgb3V0T2ZCb3VuZHMgPSBicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJl
Z1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsK
QEAgLTUxNSw3ICs1NjEsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1
b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlW
YWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUg
PSBieXRlY29kZS5tX3ZhbHVlOwpAQCAtNTIzLDcgKzU2OSwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlKQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBiYWRUeXBl
ID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlT
dG9yYWdlU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlz
Q29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0
b3JhZ2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFs
SW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAg
ICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFi
b3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVu
Z3RoT2Zmc2V0KCkpKSk7CiAKQEAgLTU2OCw4ICs2MjMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHZhbHVlLCByZWdU
MSk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFt
ZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMSksIHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5l
dyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAg
IC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZl
Y3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgpAQCAtNTgwLDcgKzYzNSwxMyBAQCBKSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAgICAg
Z2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlO
YW1lLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhH
UFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICBkb25lQ2FzZXMu
YXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYzOCw4ICs2OTksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihlY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVH
UFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgYXV0byogb3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9w
dGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKLSAgICBDYWxsIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBieVZhbEluZm8tPm1fc2xvd09w
ZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9w
ZXJhdGlvblB1dEJ5VmFsT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5k
Q2FsbChpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC02NTcsNyArNzIxLDggQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTY3NSw5
ICs3NDAsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5mb0dQUiwgZWNtYU1vZGVHUFIp
OwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29u
c2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVy
YXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwg
aXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwg
QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Cisg
ICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CkBAIC02OTYsOCArNzYy
LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgYmFzZSk7CiAKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hh
YmxlSnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKKyAgICBQYXRjaGFibGVK
dW1wIGZhc3RQYXRoSm1wOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5t
X25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1wKCk7CisgICAgICAgIGFkZFNsb3dD
YXNlKGZhc3RQYXRoSm1wKTsKKyAgICB9CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7
CiAgICAgCkBAIC03NDMsNyArODE0LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAg
bW92ZShUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSwgcHV0S2luZEdQUik7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOworICAg
IENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZU9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNzYxLDcg
KzgzNiw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAg
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9m
ZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CkBAIC03NzksOSArODU1LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVBSLCBieVZhbElu
Zm9HUFIsIHB1dEtpbmRHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAK
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkg
dG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0
aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSNCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9w
ZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbCIpOwpAQCAtODQ2LDExICs5MjMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QxLCBiYXNlKTsKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVnVDIpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgcmVnVDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0g
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1f
ZGVsQnlJZHMuYXBwZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVn
cyhyZWdUMCkpOwpAQCAtODk4LDE1ICs5NzgsMTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Rl
bF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21h
TW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2Rl
bF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
KTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBw
ZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7
CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNW
YWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC05MTgsNyAr
MTAwMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAg
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9m
ZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CkBAIC05MzUsOSArMTAxOSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1v
ZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhN
RTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdl
dCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRv
IGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIp
OwpAQCAtOTU2LDEwICsxMDQxLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QwLCBwcm9wZXJ0eSk7CiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVnVDIpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHJlZ1QzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAg
ICBtX2RlbEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzKHJlZ1QwKSk7CkBAIC0xMDA4LDE1ICsxMDk2LDE4IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgp
KSwgZWNtYU1vZGVHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BS
ID09IHJlZ1QwKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29s
ZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCBKU1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
QEAgLTEwMjgsNyArMTExOSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBqaXQuc3RvcmUz
MihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CkBAIC0xMDQ1LDkgKzExMzcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXQKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
IAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3Rs
eSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRv
IHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3Zh
bF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTA2OCw4ICsxMTYxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRC
eUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vz
c1R5cGU6OlRyeUdldEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CkBAIC0xMTEwLDcgKzEyMDMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9n
ZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG8KICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlk
T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2Fs
bCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uVHJ5
R2V0QnlJZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQ
Uik7CkBAIC0xMTMzLDggKzEyMzAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGly
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6
R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2Vu
KTsKQEAgLTExNzYsNyArMTI3MywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKKyAgICBD
YWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25H
ZXRCeUlkRGlyZWN0T3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5W
YWx1ZUdQUik7CkBAIC0xMjA3LDggKzEzMDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBK
U1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTIzMyw4
ICsxMzM0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRS
ZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1
bHRSZWdzLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTEy
NzUsNyArMTM3NiwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQor
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTI5
NCw3ICsxMzk5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKQEAgLTEzMTEsOSArMTQxNywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwog
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRl
ciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlv
biBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4K
LSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xMzU0
LDcgKzE0NjEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2Fs
bCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1l
dGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMzczLDcgKzE0ODQsOCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGpp
dCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjM7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTM5Miw5ICsxNTA0
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVh
ZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0
LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBl
bHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKQEAgLTE0
MTgsMTEgKzE1MzEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUp
LAogICAgICAgICBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3REaXJlY3Qp
OwotICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0x
NDY1LDcgKzE1NzcsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhGdW5jdGlvbigpKTsKKyAgICBDYWxsIGNh
bGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5j
dGlvbigpOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtMTQ4MSw3ICsxNTk3LDggQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBq
aXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIyOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTE1MDAsOSArMTYx
NywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVh
ZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0
LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBl
bHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTUyMSw4ICsxNjM5
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJh
c2VWUmVnKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZWdUMSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTU2
NCw3ICsxNjgyLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNl
CisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRWUmVnLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xNTg4LDEwICsxNzEwLDEzIEBAIHZv
aWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIs
IHByb2ZpbGUpOwogCiAgICAgSklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdU
Mik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2luQnlWYWxzLmFwcGVuZChn
ZW4pOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwpAQCAtMTYzNCw3ICsxNzU5
LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJh
dGlvbkluQnlWYWxPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplOworICAgIGVsc2UKKyAg
ICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIHJldHVyblZhbHVlR1BSKTsKQEAgLTI4MjQsOCArMjk1Myw4IEBAIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQg
cHV0S2luZCwKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBy
ZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1Qx
LCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI4MzUsNyArMjk2
NCwxMyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElk
KE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRv
ciBvbmx5IHByZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZl
IHRvIHJlbG9hZCB0aGUgdGFnLgogICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKIAotICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMs
IHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMo
KSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24g
PSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2Vu
LnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25B
cmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdz
KHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5y
YXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHVi
SW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApA
QCAtMjg4NywyOSArMzAyMiwyOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogCiAgICAgc3dp
dGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRE
b3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVt
aXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENv
bnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAg
ICAgICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAg
ICAgbmVlZHNMaW5rRm9yV3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHR5cGVkQXJyYXlUeXBlRm9y
SklUQXJyYXlNb2RlKGFycmF5TW9kZSk7CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKLSAgICAg
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQ
dXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0ciwgdHlwZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50
NjRBcnJheSBpbiBJQwogICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBCaWdJbnQ2NEFycmF5IC8g
QmlnVWludDY0QXJyYXkgbmV2ZXIgY29tZXMgaGVyZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKICAgICAgICAgICAgIEFTU0VS
VChpc0Zsb2F0KHR5cGUpKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51
bGxwdHIsIHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI5MzYs
OCArMzA3MSwxNCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qIGJ5VmFsSW5mbwogICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgICAgICJC
YXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
dG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFs
dWUoKSk7CiAgICAgfQotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
PmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5m
by0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAg
YnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5z
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVw
YXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxH
ZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8gVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1bml0IChK
SVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVjdGVkIHNw
ZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgpAQCAtMjk3Niw4ICszMTE3LDEzIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BCiAgICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGgg
Y2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
cHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2Nr
KS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8t
PnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRk
cmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJl
dHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0
ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1
YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpKTsKKyAg
ICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgpAQCAtMzAxNCwxNSArMzE2MCwyMCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5
VmFsSW5mbywgUmV0dXJuQWRkcmVzcwogICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCVzIHdp
dGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVw
IiwgKHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0KSA/ICJfZGlyZWN0IiA6ICIiLCBwcm9wZXJ0
eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+c3R1Yklu
Zm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChi
eVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRy
VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6
RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlW
YWxHZW5lcmljKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IENvZGVM
b2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5l
LT5jb2RlKCkuY29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBw
dXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJp
YyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICB9IGVsc2UgeworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCwgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENv
ZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8v
IFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24g
dW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBl
Y3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWw+KEJ5VmFsSW5mbyosIFJl
dHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogdGVtcGxhdGUg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbERp
cmVjdD4oQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRl
bnRpZmllcik7CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVy
SUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzAzOCw3ICszMTg5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsK
KyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBi
cmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworICAg
ICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVt
cFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVjdFR5
cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hh
cGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisKICAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7
CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBB
ZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAg
ICBsb2FkRG91YmxlKEJhc2VJbmRleChzY3JhdGNoLCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIGZw
UmVnVDApOwpAQCAtMzA0Nyw3ICszMjA3LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3Vi
bGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICBy
ZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNM
b2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdU
eXBlIGV4cGVjdGVkU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2Fk
KGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8sIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBlKQogewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CkBAIC0zMDY1LDcgKzMyMjUsMTYgQEAg
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbios
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAg
IGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJ
bW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAg
YXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1t
MzIoZXhwZWN0ZWRTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mo
JmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5n
LCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIo
ZXhwZWN0ZWRTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0Ojpi
dXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFZhbHVlKEJhc2VJbmRleChzY3JhdGNo
LCBwcm9wZXJ0eSwgVGltZXNFaWdodCksIHJlc3VsdCk7CkBAIC0zMDc0LDcgKzMyNDMsNyBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6
SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFn
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbykKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFz
ZSA9IHJlZ1QwOwpAQCAtMzA5Myw3ICszMjYyLDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJh
eVN0b3JhZ2VTaGFwZSksIGluZGV4aW5nLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hh
YmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9y
YWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworCisgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5mbykgewor
ICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBz
Y3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbElu
Zm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAg
ICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoLCBUcnVzdGVkSW1t
MzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3ZlLCBzY3JhdGNo
LCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hh
cGUpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JF
cXVhbCwgcHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5n
dGhPZmZzZXQoKSkpKTsKQEAgLTMxMDUsNyArMzI4Myw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJy
YXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9m
aWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzEzMCw3ICszMzA4LDE3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAg
IGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5
U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJs
eVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAg
ICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJy
YW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJh
eVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZh
bEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAg
ICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gs
IFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0
Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwogICAgIGxv
YWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwg
bGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3Bl
cnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNp
YWxDYXNlKHByb2ZpbGUpOwpAQCAtMzE4MSw3ICszMzY5LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBUeXBlZEFycmF5VHlwZSB0eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlW
YWxJbmZvKiBieVZhbEluZm8sIFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwpAQCAtMzIwNiw3ICszMzk0LDE3
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
IGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkp
KTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7
CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlw
ZSA9IGJyYW5jaDMyKEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlw
ZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNz
KCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNj
cmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJs
eVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKKwog
ICAgIGxvYWQzMihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSwgbGF0ZVNjcmF0Y2gyKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3cs
IHByb3BlcnR5LCBsYXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5k
c1NwZWNpYWxDYXNlKHByb2ZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggODU1N2QyZGVjZTVlNTY5NGY3ODE4
MzBlMTI2MDI2YTNlNmMyZTYwZC4uY2NkMjQ0ZDFhZGVmMmYyZWJjYzFlODg0OTYxMWY5ODk4ZGIw
ZDM3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdExv
YWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKICAg
ICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBiYXNl
UmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBiYXNlUmVncywgcmVzdWx0UmVncywg
SW52YWxpZEdQUlJlZywgcmVnVDQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZGVsQnlJZHMuYXBw
ZW5kKGdlbik7CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwgcHJvcGVydHlSZWdzLnRhZ0dQUigpKTsKIAogICAg
IEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBw
cm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIHJlZ1Q0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZh
bGlkR1BSUmVnLCByZWdUNCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTI1Nyw4ICsyNTcsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhy
ZWdUMSwgcmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3Mp
OworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6R2V0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBK
SVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHJlc3VsdFJlZ3MpOworICAgICAg
ICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CkBAIC0zOTMsOCArMzkz
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
YmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpTZXRQcml2
YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpC
YXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdz
LCBJbnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vz
c2VzLmFwcGVuZChnZW4pOwpAQCAtNDMzLDggKzQzMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2No
ZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkp
OwogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdz
KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKQEAg
LTQ4NiwxNiArNDg2LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNo
b29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEpJ
VEludDMyOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVERvdWJs
ZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRU
eXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJVENvbnRpZ3Vv
dXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJ
VEFycmF5U3RvcmFnZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3RvcmFnZVB1dEJ5
VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAtNTExLDcgKzUxMSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklU
OjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1No
YXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtNTIw
LDYgKzUyMCw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAKICAgICBKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5mbyk7CiAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKENvbnRpZ3Vv
dXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNTcyLDcgKzU3Myw3IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3Qg
SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykK
IHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTU4MSw2ICs1
ODIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIAorICAgIFVOVVNFRF9QQVJBTShieVZhbEluZm8pOwogICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VT
aGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSwgcmVnVDMpOwpAQCAtNjYwLDggKzY2Miw4IEBAIHZvaWQgSklUOjplbWl0
X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29k
ZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRS
ZWdzLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6OlRyeUdl
dEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03
MDEsOCArNzAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWRE
aXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVn
cywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc0OCw4ICs3NTAsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApOwogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBy
ZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC03
OTEsOCArNzkzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50
KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDQsIHJlZ1QzKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUNCwgcmVnVDMpLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC04
MzUsOSArODM3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICpp
ZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEludmFsaWRHUFJSZWcsCiAgICAgICAgIHJl
Z1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVj
dCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwpAQCAtODgyLDggKzg4NCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIEpJVEluQnlJZEdlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwg
SW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9pbkJ5SWRzLmFwcGVuZChnZW4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCmluZGV4IDg4MTQ2
NDBlNmFjY2VhYzFiOWIwNjhhNDBjODk0MjgzNDg2Y2RmYWIuLjlkM2Q3NmI0M2I0NmEyM2FiMGQz
ODY4ZTlhZGRiODMxNGVjMDkzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJSb3V0aW5lLmgKQEAgLTM1LDYgKzM1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSklU
U3R1YlJvdXRpbmVTZXQ7CiBjbGFzcyBWTTsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCit1c2luZyBT
dHJ1Y3R1cmVJRCA9IHVpbnQzMl90OworI2Vsc2UKK3VzaW5nIFN0cnVjdHVyZUlEID0gU3RydWN0
dXJlKjsKKyNlbmRpZgorCitjbGFzcyBBY2Nlc3NDYXNlOworCiAvLyBUaGlzIGlzIGEgYmFzZS1j
bGFzcyBmb3IgSklUIHN0dWIgcm91dGluZXMsIGFuZCBhbHNvIHRoZSBjbGFzcyB5b3Ugd2FudAog
Ly8gdG8gaW5zdGFudGlhdGUgZGlyZWN0bHkgaWYgeW91IGhhdmUgYSByb3V0aW5lIHRoYXQgZG9l
cyBub3QgbmVlZCBhbnkKIC8vIGhlbHAgZnJvbSB0aGUgR0MuIElmIGluIGRvdWJ0LCB1c2Ugb25l
IG9mIHRoZSBvdGhlciBzdHViIHJvdXRpbmVzLiBCdXQKQEAgLTEwMyw2ICsxMTEsNyBAQCBjbGFz
cyBKSVRTdHViUm91dGluZSB7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IG1fY29kZTsKICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OworICAgIG11dGFi
bGUgdW5zaWduZWQgbV9oYXNoIHsgMCB9OwogfTsKIAogLy8gSGVscGVyIGZvciB0aGUgY3JlYXRp
b24gb2Ygc2ltcGxlIHN0dWIgcm91dGluZXMgdGhhdCBuZWVkIG5vIGhlbHAgZnJvbSB0aGUgR0Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuY3BwCmluZGV4IDFmNzYwNjg2MjczZGRhODFjYmI2ZDAxY2QyMWRkMDk4OWNj
NmUyYjguLjQxMTViYTI1Y2VkMTYyM2IzYTI4NTE3ZWNiNmQyYjg1NTk4MGY2ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVk
ZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxDb2RlT3JpZ2luLmgiCkBAIC02Nyw3ICs2OCw3IEBA
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgK
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBj
b2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxs
Q2FzZT4mIGNhc2VzLAogICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCi0g
ICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCisgICAgOiBHQ0F3YXJlSklU
U3R1YlJvdXRpbmUoY29kZVJlZikKICAgICAsIG1fdmFyaWFudHMoY2FzZXMuc2l6ZSgpKQogICAg
ICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CkBAIC04MCw2ICs4MSw3IEBA
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgK
ICAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nUG9seW1vcnBoaWNDYWxsKGNhbGxl
ckZyYW1lLCBtX2NhbGxOb2Rlcy5hZGQoJmluZm8pKTsKICAgICB9CiAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKKyAgICBtYWtlR0NBd2FyZSh2bSk7CiB9CiAKIFBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lOjp+UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDA3MjlkZTYyZjc0YTA3YWI2MjRiNTcyMjM5YjA4
NDEwNGNiY2I0ZmUuLmI1YWE3Mjc1ZDMxMjIwZDEwZTdjMWY5YWRhMTVhNWZjYzcxNDhlMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNzEsOCArNzEsMTEgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IHJl
YWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNhbGw8
SlNJbnRlcm5hbFB0clRhZz4gY2FsbCkKK3N0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+IHJlYWRQdXRJQ0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKIHsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAg
ICAgICAgcmV0dXJuIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlvbi5yZXRhZ2dlZDxDRnVuY3Rpb25Q
dHJUYWc+KCk7CisgICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsID0g
c3R1YkluZm8ubV9zbG93UGF0aENhbGxMb2NhdGlvbjsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAg
ICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6RlRMSklUKSB7CiAgICAgICAg
IEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPiB0YXJnZXQgPSBNYWNyb0Fzc2VtYmxlcjo6cmVh
ZENhbGxUYXJnZXQ8SklUVGh1bmtQdHJUYWc+KGNhbGwpOwpAQCAtMTA1LDYgKzEwOCwxNSBAQCB2
b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxv
Y2F0aW9uQ2FsbDxKU0ludGVybmFsUAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChj
YWxsLCBuZXdDYWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpOwogfQog
CitzdGF0aWMgdm9pZCByZXBhdGNoU2xvd1BhdGhDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
bmV3Q2FsbGVlRnVuY3Rpb24pCit7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpIHsK
KyAgICAgICAgc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uID0gbmV3Q2FsbGVlRnVuY3Rpb24ucmV0
YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG5ld0NhbGxlZUZ1bmN0aW9uKTsKK30KKwogZW51bSBJbmxpbmVDYWNoZUFjdGlv
biB7CiAgICAgR2l2ZVVwT25DYWNoZSwKICAgICBSZXRyeUNhY2hlTGF0ZXIsCkBAIC0yMDksNyAr
MjIxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICBKU0NlbGwqIGJhc2VDZWxs
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBjb25zdCBib29sIGlzUHJpdmF0ZSA9IGtp
bmQgPT0gR2V0QnlLaW5kOjpQcml2YXRlTmFtZSB8fCBraW5kID09IEdldEJ5S2luZDo6UHJpdmF0
ZU5hbWVCeUlkOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNl
OworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewogICAgICAgICAgICAgaWYg
KGlzSlNBcnJheShiYXNlQ2VsbCkpIHsKQEAgLTIxOSw3ICsyMzEsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5l
ID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3RoKHN0dWJJbmZvLCBqc0Nhc3Q8SlNB
cnJheSo+KGJhc2VDZWxsKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2Rl
SW5saW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVP
cHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1p
emluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8uaW5pdEFycmF5TGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMjcsMTAgKzIz
OSwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAKICAgICAgICAgICAgICAgICBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVu
Z3RoLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJh
c2VDZWxsKSkgewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9PSBD
YWNoZVR5cGU6OlVuc2V0ICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgo
c3R1YkluZm8pKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSgpID09
IENhY2hlVHlwZTo6VW5zZXQKKyAgICAgICAgICAgICAgICAgICAgJiYgSW5saW5lQWNjZXNzOjpp
c0NhY2hlYWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xl
bmd0aChzdHViSW5mbyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5s
aW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlT3B0aW1pemlu
Z0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8u
aW5pdFN0cmluZ0xlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjgyLDEyICsyOTUs
MTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgICYmICFzbG90Lndh
dGNocG9pbnRTZXQoKQogICAgICAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAgICAgICYmICFsb2FkVGFyZ2V0RnJvbVBy
b3h5KSB7Ci0KICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxp
bmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5QWNjZXNzKHN0dWJJbmZvLCBzdHJ1Y3R1cmUs
IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2Rl
SW5saW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6R2V0QnlTZWxm
UGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHBy
b3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNl
bWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBw
cm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLmluaXRHZXRCeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJl
LCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTQyNSw3ICs0
MzcsMjAgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpHZXRCeVJlcGxhY2VXaXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSks
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSksIHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlVmFsdWUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAg
ICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6
V2l0aFRoaXM6CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6VHJ5OgorICAgICAgICAgICAg
Y2FzZSBHZXRCeUtpbmQ6OkRpcmVjdDoKKyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2
YXRlTmFtZUJ5SWQ6CisgICAgICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNK
dW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICAgICAgICAgIGNh
c2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywg
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNDM5LDcgKzQ2NCw3IEBAIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJh
CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAog
ICAgIGlmICh0cnlDYWNoZUdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUs
IHByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0g
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlR2V0
QnlGdW5jdGlvbihraW5kKSk7CiB9CiAKIApAQCAtNTI5LDcgKzU1NCw3IEBAIHN0YXRpYyBJbmxp
bmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdp
dGhKdW1wLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcigpKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwot
ICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAg
ICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lu
bGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01
NDAsNyArNTY1LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKIHZvaWQgcmVwYXRjaEFycmF5
R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewogICAgIGlmICh0cnlDYWNoZUFycmF5R2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2UsIGluZGV4LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsK
IH0KIAogc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0
IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2luZCBwdXRLaW5kKSAtPiBkZWNsdHlwZSgmb3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkKQEAgLTYzNiw3ICs2NjEsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jawogICAgICAgICBpZiAoaXNQcm94eSAmJiAocHV0S2luZCA9PSBQdXRLaW5k
OjpEaXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2
YXRlRmllbGREZWZpbmUpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0
cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgICAgIGlmIChzbG90LmJhc2UoKSA9PSBiYXNl
VmFsdWUgJiYgc2xvdC5pc0NhY2hlYWJsZVB1dCgpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC50
eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpFeGlzdGluZ1Byb3BlcnR5KSB7CkBAIC02NTgsNyAr
NjgzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgYm9v
bCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0
eVJlcGxhY2Uoc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5SWRTZWxmUGF0Y2gsIG9sZFN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRC
eUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXpp
bmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgc3R1YkluZm8uaW5pdFB1dEJ5SWRSZXBsYWNlKGxvY2tlciwgY29kZUJsb2NrLCBvbGRTdHJ1
Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC04MDEsNyArODI2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAg
IAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAKLSAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAg
IElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgxNSw3ICs4NDAsNyBAQCB2b2lkIHJlcGF0Y2hQ
dXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKU1ZhbHVlCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwogICAgIAogICAgIGlmICh0cnlDYWNoZVB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBw
dXRLaW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVH
ZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgcmVwYXRjaFNs
b3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlk
RnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgRGVsZXRlUHJvcGVydHlTbG90JiBzbG90LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1l
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCkBAIC04NDYsNyArODcxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
RGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAg
aWYgKG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICByZXR1cm4gUmV0
cnlDYWNoZUxhdGVyOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdD
YXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAo
c2xvdC5pc0RlbGV0ZUhpdCgpKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBuZXdPZmZz
ZXQgPSBpbnZhbGlkT2Zmc2V0OwpAQCAtODc0LDcgKzg5OSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgewogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAgICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7Ci0gICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNj
ZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg5MSwxNSAr
OTE2LDE1IEBAIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRl
QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNo
ZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBi
YXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6
OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0g
RGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRl
QnlJZEdlbmVyaWMpOworICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ss
IHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOworICAgICAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25E
ZWxldGVCeVZhbEdlbmVyaWMpOwogICAgIH0KIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlSW5CeSgKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lLAotICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQorICAgIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5k
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTkzNyw3ICs5NjIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVJbkJ5KAogICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5s
aW5lKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5CeUlkU2VsZlBh
dGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJh
c2UpKTsKICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zdGFydFdhdGNoaW5nUHJvcGVy
dHlGb3JSZXBsYWNlbWVudHModm0sIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICAgICAg
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgICAgICAgICAg
ICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlv
bkluQnlJZE9wdGltaXplKTsKICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEluQnlJ
ZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRl
cjsKICAgICAgICAgICAgICAgICB9CkBAIC05ODQsNyArMTAwOSw3IEBAIHN0YXRpYyBJbmxpbmVD
YWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJbkFk
ZEFjY2Vzc0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNl
KCkgPT0gYmFzZSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdD
YXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAorICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHdhc0Zv
dW5kID8gQWNjZXNzQ2FzZTo6SW5IaXQgOiBBY2Nlc3NDYXNlOjpJbk1pc3MsIHByb3BlcnR5TmFt
ZSwgd2FzRm91bmQgPyBzbG90LmNhY2hlZE9mZnNldCgpIDogaW52YWxpZE9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKIAogICAg
ICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgcHJvcGVydHlOYW1lLCBXVEZNb3ZlKG5l
d0Nhc2UpKTsKQEAgLTk5Myw3ICsxMDE4LDE1IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluQnkoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhK
dW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFzZSgpID09IGJh
c2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNv
ZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgp
KSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICAgICAgY2FzZSBJbkJ5
S2luZDo6Tm9ybWFsOgorICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICAgICAgICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNj
ZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMDcsMTIgKzEwNDAsMTIgQEAgdm9pZCBy
ZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSlNPYmplY3QqIGIKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYgKHRy
eUNhY2hlSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlO
YW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICBp
ZiAodHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNo
ZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNl
T2JqZWN0LT5jbGFzc0luZm8oZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2lu
ZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZEdlbmVyaWMp
OworICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBv
cGVyYXRpb25JbkJ5SWRHZW5lcmljKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIG9wZXJhdGlvbkluQnlWYWxHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0
aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOwogICAg
IH0KIH0KIApAQCAtMTAzOCw3ICsxMDcxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVydHkgPSB0
cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkNoZWNrUHJpdmF0ZUJyYW5kQWRkQWNjZXNz
Q2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNl
OjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1
cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0
ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIHN0cnVjdHVyZSk7CiAK
ICAgICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3
Q2FzZSkpOwogCkBAIC0xMDQ2LDcgKzEwNzksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6
Q2hlY2tQcml2YXRlQnJhbmRSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCks
IGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3Vs
dC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTA2MCw3ICsxMDkzLDcgQEAgdm9pZCByZXBhdGNoQ2hlY2tQcml2YXRl
QnJhbmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKICAgICBp
ZiAodHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZU9iamVjdCwgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0
ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVNl
dFByaXZhdGVCcmFuZCgKQEAgLTEwOTcsNyArMTEzMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAgICAgYm9vbCBpc0Jhc2VQcm9wZXJ0
eSA9IHRydWU7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJpdmF0ZUJyYW5kQWRkQWNj
ZXNzQ2FzZSwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5
KSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nl
c3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgb2xk
U3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICBSZWY8QWNjZXNzQ2FzZT4gbmV3Q2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFu
ZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CiAKICAgICAgICAgcmVzdWx0ID0gc3R1
YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBFQ01B
TW9kZTo6c3RyaWN0KCksIGJyYW5kSUQsIFdURk1vdmUobmV3Q2FzZSkpOwogCkBAIC0xMTA1LDcg
KzExMzgsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJh
bmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlNldFByaXZhdGVCcmFuZFJlcGxhY2VX
aXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5
KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2Rl
KCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZv
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkp
OworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMTE5LDcgKzExNTIsNyBAQCB2b2lkIHJlcGF0Y2hTZXRQcml2YXRlQnJhbmQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAgaWYgKHRyeUNhY2hl
U2V0UHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRT
dHJ1Y3R1cmUsICBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMpOworICAgICAgICByZXBh
dGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0
YW5jZU9mKApAQCAtMTEzOSw3ICsxMTcyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRy
eUNhY2hlSW5zdGFuY2VPZigKICAgICAgICAgCiAgICAgICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1
ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5z
dHJ1Y3R1cmUodm0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2Fz
ZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAgICAgICAgIEpTT2JqZWN0
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHByb3RvdHlwZVZhbHVl
KTsKICAgICAgICAgaWYgKHByb3RvdHlwZSkgewogICAgICAgICAgICAgaWYgKCFqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIHZhbHVlKSkgewpAQCAtMTE3MywxMCArMTIwNiw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgICAgICBMT0df
SUMoKElDRXZlbnQ6Okluc3RhbmNlT2ZSZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCksIElkZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLQotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hKdW1wKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwKLSAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVz
dWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAg
ICB9CiAgICAgfQogICAgIApAQCAtMTE5MSw3ICsxMjIxLDcgQEAgdm9pZCByZXBhdGNoSW5zdGFu
Y2VPZigKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CiAgICAgaWYgKHRyeUNhY2hlSW5zdGFuY2VPZihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgdmFs
dWVWYWx1ZSwgcHJvdG90eXBlVmFsdWUsIHN0dWJJbmZvLCB3YXNGb3VuZCkgPT0gR2l2ZVVwT25D
YWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKKyAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25J
bnN0YW5jZU9mR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyB2b2lkIGxpbmtTbG93UGF0aFRvKFZNJiwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4gY29kZVJlZikKQEAgLTEyMDgsNyArMTIzOCw3IEBAIHN0YXRpYyB2b2lk
IGxpbmtTbG93Rm9yKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiB7CiAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB2aXJ0dWFsVGh1bmsg
PSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgbGlua1Nsb3dQYXRoVG8o
dm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlua0luZm8uc2V0U2xv
d1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOwor
ICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0
ZSh2bSwgdmlydHVhbFRodW5rKSk7CiB9CiAKIHN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3du
ZXIoSlNDZWxsKiBjYWxsZWUpCkBAIC0xMzI2LDcgKzEzNTYsNyBAQCBzdGF0aWMgdm9pZCBsaW5r
VmlydHVhbEZvcihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWxsTGlua0luZm8mIGNh
bGxMaW5rSQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiB2aXJ0dWFsVGh1bmsgPSB2aXJ0dWFsVGh1bmtGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAg
cmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNhbGxMaW5r
SW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0dWFsVGh1
bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91
dGluZTo6Y3JlYXRlKHZtLCB2aXJ0dWFsVGh1bmspKTsKICAgICBjYWxsTGlua0luZm8uc2V0Q2xl
YXJlZEJ5VmlydHVhbCgpOwogfQogCkBAIC0xNjQ3LDE0ICsxNjc3LDI2IEBAIHZvaWQgbGlua1Bv
bHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ2FsCiAKIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUtpbmQga2luZCkKIHsKLSAgICBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlv
biwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7Ci0gICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CisgICAgc3dpdGNoIChr
aW5kKSB7CisgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6
V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKKyAgICBjYXNlIEdldEJ5S2luZDo6
RGlyZWN0OgorICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ6CisgICAgICAgIElu
bGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICBj
YXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHVzaW5n
IEZ1bmN0aW9uVHlwZSA9IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemUpOwotICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgRnVu
Y3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9u
VHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxvY2ssIHN0dWJJbmZvKS5leGVjdXRhYmxl
QWRkcmVzcygpKTsKICAgICBGdW5jdGlvblR5cGUgb3B0aW1pemVkRnVuY3Rpb247CiAgICAgaWYg
KHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdCB8fCB1bm9wdGlt
aXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAg
b3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CkBAIC0x
NjcxLDQ4ICsxNzEzLDQ5IEBAIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9u
ID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAgIH0KIAotICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlvbik7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAg
IHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3B0aW1pemVkRnVuY3Rp
b24pOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2Nr
LCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQga2luZCkKIHsKICAgICBpZiAo
a2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbHNlCi0gICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCi17Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0
dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsK
KyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVt
cEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAK
IHZvaWQgcmVzZXRJbkJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIEluQnlLaW5kIGtpbmQpCiB7Ci0gICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5v
cm1hbCkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBl
bHNlCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwotICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEluQnlLaW5kOjpO
b3JtYWw6CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1
YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEluQnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2Fs
bChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOworICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nl
c3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAotdm9p
ZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNl
dEluc3RhbmNlT2YoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKIHsKLSAgICByZXNldFBhdGNoYWJsZUp1bXAoc3R1YkluZm8pOworICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGlt
aXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRDaGVja1By
aXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXpl
KTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZv
LnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJ
bmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3Mo
Y29kZUJsb2NrLCBzdHViSW5mbyk7CiB9CiAKIHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFj
Y2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExv
Y2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5m
byk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlD
Q29kZVB0cihWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNPYmplY3QqIGNh
bGxlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggOTI4Yzk5YjEyOTE5YTFh
MDFhMzQyYTY1Zjc4NWM0ZTQ2YTBlMWZmNy4uNTlhMTViOTBlYzk0MWIwMWZmODYxNTc1OGNiNzFk
NzVmMmVlZTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0
QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxC
eUtpbmQpOwogdm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBJ
bkJ5S2luZCk7Ci12b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9p
ZCByZXNldEluc3RhbmNlT2YoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQg
cmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwog
dm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiwgQ29kZUxvY2F0aW9u
Q2FsbDxKU0ludGVybmFsUHRyVGFnPiwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdD
YWxsZWVGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CmluZGV4IDQxNjMyNDgxOTI1YzQ1NWMwN2ZlNmJiMzJmMzEzNjlhNzRhOTRhOTIuLjlkMjNjMjYx
MmExM2VlOTkwZDczMWEwMjRiNTMwN2IwNmIzN2FmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC00MzMsNiArNDMzLDExIEBAIHZvaWQgT3B0aW9uczo6
cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAgICAgT3B0aW9uczo6dXNlQ29uY3VycmVudEdD
KCkgPSBmYWxzZTsKICNlbmRpZgogCisgICAgaWYgKCFpc0FSTTY0KCkpCisgICAgICAgIE9wdGlv
bnM6OnVzZURhdGFJQygpID0gZmFsc2U7CisgICAgaWYgKCFPcHRpb25zOjp1c2VEYXRhSUMoKSkK
KyAgICAgICAgT3B0aW9uczo6dXNlRGF0YUlDSW5PcHRpbWl6aW5nSklUKCkgPSBmYWxzZTsKKwog
ICAgIC8vIEF0IGluaXRpYWxpemF0aW9uIHRpbWUsIHdlIG1heSBkZWNpZGUgdGhhdCB1c2VKSVQg
c2hvdWxkIGJlIGZhbHNlIGZvciBhbnkKICAgICAvLyBudW1iZXIgb2YgcmVhc29ucyAoaW5jbHVk
aW5nIGZhaWxpbmcgdG8gYWxsb2NhdGUgSklUIG1lbW9yeSksIGFuZCB0aGVyZWZvcmUsCiAgICAg
Ly8gd2lsbCAvIHNob3VsZCBub3QgYmUgYWJsZSB0byBlbmFibGUgYW55IEpJVCByZWxhdGVkIHNl
cnZpY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5k
ZXggYzlkZTZhOGEzOGMxMWI2OTM3NjE5YzFlNTk0YWQxNDUxYjNmMWE5OS4uNDA4ZmJiNjljY2Iw
OWExMTNkMTIyM2NjMjQ1NWVkNjZkM2E1YjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzgsNiArNTM4LDggQEAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZl
ciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlVG9wTGV2ZWxBd2Fp
dCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtleXdvcmQgYXQgdGhlIHRvcCBsZXZl
bCBvZiBhIG1vZHVsZS4iKSBcCiAgICAgdihCb29sLCB2ZXJib3NlRXhlY3V0YWJsZVBvb2xBbGxv
Y2F0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VEYXRhSUMs
IGlzQVJNNjQoKSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VEYXRhSUNJbk9w
dGltaXppbmdKSVQsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVx
dWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuaAppbmRleCA4ZDA3YTI3NTc4MzM0MGJlYTRlMTBkZGE0OTE2M2QxM2I0OTgzZjEy
Li5iOGRkNGNiZDVkMjgxMDE1N2Y5YTk5YmQ5Y2IwZjA1NTFhMzZkOWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgU3RydWN0dXJlOwogCiAjaWYgVVNFKEpTVkFM
VUU2NCkKLXR5cGVkZWYgdWludDMyX3QgU3RydWN0dXJlSUQ7Cit1c2luZyBTdHJ1Y3R1cmVJRCA9
IHVpbnQzMl90OwogCiBpbmxpbmUgU3RydWN0dXJlSUQgbnVrZWRTdHJ1Y3R1cmVJREJpdCgpCiB7
CkBAIC01OCw3ICs1OCw3IEBAIGlubGluZSBTdHJ1Y3R1cmVJRCBkZWNvbnRhbWluYXRlKFN0cnVj
dHVyZUlEIGlkKQogICAgIHJldHVybiBpZCAmIH5udWtlZFN0cnVjdHVyZUlEQml0KCk7CiB9CiAj
ZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLXR5cGVkZWYgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJ
RDsKK3VzaW5nIFN0cnVjdHVyZUlEID0gU3RydWN0dXJlKjsKIAogaW5saW5lIFN0cnVjdHVyZUlE
IG51a2VkU3RydWN0dXJlSURCaXQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IGJlYWM4NmViMGViOGNmNTEzOGVmYmZkYzM4MjM0NzQyYjhjYmRlMTEuLjRjMWJlNDE4
MWZkMjc5ODM0ODBmYmI5NWI3M2U1NDE1YzdmNGM2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJWTS5oIgogCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIkFnZ3JlZ2F0
ZUVycm9yLmgiCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkJpZ0ludE9iamVjdC5o
IgpAQCAtNTY3LDYgKzU2OCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogI2VuZGlmIC8vIEVO
QUJMRShGVExfSklUKQogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZv
cihDb2RlRm9yQ2FsbCk7CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5l
Rm9yKENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBtX3NoYXJlZEpJVFN0dWJzID0gbWFrZVVu
aXF1ZTxTaGFyZWRKSVRTdHViU2V0PigpOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
CkBAIC02NTUsNiArNjU3LDEwIEBAIFZNOjp+Vk0oKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3NjcmF0Y2hCdWZmZXJzLnNpemUoKTsgKytpKQogICAgICAgICBWTU1hbGxvYzo6ZnJl
ZShtX3NjcmF0Y2hCdWZmZXJzW2ldKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKEpJVCkKKyAgICBt
X3NoYXJlZEpJVFN0dWJzID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiB2b2lkIFZNOjpwcmltaXRp
dmVHaWdhY2FnZURpc2FibGVkQ2FsbGJhY2sodm9pZCogYXJndW1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBlOWUwNmE3NjVhYzZiYjBjZGEyM2I0ZTVmYTZmNjdkMGYyYTYx
ZDU1Li40MjBkZWMwYjhmZTU4MmJlNzY1ZDJiYWM2MjU4NzM3ZjQzYmY2ZTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE3NSw2ICsxNzUsNyBAQCBjbGFzcyBSZWdpc3RlckF0
T2Zmc2V0TGlzdDsKIGNsYXNzIFNhbXBsaW5nUHJvZmlsZXI7CiAjZW5kaWYKIGNsYXNzIFNoYWRv
d0NoaWNrZW47CitjbGFzcyBTaGFyZWRKSVRTdHViU2V0OwogY2xhc3MgU2NyaXB0RXhlY3V0YWJs
ZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogY2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsKQEAg
LTg0NiwxMSArODQ3LDEzIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SklUVGh1bmtzPiBqaXRTdHViczsKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldENUSVN0dWIoVGh1bmtHZW5lcmF0b3IpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFyZWRKSVRTdHViU2V0PiBtX3NoYXJlZEpJVFN0dWJzOwog
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKICNlbmRpZgorCiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogZ2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDVjZjA2MGExZjM5YzI3NzcwY2QyNGJjMTQ0OGQ0NjlkMDBiOTE5NWEuLjEwYTlhMWEyYzAyYTdl
ZmQ3MzVhOWM2NWY1NTc3MWJiODQxNjk2ODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNi0wOCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFVzZSBEYXRhSUMg
Zm9yIEFjY2Vzc0Nhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAyMS0wNi0wNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBX
ZWJLaXQgc3VwcG9ydCBmb3IgTGl2ZSBUZXh0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpp
bmRleCBlNjE0MWI1ZTcyNDlhMGQzM2MwMzIyNTkyM2NlZTAxNzJkYTVmMGQzLi45Y2NkYTE4MzIy
Yzc2YzJkZDliNzdhOTIzY2UyZDFjOTNjODhlMDcxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKQEAgLTU1Miw3ICs1NTIsNyBAQCBCQVNFX09QVElPTlMgPSBbIi0tdXNlRlRMSklUPWZh
bHNlIiwgIi0tdXNlRnVuY3Rpb25Eb3RBcmd1bWVudHM9dHJ1ZSIsICItLXZhbGlkYQogRUFHRVJf
T1BUSU9OUyA9IFsiLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9s
ZEZvckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwg
Ii0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRG
b3JPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVw
PTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9y
T01HT3B0aW1pemVBZnRlcldhcm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9NR09wdGltaXplU29v
bj0yMCIsICItLW1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoPTE1MDAwMCIsICItLXVz
ZUVhZ2VyQ29kZUJsb2NrSmV0dGlzb25UaW1pbmc9dHJ1ZSIsICItLXJlcGF0Y2hCdWZmZXJpbmdD
b3VudGRvd249MCJdCiAjIE5PVEU6IFRlc3RzIHJlbHkgb24gdGhpcyB1c2luZyBzY3JpYmJsZUZy
ZWVDZWxscy4KIE5PX0NKSVRfT1BUSU9OUyA9IFsiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIiwg
Ii0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAwIiwgIi0tc2NyaWJibGVGcmVlQ2VsbHM9
dHJ1ZSJdCi1CM08xX09QVElPTlMgPSBbIi0tZGVmYXVsdEIzT3B0TGV2ZWw9MSJdCitCM08xX09Q
VElPTlMgPSBbIi0tZGVmYXVsdEIzT3B0TGV2ZWw9MSIsICItLXVzZURhdGFJQ0luT3B0aW1pemlu
Z0pJVD0xIl0KIEIzTzBfT1BUSU9OUyA9IFsiLS1tYXhERkdOb2Rlc0luQmFzaWNCbG9ja0ZvclBy
ZWNpc2VBbmFseXNpcz0xMDAiLCAiLS1kZWZhdWx0QjNPcHRMZXZlbD0wIl0KIEZUTF9PUFRJT05T
ID0gWyItLXVzZUZUTEpJVD10cnVlIl0KIEZPUkNFX0xMSU5UX0VYSVRfT1BUSU9OUyA9IFsiLS1m
b3JjZU9TUkV4aXRUb0xMSW50PXRydWUiXQpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgZGVmIHJ1bk5v
aXN5VGVzdE5vQ0pJVAogZW5kCiAKIGRlZiBydW5Ob2lzeVRlc3ROb0NKSVRCM08xCi0gICAgcnVu
Tm9pc3lUZXN0KCJmdGwtbm8tY2ppdCIsICItLXZhbGlkYXRlQnl0ZWNvZGU9dHJ1ZSIsICItLXZh
bGlkYXRlR3JhcGhBdEVhY2hQaGFzZT10cnVlIiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BU
SU9OUyArIEIzTzFfT1BUSU9OUykpCisgICAgcnVuTm9pc3lUZXN0KCJmdGwtbm8tY2ppdC1iM28x
IiwgIi0tdmFsaWRhdGVCeXRlY29kZT10cnVlIiwgIi0tdmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNl
PXRydWUiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgQjNPMV9PUFRJT05TKSkK
IGVuZAogCiBkZWYgcnVuTm9pc3lUZXN0RWFnZXJOb0NKSVQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430889</attachid>
            <date>2021-06-08 14:09:22 -0700</date>
            <delta_ts>2021-06-08 19:06:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210608140921.patch</filename>
            <type>text/plain</type>
            <size>451648</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzY2NDliOWYwZjdhNDg5ZGVlNmFhMjdkYWUyNmE4YWFkNTNiMDRiLi44MjI2OThlYmExMWIwNGIw
YzRkNDVlOWNiNzlhOTVjZmUxYjIxNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MDEgQEAKKzIwMjEtMDYtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbm9u
LXJlcGF0Y2hpbmcgSUMgZm9yIEJhc2VsaW5lIEpJVCBpbiBBUk02NC4KKyAgICAgICAgVGhpcyBk
b2VzIG5vdCB3b3JrIGluIG5vbi1BUk02NCBhcmNoaXRlY3R1cmVzIChpbmNsdWRpbmcgWDY0KSBk
dWUgdG8gdGhlIHVzZSBvZiBsaW5rLXJlZ2lzdGVyLgorCisgICAgICAgIDEuIFdlIGFkZCBub24t
cmVwYXRjaGluZyBJQywgd2hpY2ggaXMgZW5hYmxlZCBvbmx5IGluIEJhc2VsaW5lIGR1ZSB0byBw
ZXJmb3JtYW5jZSByZWFzb24uIFdlIGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgZXhpc3Rpbmcg
SUMgaW4gREZHIGFuZCBGVEwuIE5vbi1yZXBhdGNoaW5nIGluY2x1ZGVzIGZhc3QtcGF0aCwgYW5k
IHNsb3ctcGF0aCdzIG9wZXJhdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgMi4gV2Ugc3RpbGwga2Vl
cCBJbmxpbmVBY2Nlc3MgaW4gYWxsIHRpZXJzLiBSZW1vdmluZyB0aGF0IGNhdXNlcyAwLjMgfiAx
LjAlIHJlZ3Jlc3Npb24gaW4gU3BlZWRvbWV0ZXIyLiBUaGlzCisgICAgICAgICAgIG1lYW5zIHRo
YXQgd2Ugc3RpbGwgbmVlZCBzb21lIHJlcGF0Y2hpbmcgd2hlbiB3ZSBmaXJzdCBpbnRyb2R1Y2Ug
c3R1YnMuCisgICAgICAgIDMuIFdlIGFkZCBhIG1lY2hhbmlzbSB0byBzaGFyZSBnZW5lcmF0ZWQg
Y29kZSBzdHVicyBpbiBub24tcmVwYXRjaGluZyBJQy4gQ3VycmVudGx5LCBnZXR0ZXIgLyBzZXR0
ZXIgLyBjdXN0b20KKyAgICAgICAgICAgYWNjZXNzb3JzIGFyZSBleGNsdWRlZCBzaW5jZSB0aGVp
ciBjb2RlIHJlbGllcyBvbiBKU0dsb2JhbE9iamVjdCwgQ29kZUJsb2NrIGV0Yy4gd2hpY2ggYXJl
IG5vdCBpbmNsdWRlZCBpbgorICAgICAgICAgICBBY2Nlc3NDYXNlJ3MgZGF0YSBzdHJ1Y3R1cmUu
CisgICAgICAgIDQuIFRoaXMgcGF0Y2ggc3RpbGwgcmVsaWVzIG9uIHRoYXQgQ29kZUJsb2NrIHdp
bGwgYmUgZGVzdHJveWVkIHN5bmNocm9ub3VzbHkgc2luY2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhh
dCBzaGFyaW5nLWhhc2gtdGFibGUKKyAgICAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBhbHJlYWR5
LWRlYWQgSklUIGNvZGUgc3R1YnMuIFdlIGNhbiBmaXggaXQgKGUuZy4gYW5ub3RhdGluZyBlcG9j
aCB0byB0aGVzZSBzdHVicywgYnVtcCB0aGVtIGluCisgICAgICAgICAgIGZpbmFsaXplVW5jb25k
aXRpb25hbGx5KSwgYnV0IHdlIGF2b2lkIGRvaW5nIHRoYXQgdG8gcHJldmVudCBmcm9tIGZ1cnRo
ZXIgZW5sYXJnaW5nIHRoaXMgcGF0Y2guIFRoaXMgcGF0Y2ggaXMgYWxyZWFkeQorICAgICAgICAg
ICBzaWduaWZpY2FudCBpbiBpdHMgc2l6ZS4KKyAgICAgICAgNS4gQWRkZWQgY2FsbE9wZXJhdGlv
bihBZGRyZXNzKSBzdXBwb3J0IGluIENDYWxsSGVscGVycywgd2hpY2ggY2FuIHNhdmUgdGhlIHRh
cmdldCBpbiBub25BcmdHUFIwLCBhbmQgY2FsbCBpdCBzbyB0aGF0IHdlIGNhbiB1c2UKKyAgICAg
ICAgICAgQWRkcmVzcyBpbmNsdWRpbmcgR1BSIHdoaWNoIGlzIGFsc28gdXNlZCBmb3IgYXJndW1l
bnRzLgorCisgICAgICAgIFBlcmZvcm1hbmNlIGlzIG5ldXRyYWwgaW4gSmV0U3RyZWFtMiBhbmQg
U3BlZWRvbWV0ZXIyLiBCdXQgaXQgb2ZmZXJzIHRoZSB3YXkgdG8gcmVtb3ZlIHNvbWUgY29kZSBn
ZW5lcmF0aW9uIGluIEJhc2VsaW5lLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjRFLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsKToK
KyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6QWNjZXNz
Q2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgIChK
U0M6OkFjY2Vzc0Nhc2U6OmNhbkJlU2hhcmVkKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6Omhhc2ggY29uc3QpOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1
YlNldDo6SGFzaDo6S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpI
YXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6
U2hhcmVkSklUU3R1YlNldDo6SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0
dWJTZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6U2hhcmVkSklUU3R1YlNldDo6U2Vh
cmNoZXI6OlRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0
OjpTZWFyY2hlcjo6VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRT
dHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OlBvaW50ZXJUcmFuc2xhdG9yOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNoYXJl
ZEpJVFN0dWJTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OnJlbW92
ZSk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6OmZpbmQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAoSlNDOjpCeVZhbEluZm86OnNldFVwKToKKyAg
ICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24pOgorICAgICAgICAo
SlNDOjpCeVZhbEluZm86Om9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpT
Qzo6QnlWYWxJbmZvOjpvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmluaXRp
YWxpemVEaXJlY3RDYWxsKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXREaXJlY3RD
YWxsVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1c2VEYXRhSUMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjbG9u
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRET01K
SVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpnZXRT
Y3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MpOgorICAgICAgICAoSlNDOjpJbmxpbmVB
Y2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNj
ZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5j
ZU9mQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Oklu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludHJpbnNp
Y0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nh
c2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaDoKKyAg
ICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omhhc2ggY29uc3QpOgorICAg
ICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpvcGVyYXRvciE9KToKKyAgICAg
ICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6aW5zdGFsbFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2Vw
dGlvbnMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMpOgorICAg
ICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSk6CisgICAgICAgIChKU0M6OlBv
bHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsgY29uc3QpOgorICAgICAgICAoSlNDOjpQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuaDoKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94
eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm94eWFibGVBY2Nlc3ND
YXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2Fz
ZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0
TG9jYXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnBhdGNoYWJsZUp1
bXApOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkpJVENvbXBpbGVyOjphcHBlbmRDYWxsKToKKyAgICAgICAgKiBkZmcvREZHU2xv
d1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzbG93UGF0aElDQ2FsbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2Vs
bHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
Zik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1
c2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjphcHBlbmRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
YXBwZW5kQ2FsbFNldFJlc3VsdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldFByaXZhdGVOYW1lKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVByaXZhdGVCcmFu
ZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhY2hlZFB1
dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVs
QnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFy
ZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbCk6Cisg
ICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpGVEw6OmNhbGxP
cGVyYXRpb24pOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5oOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtl
eTo6U2xvd1BhdGhDYWxsS2V5KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6
OmluZGlyZWN0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxL
ZXk6OndpdGhDYWxsVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbEtleTo6
aGFzaCBjb25zdCk6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZU
TDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRWaXJ0dWFsQ2Fs
bCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6QXJnQ29sbGVjdGlv
bik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaFJlZ0Fy
Zyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6cHVzaEV4dHJh
UmVnQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNo
Tm9uQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRH
UFJBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQ
UkV4dHJhQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjph
ZGRTdGFja0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6
YWRkUG9rZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzdGFja0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2Fs
bEhlbHBlcnM6Om1hcnNoYWxsQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
Ojpwb2tlQXJndW1lbnRzQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3Rk
Ojppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46
OnZhbHVlKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0VudHJ5
SW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKToK
KyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAo
SlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1ha2VHQ0F3YXJlKToKKyAgICAgICAgKEpTQzo6
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6UG9seW1vcnBoaWNBY2Nlc3NKSVRT
dHViUm91dGluZSk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRp
bmU6Om9ic2VydmVaZXJvUmVmQ291bnQpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lOjpjb21wdXRlSGFzaCk6CisgICAgICAgIChKU0M6Ok1hcmtpbmdHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUpOgorICAgICAg
ICAoSlNDOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcjo6R0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpjcmVh
dGVJQ0pJVFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUU3R1YlJvdXRpbmUp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAg
ICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQ
b2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpjYXNlcyBjb25zdCk6CisgICAgICAgIChK
U0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OndlYWtTdHJ1Y3R1cmVzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6aGFzaCBj
b25zdCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJ
VENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6dXNlRGF0YUlDKToKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVy
YXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RDb21tb24pOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRC
eUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
OjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlk
R2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVs
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVREZWxC
eVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklURGVsQnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5C
eVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OmdlbmVyYXRl
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6
ZSk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAg
ICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0
QnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVy
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpzbG93
UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeUlkR2VuZXJh
dG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklURGVs
QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5
VmFsR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUR2V0QnlWYWxHZW5lcmF0
b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpz
bG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRGb3JBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6
OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4
ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9p
bmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfZW51
bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJp
dmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxX
aXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RG91Ymxl
TG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlTG9hZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEludFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlw
ZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJp
Y0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJvdXRpbmUu
aDoKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAg
ICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmVhZFB1
dElDQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OnJlcGF0Y2hTbG93UGF0aENhbGwpOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEdldEJ5KToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6cmVw
YXRjaEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAg
ICAgICAoSlNDOjpyZXBhdGNoUHV0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRl
QnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAoSlNDOjp0cnlD
YWNoZUluQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5CeSk6CisgICAgICAgIChKU0M6OnRy
eUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQ2hlY2tQcml2
YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hTZXRQcml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjp0cnlDYWNo
ZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5zdGFuY2VPZik6CisgICAgICAg
IChKU0M6OmxpbmtTbG93Rm9yKToKKyAgICAgICAgKEpTQzo6bGlua1ZpcnR1YWxGb3IpOgorICAg
ICAgICAoSlNDOjpyZXNldEdldEJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6cmVzZXREZWxCeSk6CisgICAgICAgIChKU0M6OnJlc2V0SW5CeSk6CisgICAg
ICAgIChKU0M6OnJlc2V0SW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OnJlc2V0Q2hlY2tQcml2
YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpyZXNldFNldFByaXZhdGVCcmFuZCk6CisgICAgICAg
IChKU0M6OnJlc2V0UGF0Y2hhYmxlSnVtcCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0
Y2guaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmg6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6
OlZNOjp+Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wNi0wNyAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzgzNzEgYW5kIHIyNzg0NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggNjA4NDY2ZDMz
NjIwODE0NzA3NTFiODZkZjg3ZTAyOTUzMWY0MTZlYS4uZDZmM2I3YWI5NzE4MmVlMGRjY2JlN2Q5
NjhjNjBkNDBlZDk4ZDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMjI1LDE5ICsyMjUsMTkgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAg
ICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+
KHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2Fs
bChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNh
bGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRh
ZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKICAgICAgICAgQVNTRVJU
KCFPcHRpb25zOjp1c2VKSVRDYWdlKCkgfHwgY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxl
clR5cGU6OkpJVCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJl
Z2lzdGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3Rl
cklEIHRhZykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRhZyAhPSBkYXRhVGVtcFJlZ2lz
dGVyKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIs
IHRhZyk7CisgICAgICAgIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbE9wZXJhdGlvbihjb25zdCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IG9wZXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAxMmE5N2EyZDI1ZDVlYmQxZTk5YTVlNWFjMjljMjI4OTNi
YTgzOGY5Li4xM2FiMDFjYTcwZWIxNGQ4ZTY1NmFmMjU5ODcwMzJkZjlkZmQwZTcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIEFjY2Vzc0Nhc2U6OkFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25k
aXRpb25TZXQuaXNWYWxpZCgpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29u
ZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNz
Q2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIEluSGl0OgpAQCAtMTA1LDEwICsxMDUsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vz
c1R5cGUKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0g
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9u
KAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24oCiAgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlLAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25k
aXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3ND
aGFpbikKIHsKQEAgLTEyMiwzNCArMTIyLDM0IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nl
c3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgVHJhbnNpdGlvbiwg
aWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShw
cm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpj
cmVhdGVEZWxldGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9s
ZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CiAgICAgQVNTRVJUKCFu
ZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgb2xkU3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5l
dyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0
cnVjdHVyZSwgeyB9LCB7IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NDYXNl
KHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9
LCB7IH0pKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNy
ZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1JlZjxBY2Nlc3NDYXNl
PiBBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2Fz
ZSh2bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0
LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNz
Q2FzZSh2bSwgb3duZXIsIENoZWNrUHJpdmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zm
c2V0LCBzdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQoCitSZWY8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAogICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2xk
U3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKLSAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgU2V0UHJp
dmF0ZUJyYW5kLCBpZGVudGlmaWVyLCBpbnZhbGlkT2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwg
eyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFNl
dFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3RydWN0dXJlLCB7
IH0sIHsgfSkpOwogfQogCiBBY2Nlc3NDYXNlOjp+QWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8o
CitSZWZQdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKAog
ICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgc3dpdGNoIChzdHViSW5mby5j
YWNoZVR5cGUoKSkgewpAQCAtMTg4LDkgKzE4OCw5IEBAIEpTT2JqZWN0KiBBY2Nlc3NDYXNlOjph
bHRlcm5hdGVCYXNlKCkgY29uc3QKICAgICByZXR1cm4gY29uZGl0aW9uU2V0KCkuc2xvdEJhc2VD
b25kaXRpb24oKS5vYmplY3QoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9u
ZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcg
QWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBBY2Nl
c3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTgwNyw2ICs4MDcsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0
aEd1YXJkKAogICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgPT0gQ29tbWl0dGVkKTsKICAgICBt
X3N0YXRlID0gR2VuZXJhdGVkOwogCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRlLm1fZ2xvYmFsT2JqZWN0OwogICAgIENDYWxsSGVscGVycyYgaml0ID0gKnN0YXRlLmpp
dDsKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1YkluZm87CiAg
ICAgVk0mIHZtID0gc3RhdGUubV92bTsKQEAgLTg1Myw3ICs4NTQsNyBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzTW9u
b1Byb3RvKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
c3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoc3RhdGUubV9nbG9iYWxPYmplY3QpOworICAg
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUtPnByb3Rv
dHlwZUZvckxvb2t1cChnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocHJvdG90eXBlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGFzT2JqZWN0KHByb3RvdHlw
ZSkpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAg
LTk2NCw2ICs5NjUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ucHJv
cGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZh
bGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5m
b0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICAKICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigp
OwpAQCAtMTA2MSw2ICsxMDY0LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFy
ZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJ
bmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwog
CkBAIC0xMTQ0LDYgKzExNDksOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJk
KAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1Yklu
Zm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAh
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9z
dHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAK
QEAgLTEyMDUsNiArMTIxMiw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBh
bGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5m
by5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9
IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTMxNyw2ICsxMzI2LDggQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFz
ZVJlZ3MoKSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFs
bG9jYXRvci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJ
bmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhz
Y3JhdGNoR1BSKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9j
YXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKQEAgLTE0MTcsNyArMTQyOCw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BvbHlQcm90b0FjY2Vzc0NoYWluKTsKIAogICAgICAgICBp
ZiAoY29uZGl0aW9uLmlzV2F0Y2hhYmxlQXNzdW1pbmdJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQo
UHJvcGVydHlDb25kaXRpb246OldhdGNoYWJpbGl0eUVmZm9ydDo6RW5zdXJlV2F0Y2hhYmlsaXR5
KSkgewotICAgICAgICAgICAgc3RhdGUuaW5zdGFsbFdhdGNocG9pbnQoY29uZGl0aW9uKTsKKyAg
ICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNvZGVCbG9jaywgY29uZGl0aW9uKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTE0MzUsNyArMTQ0Niw3IEBA
IHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUpCiAKICAgICAgICAgLy8gV2Ugd2lsbCBlbWl0IGNvZGUgdGhhdCBoYXMgYSB3ZWFrIHJlZmVy
ZW5jZSB0aGF0IGlzbid0IG90aGVyd2lzZSBsaXN0ZWQgYW55d2hlcmUuCiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gY29uZGl0aW9uLm9iamVjdCgpLT5zdHJ1Y3R1cmUodm0pOwotICAg
ICAgICBzdGF0ZS53ZWFrUmVmZXJlbmNlcy5hcHBlbmQoV3JpdGVCYXJyaWVyPEpTQ2VsbD4odm0s
IGNvZGVCbG9jaywgc3RydWN0dXJlKSk7CisgICAgICAgIHN0YXRlLndlYWtTdHJ1Y3R1cmVzLmFw
cGVuZChzdHJ1Y3R1cmUtPmlkKCkpOwogCiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihjb25kaXRpb24ub2JqZWN0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAg
c3RhdGUuZmFpbEFuZFJlcGF0Y2guYXBwZW5kKApAQCAtMTU4Miw3ICsxNTkzLDEyIEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAK
ICAgICAgICAgLy8gVGhpcyBhbHNvIGRvZXMgdGhlIG5lY2Vzc2FyeSBjYWxjdWxhdGlvbnMgb2Yg
d2hldGhlciBvciBub3Qgd2UncmUgYW4KICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNh
bGwgc2l0ZS4KLSAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxs
U3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOworICAg
ICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CisjaWYgQ1BVKEFSTTY0
KQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgICAgIGV4dHJh
UmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgorICAg
ICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRl
LnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVz
ZXJ2ZSk7CiAKICAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwgPSBbJl0oQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBi
b29sIGNhbGxIYXNSZXR1cm5WYWx1ZSkgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJl
c3RvcmU7CkBAIC0xNzEyLDYgKzE3MjgsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogI2VuZGlmCiAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6
cmVnVDMpOwogICAgICAgICAgICAgYWNjZXNzLmNhbGxMaW5rSW5mbygpLT5lbWl0U2xvd1BhdGgo
dm0sIGppdCk7CisKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gR2V0dGVyKQogICAgICAgICAg
ICAgICAgIGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKICAgICAgICAgICAgIGRvbmUuYXBw
ZW5kKGppdC5qdW1wKCkpOwpAQCAtMTcyMyw4ICsxNzQwLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQo
KSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0
ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNV
c2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24pLAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIGludCBzdGFja1BvaW50ZXJPZmZzZXQgPSAoY29kZUJsb2NrLT5zdGFja1BvaW50
ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVn
aXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0
YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CisgICAgICAgICAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKICAgICAgICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIoKTsKICAg
ICAgICAgICAgIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRl
LCBjYWxsSGFzUmV0dXJuVmFsdWUpOwogCkBAIC0xODQ1LDcgKzE4NjIsMTQgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgICAgIHNraXBCYXJyaWVyLmFwcGVuZChqaXQuYmFycmllckJyYW5jaCh2bSwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUikpOwogCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZUdQUiwgSlNQcm94eTo6dGFyZ2V0T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
LSAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKworICAgICAgICAgICAgUmVnaXN0
ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOworI2lmIENQVShBUk02NCkKKyAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICAgICAgICAgIGV4dHJhUmVn
aXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgorICAgICAg
ICAgICAgYXV0byBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFj
a0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyhleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOworCiAg
ICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJy
aWVyU2xvd1BhdGgpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgICAgICAg
ICAgYXV0byBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKQEAgLTE4
NzUsNiArMTg5OSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxv
Y2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0
dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwor
ICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
MiA9IEludmFsaWRHUFJSZWc7CkBAIC0xOTMzLDYgKzE5NTksMTAgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAg
ICAgICBSZWdpc3RlclNldCBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmU7CiAgICAgICAgICAgICAg
ICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChiYXNlR1BSKTsKICAgICAgICAgICAgICAg
ICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KHZhbHVlUmVncyk7CisjaWYgQ1BVKEFSTTY0
KQorICAgICAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQorICAgICAgICAg
ICAgICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjps
cik7CisjZW5kaWYKICAgICAgICAgICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JD
YWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCkBAIC0yMDMxLDYgKzIwNjEsOCBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBh
bGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxv
Y2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7CisgICAgICAg
IGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2Nh
dG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+dHJhbnNp
dGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgICAgIEFTU0VSVChu
ZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVy
dHlEZWxldGlvbik7CkBAIC0yMjAzLDYgKzIyMzUsMTAzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hl
Y2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB9CiAjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAorYm9vbCBBY2Nlc3NDYXNlOjpjYW5CZVNoYXJlZChjb25zdCBBY2Nl
c3NDYXNlJiBsaHMsIGNvbnN0IEFjY2Vzc0Nhc2UmIHJocykKK3sKKyAgICAvLyBXZSBkbyBub3Qg
Y2FyZSBtX3N0YXRlLgorICAgIC8vIEFuZCB3ZSBzYXkgImZhbHNlIiBpZiBlaXRoZXIgb2YgdGhl
bSBoYXZlIG1fcG9seVByb3RvQWNjZXNzQ2hhaW4uCisgICAgaWYgKGxocy5tX3BvbHlQcm90b0Fj
Y2Vzc0NoYWluIHx8IHJocy5tX3BvbHlQcm90b0FjY2Vzc0NoYWluKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGxocy5hZGRpdGlvbmFsU2V0KCkgfHwgcmhzLmFkZGl0aW9uYWxTZXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGxocy5tX3R5cGUgIT0gcmhzLm1f
dHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9vZmZzZXQgIT0gcmhz
Lm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX3ZpYVByb3h5
ICE9IHJocy5tX3ZpYVByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5t
X3N0cnVjdHVyZS5nZXQoKSAhPSByaHMubV9zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobGhzLm1faWRlbnRpZmllciAhPSByaHMubV9pZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2NvbmRpdGlvblNldCAhPSByaHMu
bV9jb25kaXRpb25TZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAobGhz
Lm1fdHlwZSkgeworICAgIGNhc2UgTG9hZDoKKyAgICBjYXNlIFRyYW5zaXRpb246CisgICAgY2Fz
ZSBEZWxldGU6CisgICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CisgICAgY2FzZSBEZWxl
dGVNaXNzOgorICAgIGNhc2UgUmVwbGFjZToKKyAgICBjYXNlIE1pc3M6CisgICAgY2FzZSBHZXRH
ZXR0ZXI6CisgICAgY2FzZSBJbkhpdDoKKyAgICBjYXNlIEluTWlzczoKKyAgICBjYXNlIEFycmF5
TGVuZ3RoOgorICAgIGNhc2UgU3RyaW5nTGVuZ3RoOgorICAgIGNhc2UgRGlyZWN0QXJndW1lbnRz
TGVuZ3RoOgorICAgIGNhc2UgU2NvcGVkQXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgQ2hlY2tQ
cml2YXRlQnJhbmQ6CisgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6CisgICAgY2FzZSBJbmRleGVk
SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6CisgICAgY2FzZSBJbmRleGVk
Q29udGlndW91c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkQXJyYXlTdG9yYWdlTG9hZDoKKyAgICBj
YXNlIEluZGV4ZWRTY29wZWRBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZERpcmVjdEFy
Z3VtZW50c0xvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDhMb2FkOgorICAgIGNh
c2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50OExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJh
eVVpbnQ4Q2xhbXBlZExvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUludDE2TG9hZDoK
KyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDE2TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRU
eXBlZEFycmF5SW50MzJMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlVaW50MzJMb2Fk
OgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlGbG9hdDMyTG9hZDoKKyAgICBjYXNlIEluZGV4
ZWRUeXBlZEFycmF5RmxvYXQ2NExvYWQ6CisgICAgY2FzZSBJbmRleGVkU3RyaW5nTG9hZDoKKyAg
ICBjYXNlIEluc3RhbmNlT2ZHZW5lcmljOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNh
c2UgR2V0dGVyOgorICAgIGNhc2UgU2V0dGVyOiB7CisgICAgICAgIC8vIEdldHRlciBhbmQgU2V0
dGVyIHJlbGllcyBvbiBDb2RlQmxvY2ssIHdoaWNoIG1ha2VzIHNoYXJpbmcgaW1wb3NzaWJsZS4K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNhc2UgQ3VzdG9tVmFsdWVHZXR0
ZXI6CisgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICBjYXNlIEN1c3RvbVZhbHVl
U2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAgICAgLy8gVGhl
eSBhcmUgZW1iZWRkaW5nIEpTR2xvYmFsT2JqZWN0IHRoYXQgYXJlIG5vdCB0aWVkIHRvIHNoYXJp
bmcgSklUU3R1YlJvdXRpbmUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBj
YXNlIEludHJpbnNpY0dldHRlcjogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8SW50
cmluc2ljR2V0dGVyQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJuIGxoc2QubV9pbnRyaW5z
aWNGdW5jdGlvbiA9PSByaHNkLm1faW50cmluc2ljRnVuY3Rpb247CisgICAgfQorCisgICAgY2Fz
ZSBNb2R1bGVOYW1lc3BhY2VMb2FkOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8TW9k
dWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgYXV0byYgcmhzZCA9IHJocy5hczxN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX21vZHVs
ZU5hbWVzcGFjZU9iamVjdCA9PSByaHNkLm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0CisgICAgICAg
ICAgICAmJiBsaHNkLm1fbW9kdWxlRW52aXJvbm1lbnQgPT0gcmhzZC5tX21vZHVsZUVudmlyb25t
ZW50CisgICAgICAgICAgICAmJiBsaHNkLm1fc2NvcGVPZmZzZXQgPT0gcmhzZC5tX3Njb3BlT2Zm
c2V0OworICAgIH0KKworICAgIGNhc2UgSW5zdGFuY2VPZkhpdDoKKyAgICBjYXNlIEluc3RhbmNl
T2ZNaXNzOiB7CisgICAgICAgIGF1dG8mIGxoc2QgPSBsaHMuYXM8SW5zdGFuY2VPZkFjY2Vzc0Nh
c2U+KCk7CisgICAgICAgIGF1dG8mIHJoc2QgPSByaHMuYXM8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+
KCk7CisgICAgICAgIHJldHVybiBsaHNkLm1fcHJvdG90eXBlID09IHJoc2QubV9wcm90b3R5cGU7
CisgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
aAppbmRleCBiZGQxYjIzN2Q2MThhMmNjZTgyNzIwZjcyY2E3NTM3ZGUzZmE3MDY4Li4wZTJlMjYz
ODI1NDI4N2Y1ZjVlMjY5ZmYzOGE2Y2RmYTQ5NmEwZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTI4LDEwICsyOCwxMyBAQAogI2lmIEVOQUJM
RShKSVQpCiAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmgiCisjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmUuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0LmgiCiAjaW5jbHVkZSAiUG9seVByb3RvQWNjZXNzQ2hhaW4uaCIKICNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvckhhc2guaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTc5LDcgKzgyLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiAvLyBXZSB3aWxsIHNvbWV0aW1lcyBidWZmZXIgY29t
bWl0dGVkIEFjY2Vzc0Nhc2VzIGluIHRoZSBQb2x5bW9ycGhpY0FjY2VzcyBvYmplY3QgYmVmb3Jl
IGdlbmVyYXRpbmcKIC8vIGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRvIG9ubHkgcmVnZW5lcmF0ZSBv
bmNlIHdlJ3ZlIGFjY3VtdWxhdGVkIChob3BlZnVsbHkpIG1vcmUgdGhhbiBvbmUgbmV3CiAvLyBB
Y2Nlc3NDYXNlLgotY2xhc3MgQWNjZXNzQ2FzZSB7CitjbGFzcyBBY2Nlc3NDYXNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEFjY2Vzc0Nhc2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNlKTsKIHB1YmxpYzoKICAgICBl
bnVtIEFjY2Vzc1R5cGUgOiB1aW50OF90IHsKQEAgLTE0NywxOSArMTUwLDE5IEBAIGNsYXNzIEFj
Y2Vzc0Nhc2UgewogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2VUeXBl
PihuZXcgQWNjZXNzQ2FzZVR5cGUoYXJndW1lbnRzLi4uKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBB
Y2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRP
ZmZzZXQsCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93
bmVyLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCA9IGlu
dmFsaWRPZmZzZXQsCiAgICAgICAgIFN0cnVjdHVyZSogPSBudWxscHRyLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpLCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlVHJhbnNpdGlvbihWTSYsIEpTQ2VsbCogb3du
ZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24o
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c0Nhc2U+IGNyZWF0ZURlbGV0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwKICAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSopOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJpdmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZUNoZWNrUHJpdmF0
ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVTZXRQcml2YXRlQnJhbmQoVk0m
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVj
dHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gZnJvbVN0cnVjdHVyZVN0dWJJbmZvKFZNJiwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhWTSYsIEpTQ2VsbCog
b3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKICAgICBB
Y2Nlc3NUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KQEAgLTI1MywxMSArMjU2LDM3IEBAIGNsYXNz
IEFjY2Vzc0Nhc2UgewogI2Vsc2UKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0
ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYpIHsgfQogI2VuZGlmCi0gICAgCisKKyAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChtX2NvbmRp
dGlvblNldC5oYXNoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3R5cGUpLCBtX3ZpYVByb3h5
LCBtX3N0cnVjdHVyZS5nZXQoKSwgbV9vZmZzZXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IGNhbkJlU2hhcmVkKGNvbnN0IEFjY2Vzc0Nhc2UmLCBjb25zdCBBY2Nlc3NDYXNlJik7CisKIHBy
b3RlY3RlZDoKICAgICBBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwg
Q2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYm
KTsKLSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJikgPSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nh
c2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpID0gZGVmYXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFj
Y2Vzc0Nhc2UmJiBvdGhlcikKKyAgICAgICAgOiBtX3R5cGUoV1RGTW92ZShvdGhlci5tX3R5cGUp
KQorICAgICAgICAsIG1fc3RhdGUoV1RGTW92ZShvdGhlci5tX3N0YXRlKSkKKyAgICAgICAgLCBt
X3ZpYVByb3h5KFdURk1vdmUob3RoZXIubV92aWFQcm94eSkpCisgICAgICAgICwgbV9vZmZzZXQo
V1RGTW92ZShvdGhlci5tX29mZnNldCkpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShv
dGhlci5tX3N0cnVjdHVyZSkpCisgICAgICAgICwgbV9jb25kaXRpb25TZXQoV1RGTW92ZShvdGhl
ci5tX2NvbmRpdGlvblNldCkpCisgICAgICAgICwgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZN
b3ZlKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pKQorICAgICAgICAsIG1faWRlbnRpZmll
cihXVEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCisgICAgeyB9CisKKyAgICBBY2Nlc3NDYXNl
KGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUp
CisgICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRlKQorICAgICAgICAsIG1fdmlhUHJveHko
b3RoZXIubV92aWFQcm94eSkKKyAgICAgICAgLCBtX29mZnNldChvdGhlci5tX29mZnNldCkKKyAg
ICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgLCBtX2NvbmRp
dGlvblNldChvdGhlci5tX2NvbmRpdGlvblNldCkKKyAgICAgICAgLCBtX3BvbHlQcm90b0FjY2Vz
c0NoYWluKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4pCisgICAgICAgICwgbV9pZGVudGlm
aWVyKG90aGVyLm1faWRlbnRpZmllcikKKyAgICB7IH0KIAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJh
dG9yPShjb25zdCBBY2Nlc3NDYXNlJikgPSBkZWxldGU7CiAgICAgdm9pZCByZXNldFN0YXRlKCkg
eyBtX3N0YXRlID0gUHJpbW9yZGlhbDsgfQpAQCAtMjc1LDcgKzMwNCw3IEBAIGNsYXNzIEFjY2Vz
c0Nhc2UgewogCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cg
QWNjZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgotICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3Q7CisgICAgdmly
dHVhbCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFBlcmZvcm0gYW55
IGFjdGlvbiB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9j
aCBpbiB3aGljaCB0aGUgY2FzZQogICAgIC8vIHdhcyBjcmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9m
IHdhdGNocG9pbnQgc2V0cyB0aGF0IHdpbGwgbmVlZCB0byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYg
KzM0NCwxNDYgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiB9OwogCitjbGFzcyBTaGFyZWRKSVRTdHViU2V0IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0KTsKK3B1YmxpYzoKKyAgICBTaGFyZWRK
SVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3RydWN0IEhhc2ggeworICAgICAgICBzdHJ1
Y3QgS2V5IHsKKyAgICAgICAgICAgIEtleSgpID0gZGVmYXVsdDsKKworICAgICAgICAgICAgS2V5
KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIEdQUlJlZyBleHRyYUdQUiwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lKiB3cmFwcGVkKQorICAgICAgICAgICAgICAgIDogbV93cmFwcGVkKHdy
YXBwZWQpCisgICAgICAgICAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQUikKKyAgICAgICAgICAg
ICAgICAsIG1fdmFsdWVHUFIodmFsdWVHUFIpCisgICAgICAgICAgICAgICAgLCBtX2V4dHJhR1BS
KGV4dHJhR1BSKQorICAgICAgICAgICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikK
KyAgICAgICAgICAgICAgICAsIG1fdXNlZFJlZ2lzdGVycyh1c2VkUmVnaXN0ZXJzKQorICAgICAg
ICAgICAgeyB9CisKKyAgICAgICAgICAgIEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpCisgICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQoYml0d2lzZV9jYXN0PFBvbHltb3JwaGlj
QWNjZXNzSklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSkKKyAgICAg
ICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KKworICAgICAg
ICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dyYXBwZWQgPT0gYi5t
X3dyYXBwZWQKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VH
UFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgor
ICAgICAgICAgICAgICAgICAgICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCisgICAg
ICAgICAgICAgICAgICAgICYmIGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKKyAg
ICAgICAgICAgICAgICAgICAgJiYgYS5tX3VzZWRSZWdpc3RlcnMgPT0gYi5tX3VzZWRSZWdpc3Rl
cnM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzSklUU3R1
YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIEdQUlJlZyBtX2Jh
c2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1ZUdQUjsKKyAgICAgICAgICAgIEdQUlJl
ZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAg
ICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7CisgICAgICAgIH07CisKKyAgICAgICAg
dXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtleT47CisKKyAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAg
ICAgcmV0dXJuIHAubV93cmFwcGVkLT5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07
CisKKyAgICBzdHJ1Y3QgU2VhcmNoZXIgeworICAgICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7Cisg
ICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFBvbHltb3JwaGljQWNjZXNz
SklUU3R1YlJvdXRpbmU6OmNvbXB1dGVIYXNoKHNlYXJjaGVyLm1fY2FzZXMsIHNlYXJjaGVyLm1f
d2Vha1N0cnVjdHVyZXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBIYXNoOjpLZXkgYSwgY29uc3QgU2VhcmNoZXImIGIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKGEubV9iYXNlR1BSID09IGIubV9iYXNlR1BSCisgICAg
ICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9PSBiLm1fdmFsdWVHUFIKKyAgICAgICAg
ICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIubV9leHRyYUdQUgorICAgICAgICAgICAg
ICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5tX3N0dWJJbmZvR1BSCisgICAgICAgICAg
ICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGFDYXNlcyA9IGEubV93cmFwcGVkLT5jYXNl
cygpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBiQ2FzZXMgPSBiLm1fY2FzZXM7
CisgICAgICAgICAgICAgICAgICAgIGlmIChhQ2FzZXMuc2l6ZSgpICE9IGJDYXNlcy5zaXplKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGJDYXNlcy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQWNjZXNzQ2FzZTo6Y2FuQmVTaGFy
ZWQoKmFDYXNlc1tpbmRleF0sICpiQ2FzZXNbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgY29uc3QgYXV0byYgYVdlYWsgPSBhLm1fd3JhcHBlZC0+d2Vha1N0cnVjdHVyZXMo
KTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYldlYWsgPSBiLm1fd2Vha1N0cnVj
dHVyZXM7CisgICAgICAgICAgICAgICAgICAgIGlmIChhV2Vhay5zaXplKCkgIT0gYldlYWsuc2l6
ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gYVdlYWsuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYVdlYWtbaV0gIT0gYldlYWtb
aV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgR1BSUmVnIG1fYmFzZUdQUjsKKyAgICAgICAgR1BSUmVnIG1f
dmFsdWVHUFI7CisgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICBHUFJSZWcgbV9z
dHViSW5mb0dQUjsKKyAgICAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOworICAgICAg
ICBjb25zdCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiBtX2Nhc2VzOworICAgICAg
ICBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mIG1fd2Vha1N0cnVjdHVyZXM7CisgICAg
fTsKKworICAgIHN0cnVjdCBQb2ludGVyVHJhbnNsYXRvciB7CisgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBzdHViLT5oYXNoKCk7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkmIGtleSwgUG9seW1vcnBoaWNBY2Nl
c3NKSVRTdHViUm91dGluZSogc3R1YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtl
eS5tX3dyYXBwZWQgPT0gc3R1YjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZChI
YXNoOjpLZXkmJiBrZXkpCisgICAgeworICAgICAgICBtX3N0dWJzLmFkZChXVEZNb3ZlKGtleSkp
OworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlKFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRp
bmUqIHN0dWIpCisgICAgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3N0dWJzLmZpbmQ8UG9pbnRl
clRyYW5zbGF0b3I+KHN0dWIpOworICAgICAgICBpZiAoaXRlciAhPSBtX3N0dWJzLmVuZCgpKQor
ICAgICAgICAgICAgbV9zdHVicy5yZW1vdmUoaXRlcik7CisgICAgfQorCisgICAgUG9seW1vcnBo
aWNBY2Nlc3NKSVRTdHViUm91dGluZSogZmluZChjb25zdCBTZWFyY2hlciYgc2VhcmNoZXIpCisg
ICAgeworICAgICAgICBhdXRvIGVudHJ5ID0gbV9zdHVicy5maW5kPFNoYXJlZEpJVFN0dWJTZXQ6
OlNlYXJjaGVyOjpUcmFuc2xhdG9yPihzZWFyY2hlcik7CisgICAgICAgIGlmIChlbnRyeSAhPSBt
X3N0dWJzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5LT5tX3dyYXBwZWQ7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PEhhc2g6
OktleSwgSGFzaCwgSGFzaDo6S2V5VHJhaXRzPiBtX3N0dWJzOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5VmFsSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5m
by5oCmluZGV4IGZjOThmNGU0MDBiOGZjNmNjYjg4ZGYwY2FhNGM1YTU1NTM2NzljODQuLmIyMjZm
YjE2ZjVkYjc0NGY3ZmU1NTZiZWM3NThkN2NlYTA0ZTRhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKQEAgLTI0NCwxMCArMjQ0LDggQEAgc3RydWN0IEJ5
VmFsSW5mbyB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0VXAoQ29kZUxvY2F0aW9uSnVt
cDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4gYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXIsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlLCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBkb25lVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBl
TmV4dEhvdFBhdGhUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNs
b3dQYXRoVGFyZ2V0KQorICAgIHZvaWQgc2V0VXAoQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwg
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQ
dHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJh
ZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRh
Zz4gc2xvd1BhdGhUYXJnZXQpCiAgICAgewotICAgICAgICB0aGlzLT5ub3RJbmRleEp1bXAgPSBu
b3RJbmRleEp1bXA7Ci0gICAgICAgIHRoaXMtPmJhZFR5cGVKdW1wID0gYmFkVHlwZUp1bXA7CiAg
ICAgICAgIHRoaXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyOwogICAgICAg
ICB0aGlzLT5kb25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKICAgICAgICAgdGhpcy0+YmFkVHlwZU5l
eHRIb3RQYXRoVGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwpAQCAtMjYyLDggKzI2
MCwyMSBAQCBzdHJ1Y3QgQnlWYWxJbmZvIHsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRF
OwogCi0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXA7
Ci0gICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcDsKKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJhdGlvbigpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihCeVZhbEluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0KKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEJ5VmFsSW5mbywgbV9ub3RJbmRleEp1bXBUYXJnZXQpOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEJ5VmFsSW5mbywgbV9iYWRUeXBlSnVtcFRhcmdldCk7IH0KKworICAgIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4gbV9zbG93T3BlcmF0aW9uOworCisgICAgdW5pb24geworICAgICAgICBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJn
ZXQ7CisgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9ub3RJbmRl
eEp1bXA7CisgICAgfTsKKyAgICB1bmlvbiB7CisgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiBtX2JhZFR5cGVKdW1wVGFyZ2V0OworICAgICAgICBDb2RlTG9j
YXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG1fYmFkVHlwZUp1bXA7CisgICAgfTsKKwogICAg
IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRs
ZXI7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldDsK
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBh
dGhUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCmluZGV4IGZjZjE0ZmRkM2EyMDUxMzg5MTZjNzBmODg1YTgxZWRhMGIwMzcwOTAuLjgw
ZjQwNDVhMzMxNGMyNjU1NDIxNDc4NWNlMTYwMzA1ZGJmNzdlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC00MjAsMTIgKzQyMCwx
MiBAQCB2b2lkIENhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZURpcmVjdENhbGwoKQogICAgIEFTU0VS
VCh1LmNvZGVJQy5tX2NhbGxMb2NhdGlvbik7CiAgICAgaWYgKGlzVGFpbENhbGwoKSkgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChmYXN0UGF0aFN0YXJ0KCkpOwotICAgICAgICBDQ2FsbEhlbHBl
cnM6OmVtaXRKSVRDb2RlT3ZlcihmYXN0UGF0aFN0YXJ0KCksIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFy
dCgpLCBzY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYg
aml0KSB7CiAgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBzbG93UGF0aFN0YXJ0KCkpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0sICJpbml0aWFsaXplIGRpcmVjdCBjYWxsIik7CisgICAgICAgIH0p
LCAiaW5pdGlhbGl6ZSBkaXJlY3QgY2FsbCIpOwogICAgIH0gZWxzZQogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKHUuY29kZUlDLm1fY2FsbExvY2F0aW9uLCBzbG93UGF0
aFN0YXJ0KCkpOwogfQpAQCAtNDM2LDExICs0MzYsMTEgQEAgdm9pZCBDYWxsTGlua0luZm86OnNl
dERpcmVjdENhbGxUYXJnZXQoQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gdGFyZ2V0
KQogCiAgICAgaWYgKGlzVGFpbENhbGwoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChmYXN0
UGF0aFN0YXJ0KCkpOwotICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihmYXN0
UGF0aFN0YXJ0KCksIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBzY29wZWRMYW1iZGE8dm9pZChD
Q2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAvLyBX
ZSByZXNlcnZlZCB0aGlzIG1hbnkgYnl0ZXMgZm9yIHRoZSBqdW1wIGF0IGZhc3RQYXRoU3RhcnQo
KS4gTWFrZSB0aGF0CiAgICAgICAgICAgICAvLyBjb2RlIG5vcHMgbm93IHNvIHdlIGZhbGwgdGhy
b3VnaCB0byB0aGUganVtcCB0byB0aGUgZmFzdCBwYXRoLgotICAgICAgICAgICAgaml0LmVtaXRO
b3BzKENDYWxsSGVscGVyczo6cGF0Y2hhYmxlSnVtcFNpemUoKSk7IAotICAgICAgICB9LCAiU2V0
dGluZyBkaXJlY3QgY2FsbCB0YXJnZXQiKTsKKyAgICAgICAgICAgIGppdC5lbWl0Tm9wcyhDQ2Fs
bEhlbHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOworICAgICAgICB9KSwgIlNldHRpbmcgZGly
ZWN0IGNhbGwgdGFyZ2V0Iik7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hO
ZWFyQ2FsbCh1LmNvZGVJQy5tX2NhbGxMb2NhdGlvbiwgdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiMTA5MGI1ZDQxOGU4MzlhZTZjODI3
YTYyZjBjZmQxM2Q5MzcxN2Q2Li5kM2QxMDZmZDU0NTA0M2FlNTQxZDBkNjExODUzZGVlZTViN2Iw
M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00
MjMsNiArNDIzLDExIEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVDsKICAgICB9
CisKKyAgICBib29sIHVzZURhdGFJQygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSklU
Q29kZTo6dXNlRGF0YUlDKGppdFR5cGUoKSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCmluZGV4IDBj
M2M0MTIxZDU4NjYyN2VhOTUwNDFiZjcxNzBkYzdjOWQ1MGFiYmEuLjc2NzFkODdiMWVhNzQ5ZGMz
NDU2Zjc3NjVhYzA2YzRhOGJjZmIyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUKICAgICBtX2N1c3RvbVNsb3RCYXNlLnNldE1h
eUJlTnVsbCh2bSwgb3duZXIsIGN1c3RvbVNsb3RCYXNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3ND
YXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwKICAgICBib29sIHZpYVByb3h5LCBX
YXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0
clRhZz4gY3VzdG9tR2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgc3RkOjpv
cHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUsIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKQEAgLTYxLDE4ICs2MSwx
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6
Y3JlYXRlKAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBjdXN0b21TbG90QmFz
ZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFk
b3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50
aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlv
bmFsU2V0LCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsK
ICAgICByZXN1bHQtPm1fZG9tQXR0cmlidXRlID0gZG9tQXR0cmlidXRlOwogICAgIHJlc3VsdC0+
bV9jdXN0b21BY2Nlc3NvciA9IGN1c3RvbUdldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPihjdXN0b21HZXR0ZXIpIDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQsCitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRl
KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluLCBib29s
IHZpYVByb3h5LCAKICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9t
U2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UpCiB7CiAgICAgQVNTRVJUKHR5cGUgPT0g
U2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0b21BY2Nl
c3NvclNldHRlcik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+
IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50
aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBudWxscHRy
LCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3du
ZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZp
YVByb3h5LCBudWxscHRyLCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3ND
aGFpbikpKTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21TZXR0ZXIgPyBG
dW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tU2V0dGVyKSA6IG51bGxwdHI7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTkxLDkgKzkxLDkgQEAgR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZShjb25zdCBHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlJiBvdGgKICAgICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmlidXRlOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y2xv
bmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNsb25l
KCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4g
cmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1
bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICBy
ZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTM5LDYgKzEz
OSw4IEBAIHZvaWQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdERPTUpJVEdldHRlcihBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zCiAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yIGFsbG9jYXRvcihzdHViSW5mby51c2VkUmVnaXN0ZXJzKTsKICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwor
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgIGFsbG9jYXRvci5s
b2NrKHNjcmF0Y2hHUFIpOwogCiAgICAgR1BSUmVnIHBhcmFtQmFzZUdQUiA9IEludmFsaWRHUFJS
ZWc7CkBAIC0yMjMsNiArMjI1LDExIEBAIHZvaWQgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6ZW1p
dERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zCiAgICAgZm9y
IChGUFJSZWcgcmVnIDogZnBTY3JhdGNoKQogICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0Nh
bGwuc2V0KHJlZyk7CiAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLmV4Y2x1ZGUoUmVnaXN0
ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckNDYWxsKCkpOworI2lmIENQVShBUk02NCkKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGppdC5jb2RlQmxvY2soKTsKKyAgICBpZiAoY29kZUJs
b2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChB
Uk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCiAKICAgICBBY2Nlc3NDYXNlU25pcHBldFBhcmFt
cyBwYXJhbXMoc3RhdGUubV92bSwgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBX
VEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHNuaXBwZXQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBw
YXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRl
clNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggYTg0ODg0NThmNGFiZDJhYWQyZWJhZjYyYjI4YTMz
YzQxODYwNDA4Ny4uYzM2NzNhNGYxNGJmMDc4NTY2MGM1NjRiNzgzMmE1ZGI0NDZiNzI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vz
c0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZS5oCkBAIC01MywxNyArNTMsMTcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKIAogICAgIHZvaWQgZW1p
dERPTUpJVEdldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBET01KSVQ6OkdldHRl
clNldHRlciosIEdQUlJlZyBiYXNlRm9yR2V0R1BSKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3Jl
YXRlKAogICAgICAgICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAogICAgICAgICBjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFk
ZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0
ZXIsCiAgICAgICAgIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgc3RkOjpvcHRpb25hbDxET01B
dHRyaWJ1dGVBbm5vdGF0aW9uPiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0Nl
bGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQ
cm9wZXJ0eU9mZnNldCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQm
LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYsIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwK
ICAgICAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciA9
IG51bGxwdHIsIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSA9IG51bGxwdHIpOwogCiAgICAgdm9p
ZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJl
ZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkdldHRlclNldHRlckFj
Y2Vzc0Nhc2UoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5saW5lQWNjZXNzLmNwcAppbmRleCA4MzJjZDBiOGZhZmQ5OGQwYjI4NTkzY2JiYjA1N2JhZTk2
ZmIzMjFhLi40ODQxMDEzOWRjMmY4YzBkNWM4MGEyZmY5MDVjM2FhNmExMzVkZmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcApAQCAtMjE2
LDYgKzIxNiw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVnaXN0
ZXIoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJ
bmZvLmJhc2VUYWdHUFIpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnZhbHVlVGFnR1BS
KTsKICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAg
IEdQUlJlZyBzY3JhdGNoID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwogICAgIGlm
IChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRH
UFJSZWc7CkBAIC0zNzksMTkgKzM4MSw3MCBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVT
ZWxmSW5BY2Nlc3MoU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBTdHJ1Y3R1cmUqCiAgICAg
cmV0dXJuIGxpbmtlZENvZGVJbmxpbmU7CiB9CiAKLXZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHVi
Um91dGluZVB0clRhZz4gdGFyZ2V0KQogewotICAgIENDYWxsSGVscGVycyBqaXQ7CisgICAgaWYg
KGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpIHsKKyAgICAgICAgc3R1YkluZm8ubV9jb2RlUHRyID0g
dGFyZ2V0OworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBqdW1wID0gaml0Lmp1
bXAoKTsKKyAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihzdHViSW5mby5zdGFydC5y
ZXRhZ2dlZDxKU0ludGVybmFsUHRyVGFnPigpLCBzY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBl
cnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
YSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhl
IG1pZGRsZSBvZiBhbiBJQy4KKyAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKyAgICAg
ICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHRhcmdldCk7CisgICAgICAgIH0pOworICAgIH0p
LCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KIAotICAgIC8vIFdl
IGRvbid0IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBiZSBqdW1w
aW5nIGludG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KLSAgICBib29sIG5lZWRzQnJhbmNoQ29tcGFj
dGlvbiA9IGZhbHNlOwotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIHN0dWJJbmZvLnN0
YXJ0LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6SW5saW5lQ2FjaGUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsIG5lZWRzQnJhbmNo
Q29tcGFjdGlvbik7Ci0gICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOwot
ICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQpOwordm9pZCBJbmxpbmVBY2Nlc3M6OnJl
d2lyZVN0dWJBc0p1bXBJbkFjY2VzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4g
dGFyZ2V0KQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKSB7CisgICAgICAgIC8v
IElmIGl0IGlzIG5vdCBHZXRCeUlkLWxpa2UtdGhpbmcsIHdlIGRvIG5vdCBlbWl0IG5vcCBzbGVk
IChlLmcuIEdldEJ5VmFsKS4KKyAgICAgICAgLy8gVGhlIGNvZGUgaXMgYWxyZWFkeSBhbiBpbmRp
cmVjdCBqdW1wLCBhbmQgb25seSB0aGluZyB3ZSBzaG91bGQgZG8gaXMgcmVwbGFjaW5nIG1fY29k
ZVB0ci4KKyAgICAgICAgaWYgKHN0dWJJbmZvLmhhc0NvbnN0YW50SWRlbnRpZmllcikgeworICAg
ICAgICAgICAgLy8gSWYgbV9jb2RlUHRyIGlzIHBvaW50aW5nIHRvIHN0dWJJbmZvLnNsb3dQYXRo
U3RhcnRMb2NhdGlvbiwgdGhpcyBtZWFucyB0aGF0IElubGluZUFjY2VzcyBjb2RlIGlzIG5vdCBh
IHN0dWIgb25lLgorICAgICAgICAgICAgLy8gV2UgcmV3cml0ZSB0aGlzIHdpdGggdGhlIHN0dWIt
YmFzZWQgZGlzcGF0Y2hpbmcgY29kZSBvbmNlLCBhbmQgY29udGludWUgdXNpbmcgaXQgdW50aWwg
d2UgcmVzZXQgdGhlIGNvZGUuCisgICAgICAgICAgICBpZiAoc3R1YkluZm8ubV9jb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCkgPT0gc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uLmV4ZWN1
dGFibGVBZGRyZXNzKCkpIHsKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRD
b2RlT3ZlcihzdHViSW5mby5zdGFydC5yZXRhZ2dlZDxKU0ludGVybmFsUHRyVGFnPigpLCBzY29w
ZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigm
c3R1YkluZm8pLCBzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
aml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFn
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBzdHViSW5mby5kb25lTG9jYXRpb247Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0oTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIGRv
bmVMb2NhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
LCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIHN0dWIgY2FsbCIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHN0dWJJbmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsICJJ
bmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOworICAgIENDYWxsSGVscGVyczo6
ZW1pdEpJVENvZGVPdmVyKHN0dWJJbmZvLnN0YXJ0LnJldGFnZ2VkPEpTSW50ZXJuYWxQdHJUYWc+
KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0oQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVkIGhlcmUgYmVjYXVzZSBu
b2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9mIGFuIElDLgorICAgICAg
ICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVt
cCwgdGFyZ2V0KTsKKyAgICAgICAgfSk7CisgICAgfSksICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcg
Y29uc3RhbnQganVtcCIpOworfQorCit2b2lkIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAg
IENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKHN0dWJJbmZvLnN0YXJ0LnJldGFnZ2VkPEpT
SW50ZXJuYWxQdHJUYWc+KCksIHNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPihbJl0o
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhIG5vcCBzbGVk
IGhlcmUgYmVjYXVzZSBub2JvZHkgc2hvdWxkIGJlIGp1bXBpbmcgaW50byB0aGUgbWlkZGxlIG9m
IGFuIElDLgorICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworICAgICAgICBhdXRvIHNs
b3dQYXRoU3RhcnRMb2NhdGlvbiA9IHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKKyAg
ICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIHNsb3dQYXRoU3RhcnRMb2NhdGlvbik7Cisg
ICAgICAgIH0pOworICAgIH0pLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAi
KTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzTm90VXNp
bmdJbmxpbmVBY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICByZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuaAppbmRleCBmNDliMzViOGYyMjY0MDZjN2ZiMjZmZmJiNDg4NmIy
Yjg0NzFkMTJkLi5iMTAyYWUwMjM2NTkzNjBlMWQzNmRlOTJkZGQxNDRjZDJkMjIyNTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC0xMDQs
MTAgKzEwNCwxNCBAQCBjbGFzcyBJbmxpbmVBY2Nlc3MgewogICAgIHN0YXRpYyBib29sIGlzQ2Fj
aGVhYmxlQXJyYXlMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mLCBKU0FycmF5Kik7CiAgICAgc3Rh
dGljIGJvb2wgaXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKICAg
ICBzdGF0aWMgYm9vbCBnZW5lcmF0ZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNB
cnJheSopOwotICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1Yklu
Zm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOwogICAgIHN0YXRp
YyBib29sIGdlbmVyYXRlU2VsZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJl
Kik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1Yklu
Zm8mKTsKIAorICAgIHN0YXRpYyB2b2lkIHJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5n
SW5saW5lQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHVi
QXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4pOworICAgIHN0YXRpYyB2b2lkIHJlc2V0U3R1
YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJl
U3R1YkluZm8mKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2VzcyhDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOworCiAgICAgLy8gVGhpcyBpcyBoZWxwZnVsIHdo
ZW4gZGV0ZXJtaW5pbmcgdGhlIHNpemUgb2YgYW4gSUMgb24KICAgICAvLyB2YXJpb3VzIHBsYXRm
b3Jtcy4gV2hlbiBhZGRpbmcgYSBuZXcgdHlwZSBvZiBJQywgaW1wbGVtZW50CiAgICAgLy8gaXRz
IHBsYWNlaG9sZGVyIGNvZGUgaGVyZSwgYW5kIGxvZyB0aGUgc2l6ZS4gVGhhdCB3YXkgd2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNz
Q2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFjY2Vz
c0Nhc2UuY3BwCmluZGV4IDIxZjI0NTNiYWM3YWZhZTc3MjQxY2IwNGEyNWQyMGZkZDk5M2JjMzQu
Ljk5NDkwOGQ2OGI2MmJiZTA2ZTA5YWEwYjM3ZTc3YzExMGM2NjkyZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNw
cApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSgKK1JlZjxBY2Nlc3ND
YXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU09iamVjdCog
cHJvdG90eXBlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3
IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBj
b25kaXRpb25TZXQsIHByb3RvdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlKHZtLCBvd25lciwgYWNjZXNzVHlwZSwgc3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIHByb3RvdHlwZSkpOwogfQogCiB2b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1w
SW1wbChQcmludFN0cmVhbSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1hKSBjb25zdApAQCAtNDUs
OSArNDUsOSBAQCB2b2lkIEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpkdW1wSW1wbChQcmludFN0cmVh
bSYgb3V0LCBDb21tYVByaW50ZXImIGNvbW1hKSBjb25zdAogICAgIG91dC5wcmludChjb21tYSwg
InByb3RvdHlwZSA9ICIsIEpTVmFsdWUocHJvdG90eXBlKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8
QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgSW5zdGFuY2VP
ZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgSW5z
dGFuY2VPZkFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaAppbmRleCA2OWUyYjMxYWE5NGE1OWQzMGRmYjRj
YWYyMjQ0OTlkNjAyNzc4NDdjLi5hZDcxZTY5NDJmNDQ5MmZhOGFiZGVhYWM3ZWEwZmM0NmI3MDc5
ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VP
ZkFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZkFjY2Vzc0Nhc2UuaApAQCAtMzQsMTUgKzM0LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgSW5zdGFuY2VPZkFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEFjY2Vzc0Nhc2U7CisgICAgZnJpZW5kIGNsYXNzIEFjY2Vz
c0Nhc2U7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGUoCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlND
ZWxsKiwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQmLAogICAgICAgICBKU09iamVjdCogcHJvdG90eXBlKTsKICAgICAKICAgICBKU09iamVj
dCogcHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAK
ICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29tbWFQcmludGVyJikgY29uc3QgZmlu
YWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7
CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgfklu
c3RhbmNlT2ZBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcAppbmRl
eCA2MzAxZGMyMzM2OTMzZDY3NmMzYmU5ZTkwYzYwMTg5YTEzMTczODE3Li4zNGIxYTgwMjc4ODk1
ZjcxYWJmZTY4Mjk2OWNkZTQzMGYzMmU3ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwCkBA
IC0zOSwxOCArMzksMTggQEAgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0
dGVyQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2gKICAgICBtX2ludHJpbnNp
Y0Z1bmN0aW9uLnNldCh2bSwgb3duZXIsIGludHJpbnNpY0Z1bmN0aW9uKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgSlNGdW5jdGlvbiogaW50cmluc2ljRnVu
Y3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFp
bikKK1JlZjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoVk0m
IHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0
aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4p
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJl
LCBjb25kaXRpb25TZXQsIGludHJpbnNpY0Z1bmN0aW9uLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRlckFjY2Vz
c0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsK
IH0KIAogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6fkludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2UoKQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVy
QWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW50cmlu
c2ljR2V0dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNl
KCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEludHJpbnNpY0dldHRl
ckFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggNjI4NzAwNDE1ODczMWQ1Yjhm
ZWI1MDYzNTNkZTU1OWI2NDQ3NjQ0Ni4uNDdhZjFhMmJmMWRkNmNiOTEzNjI2MzIxMDE5M2I0N2Ez
ZmYyYWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJp
bnNpY0dldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAg
c3RhdGljIGJvb2wgY2FuRW1pdEludHJpbnNpY0dldHRlcihKU0Z1bmN0aW9uKiwgU3RydWN0dXJl
Kik7CiAgICAgdm9pZCBlbWl0SW50cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYp
OwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBK
U0NlbGwqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNG
dW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKKyAgICBzdGF0aWMgUmVm
PEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIENhY2hlYWJsZUlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCYsIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+JiYpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29u
c3QgZmluYWw7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkgY29uc3QgZmluYWw7CiAKICAg
ICB+SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZS5jcHAKaW5kZXggMjk1NmRkMGNkNWQwZWFlNjFhMDhlM2RjNzY1YmY3NDM0NDFjNWY4ZC4uYzI5
YzFkZGZhZjQ4MTU1NjYxNTE3MDg1YTg4ZTE5YTA3M2FiZTdmYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3ND
YXNlLmNwcApAQCAtNDUsMTggKzQ1LDE4IEBAIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6Ok1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoCiAgICAg
bV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIG93bmVyLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
OjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpT
TW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50LCBTY29wZU9mZnNldCBzY29wZU9m
ZnNldCkKK1JlZjxBY2Nlc3NDYXNlPiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUo
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50LCBTY29wZU9mZnNldCBzY29wZU9mZnNldCkKIHsK
LSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0
LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgbW9k
dWxlTmFtZXNwYWNlT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCwgc2NvcGVPZmZzZXQpKTsKIH0K
IAogTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTo6fk1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2Uo
KQogewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCp0
aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKaW5kZXggOTJhMGI4YTM1YjU0NzE2MjQxMzBk
NjUwNjUzZDA1YmY1ZDc5MzM3Ny4uZDQzOTUwYmYwNjMxMzdjZjc3M2I4NGM0YWFlNDk0NGIwNGM5
YTNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIE1vZHVs
ZU5hbWVzcGFjZUFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgQWNjZXNzQ2FzZSB7CiAgICAgSlNN
b2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21v
ZHVsZUVudmlyb25tZW50LmdldCgpOyB9CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX3Njb3BlT2Zmc2V0OyB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50
aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIFNj
b3BlT2Zmc2V0KTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kiwg
SlNNb2R1bGVFbnZpcm9ubWVudCosIFNjb3BlT2Zmc2V0KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBj
bG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBlbWl0KEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFsbFRocm91Z2gpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5oCmluZGV4IDNkMjMzZmFkMTMzOTJkZTAyYmYzYjNjOTdmZDA2NDdmMGQxYWFmZjMu
LmJlNzNmZGI1ZTVhN2E5ZmYxYjc1MjcyMDI1MjkzY2I2MmE1ODQ0ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25k
aXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9GaXhl
ZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODksNiArOTAsMzIgQEAgY2xhc3MgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IHJldHVybiBtX2RhdGEtPm1fdmVjdG9yLmVuZCgpOwogICAgIH0KKworICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdAorICAgIHsKKyAgICAgICAgSGFzaGVyIGhhc2hlcjsKKyAgICAgICAgZm9yIChh
dXRvJiBjb25kaXRpb24gOiAqdGhpcykKKyAgICAgICAgICAgIGFkZChoYXNoZXIsIGNvbmRpdGlv
bi5oYXNoKCkpOworICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKKyAgICB9CisKKyAgICBm
cmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBs
aHMsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiByaHMpCisgICAgeworICAgICAg
ICBpZiAobGhzLnNpemUoKSAhPSByaHMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBhdXRvIGxpdGVyID0gbGhzLmJlZ2luKCk7CisgICAgICAgIGF1dG8gcml0ZXIg
PSByaHMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGxpdGVyICE9IGxocy5lbmQoKTsgKytsaXRl
ciwgKytyaXRlcikgeworICAgICAgICAgICAgaWYgKCEoKmxpdGVyID09ICpyaXRlcikpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQmIGxocywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIHJo
cykKKyAgICB7CisgICAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOworICAgIH0KICAgICAKICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JPYmplY3QoSlNPYmplY3QqKSBjb25zdDsKICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBmb3JDb25kaXRpb25LaW5kKFByb3BlcnR5Q29uZGl0
aW9uOjpLaW5kKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDAzYTJmNjcxZjc0NDZlNGFjYWRjZDc0Yjlj
ODdlODlhN2QwOWEwMTUuLmM1NzUxYTg5M2Q5ZjVjOTQxMmM0NjRiMWVlOGQwY2Q0Njc4OGVmYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIG91dC5wcmludCgiOiIsIG1f
Y29kZSk7CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2lu
dChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQordm9pZCBBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgY29uZGl0aW9uKQogewotICAgIFdhdGNocG9p
bnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9p
bnQoCi0gICAgICAgIHdhdGNocG9pbnRzLCBqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgY29u
ZGl0aW9uKTsKKyAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVy
ZW5jZUFuZEluc3RhbGxXYXRjaHBvaW50KHdhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZv
LCBjb25kaXRpb24pOwogfQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZVNj
cmF0Y2goKQpAQCAtNzMsNyArNzIsMTAgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJl
c3RvcmVTY3JhdGNoKCkKIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKIHsK
ICAgICByZXN0b3JlU2NyYXRjaCgpOwotICAgIHN1Y2Nlc3MuYXBwZW5kKGppdC0+anVtcCgpKTsK
KyAgICBpZiAoaml0LT5jb2RlQmxvY2soKS0+dXNlRGF0YUlDKCkpCisgICAgICAgIGppdC0+cmV0
KCk7CisgICAgZWxzZQorICAgICAgICBzdWNjZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CiB9CiAK
IGNvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmxpdmVSZWdpc3RlcnNG
b3JDYWxsKCkKQEAgLTEyNiwxMCArMTI4LDExIEBAIGF1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNlCiAg
ICAgfTsKIH0KIAotYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lz
dGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKSAtPiBTcGlsbFN0YXRlCithdXRv
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEpIC0+IFNwaWxsU3Rh
dGUKIHsKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzID0gYWxsb2NhdG9yLT51c2VkUmVn
aXN0ZXJzKCk7CiAgICAgbGl2ZVJlZ2lzdGVycy5leGNsdWRlKGNhbGxlZVNhdmVSZWdpc3RlcnMo
KSk7CisgICAgbGl2ZVJlZ2lzdGVycy5tZXJnZShleHRyYSk7CiAKICAgICBjb25zdGV4cHIgdW5z
aWduZWQgZXh0cmFTdGFja1BhZGRpbmcgPSAwOwogICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tC
eXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgqaml0LCBsaXZlUmVnaXN0ZXJzLCBl
eHRyYVN0YWNrUGFkZGluZyk7CkBAIC0yNTIsNyArMjU1LDcgQEAgUG9seW1vcnBoaWNBY2Nlc3M6
On5Qb2x5bW9ycGhpY0FjY2VzcygpIHsgfQogCiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHlt
b3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2Nr
ZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvLAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+
IG9yaWdpbmFsQ2FzZXNUb0FkZCkKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBv
cmlnaW5hbENhc2VzVG9BZGQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVy
U2NvcGUoZmFsc2UpOwogICAgIApAQCAtMjY4LDkgKzI3MSw5IEBAIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgIC8vICAgYWRkIG1vcmUgdGhp
bmdzIGFmdGVyIGZhaWx1cmUuCiAgICAgCiAgICAgLy8gRmlyc3QgZW5zdXJlIHRoYXQgdGhlIG9y
aWdpbmFsQ2FzZXNUb0FkZCBkb2Vzbid0IGNvbnRhaW4gZHVwbGljYXRlcy4KLSAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOworICAgIFZlY3RvcjxSZWZQ
dHI8QWNjZXNzQ2FzZT4+IGNhc2VzVG9BZGQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG9yaWdpbmFsQ2FzZXNUb0FkZC5zaXplKCk7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2VzVG9BZGRbaV0pOwor
ICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbXlDYXNlID0gV1RGTW92ZShvcmlnaW5hbENhc2Vz
VG9BZGRbaV0pOwogCiAgICAgICAgIC8vIEFkZCBpdCBvbmx5IGlmIGl0IGlzIG5vdCByZXBsYWNl
ZCBieSB0aGUgc3Vic2VxdWVudCBjYXNlcyBpbiB0aGUgbGlzdC4KICAgICAgICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwpAQCAtMjg3LDggKzI5MCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9s
eW1vcnBoaWNBY2Nlc3M6OmFkZENhc2VzKAogICAgICAgICBjYXNlc1RvQWRkLmFwcGVuZChXVEZN
b3ZlKG15Q2FzZSkpOwogICAgIH0KIAotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFs
Ojp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJjYXNlc1RvQWRkOiAiLCBsaXN0RHVtcChjYXNl
c1RvQWRkKSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5h
bDo6dmVyYm9zZSwgImNhc2VzVG9BZGQ6ICIsIGxpc3REdW1wKGNhc2VzVG9BZGQpKTsKIAogICAg
IC8vIElmIHRoZXJlIGFyZW4ndCBhbnkgY2FzZXMgdG8gYWRkLCB0aGVuIGZhaWwgb24gdGhlIGdy
b3VuZHMgdGhhdCB0aGVyZSdzIG5vIHBvaW50IHRvIGdlbmVyYXRpbmcgYQogICAgIC8vIG5ldyBz
dHViIHRoYXQgd2lsbCBiZSBpZGVudGljYWwgdG8gdGhlIG9sZCBvbmUuIFJldHVybmluZyBudWxs
IHNob3VsZCB0ZWxsIHRoZSBjYWxsZXIgdG8ganVzdApAQCAtMzM5LDE2ICszNDEsMTUgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgICAg
IG1fbGlzdC5hcHBlbmQoV1RGTW92ZShjYXNlVG9BZGQpKTsKICAgICB9CiAgICAgCi0gICAgaWYg
KFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2coIkFm
dGVyIGFkZENhc2VzOiBtX2xpc3Q6ICIsIGxpc3REdW1wKG1fbGlzdCksICJcbiIpOworICAgIGRh
dGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UsICJBZnRlciBhZGRD
YXNlczogbV9saXN0OiAiLCBsaXN0RHVtcChtX2xpc3QpKTsKIAogICAgIHJldHVybiBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0OjpCdWZmZXJlZDsKIH0KIAogQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZSgKLSAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNM
b2NrZXImIGxvY2tlciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvLCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQor
ICAgIGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFJlZjxBY2Nlc3ND
YXNlPiBuZXdBY2Nlc3MpCiB7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiwgMj4gbmV3QWNjZXNzZXM7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gbmV3
QWNjZXNzZXM7CiAgICAgbmV3QWNjZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3QWNjZXNzKSk7CiAg
ICAgcmV0dXJuIGFkZENhc2VzKGxvY2tlciwgdm0sIGNvZGVCbG9jaywgc3R1YkluZm8sIFdURk1v
dmUobmV3QWNjZXNzZXMpKTsKIH0KQEAgLTM1OSw5ICszNjAsMTIgQEAgYm9vbCBQb2x5bW9ycGhp
Y0FjY2Vzczo6dmlzaXRXZWFrKFZNJiB2bSkgY29uc3QKICAgICAgICAgaWYgKCFhdChpKS52aXNp
dFdlYWsodm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBmb3IgKGNv
bnN0IFdyaXRlQmFycmllcjxKU0NlbGw+JiB3ZWFrUmVmZXJlbmNlIDogbV93ZWFrUmVmZXJlbmNl
cykgewotICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQod2Vha1JlZmVyZW5jZS5nZXQoKSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fc3R1YlJvdXRpbmUpIHsKKyAg
ICAgICAgZm9yIChTdHJ1Y3R1cmVJRCB3ZWFrUmVmZXJlbmNlIDogbV9zdHViUm91dGluZS0+d2Vh
a1N0cnVjdHVyZXMoKSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5n
ZXRTdHJ1Y3R1cmUod2Vha1JlZmVyZW5jZSk7CisgICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNN
YXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00MTksOCArNDIzLDcgQEAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2MKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CiAgICAgCi0gICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZl
cmJvc2UpCi0gICAgICAgIGRhdGFMb2coIlJlZ2VuZXJhdGUgd2l0aCBtX2xpc3Q6ICIsIGxpc3RE
dW1wKG1fbGlzdCksICJcbiIpOworICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50
ZXJuYWw6OnZlcmJvc2UsICJSZWdlbmVyYXRlIHdpdGggbV9saXN0OiAiLCBsaXN0RHVtcChtX2xp
c3QpKTsKIAogICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSBzdGF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBlY21hTW9kZSk7CiAKQEAgLTQ0MCw3ICs0NDMsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xv
YwogICAgIHVuc2lnbmVkIHNyY0luZGV4ID0gMDsKICAgICB1bnNpZ25lZCBkc3RJbmRleCA9IDA7
CiAgICAgd2hpbGUgKHNyY0luZGV4IDwgbV9saXN0LnNpemUoKSkgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2UgPSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsr
XSk7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBzb21lQ2FzZSA9IFdURk1vdmUobV9saXN0
W3NyY0luZGV4KytdKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBjYXNlIGhhZCBiZWVu
IGdlbmVyYXRlZCwgdGhlbiB3ZSBoYXZlIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGluIG1fbGlzdCBp
biBjYXNlIHdlCiAgICAgICAgIC8vIGZhaWwgdG8gcmVnZW5lcmF0ZS4gVGhhdCBjYXNlIG1heSBo
YXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBjb2RlIHRoYXQgaXQKQEAg
LTQ5MSw2ICs0OTQsOCBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvYwogICAgIGlmIChzdHViSW5m
by52LnRoaXNUYWdHUFIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
c3R1YkluZm8udi50aGlzVGFnR1BSKTsKICNlbmRpZgorICAgIGlmIChzdHViSW5mby5tX3N0dWJJ
bmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZv
Lm1fc3R1YkluZm9HUFIpOwogCiAgICAgc3RhdGUuc2NyYXRjaEdQUiA9IGFsbG9jYXRvci5hbGxv
Y2F0ZVNjcmF0Y2hHUFIoKTsKIApAQCAtNTAwLDEyICs1MDUsNiBAQCBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJl
bnRKU0xvYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAg
Q0NhbGxIZWxwZXJzIGppdChjb2RlQmxvY2spOwotICAgIHN0YXRlLmppdCA9ICZqaXQ7Ci0KLSAg
ICBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlID0KLSAgICAgICAgYWxsb2NhdG9y
LnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKICAgICBib29sIGdlbmVy
YXRlZEZpbmFsQ29kZSA9IGZhbHNlOwogCkBAIC01MTksMTQgKzUxOCw0MyBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvYwogICAgICAgICBnZW5lcmF0ZWRGaW5hbENvZGUgPSB0cnVlOwogICAgIH0K
IAotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBk
YXRhTG9nKCJPcHRpbWl6ZWQgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7Ci0gICAg
CisgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIk9w
dGltaXplZCBjYXNlczogIiwgbGlzdER1bXAoY2FzZXMpKTsKKworICAgIGJvb2wgZG9lc0NhbGxz
ID0gZmFsc2U7CisgICAgYm9vbCBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IGZhbHNlOworICAg
IGJvb2wgY2FuQmVTaGFyZWQgPSB0cnVlOworICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFy
azsKKyAgICBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+IGtleXMoY2FzZXMuc2l6ZSgp
KTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGNhc2Vz
KSB7CisgICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01h
cmspOworICAgICAgICBzd2l0Y2ggKGVudHJ5LT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBBY2Nl
c3NDYXNlOjpHZXR0ZXI6CisgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6U2V0dGVyOgorICAgICAg
ICAgICAgLy8gR2V0dGVyIC8gU2V0dGVyIHJlbGllcyBvbiBzdGFjay1wb2ludGVyIGFkanVzdG1l
bnQsIHdoaWNoIGlzIHRpZWQgdG8gdGhlIGxpbmtlZCBDb2RlQmxvY2ssIHdoaWNoIG1ha2VzIHRo
aXMgY29kZSB1bnNoYXJlYWJsZS4KKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7Cisg
ICAgICAgICAgICBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxscyA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpDdXN0b21WYWx1ZUdldHRlcjoKKyAgICAg
ICAgY2FzZSBBY2Nlc3NDYXNlOjpDdXN0b21BY2Nlc3NvckdldHRlcjoKKyAgICAgICAgY2FzZSBB
Y2Nlc3NDYXNlOjpDdXN0b21WYWx1ZVNldHRlcjoKKyAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpD
dXN0b21BY2Nlc3NvclNldHRlcjoKKyAgICAgICAgICAgIC8vIEN1c3RvbSBnZXR0ZXIgLyBzZXR0
ZXIgZW1pdHMgSlNHbG9iYWxPYmplY3QgcG9pbnRlciwgd2hpY2ggaXMgdGllZCB0byB0aGUgbGlu
a2VkIENvZGVCbG9jay4KKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGtleXNbaW5kZXhdID0gZW50cnk7CisgICAgICAgICsraW5kZXg7CisgICAg
fQorICAgIHN0YXRlLm1fZG9lc0NhbGxzID0gZG9lc0NhbGxzOworICAgIHN0YXRlLm1fZG9lc0pT
R2V0dGVyU2V0dGVyQ2FsbHMgPSBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxsczsKKwogICAgIC8vIEF0
IHRoaXMgcG9pbnQgd2UncmUgY29udmluY2VkIHRoYXQgJ2Nhc2VzJyBjb250YWlucyB0aGUgY2Fz
ZXMgdGhhdCB3ZSB3YW50IHRvIEpJVCBub3cgYW5kIHdlCiAgICAgLy8gd29uJ3QgY2hhbmdlIHRo
YXQgc2V0IGFueW1vcmUuCiAgICAgCiAgICAgYm9vbCBhbGxHdWFyZGVkQnlTdHJ1Y3R1cmVDaGVj
ayA9IHRydWU7Ci0gICAgYm9vbCBoYXNKU0dldHRlclNldHRlckNhbGwgPSBmYWxzZTsKICAgICBi
b29sIG5lZWRzSW50MzJQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N0cmlu
Z1Byb3BlcnR5Q2hlY2sgPSBmYWxzZTsKICAgICBib29sIG5lZWRzU3ltYm9sUHJvcGVydHlDaGVj
ayA9IGZhbHNlOwpAQCAtNTQyLDEwICs1NzAsNDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICAgICAgfQogICAgICAgICBjb21taXQobG9ja2VyLCB2bSwgc3RhdGUud2F0Y2hwb2ludHMs
IGNvZGVCbG9jaywgc3R1YkluZm8sICpuZXdDYXNlKTsKICAgICAgICAgYWxsR3VhcmRlZEJ5U3Ry
dWN0dXJlQ2hlY2sgJj0gbmV3Q2FzZS0+Z3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2soc3R1YkluZm8p
OwotICAgICAgICBpZiAobmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkdldHRlciB8fCBu
ZXdDYXNlLT50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6U2V0dGVyKQotICAgICAgICAgICAgaGFzSlNH
ZXR0ZXJTZXR0ZXJDYWxsID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5ld0Nhc2UtPnVzZXNQb2x5UHJv
dG8oKSkKKyAgICAgICAgICAgIGNhbkJlU2hhcmVkID0gZmFsc2U7CisgICAgfQorICAgIGlmIChu
ZWVkc1N5bWJvbFByb3BlcnR5Q2hlY2sgfHwgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrIHx8IG5l
ZWRzSW50MzJQcm9wZXJ0eUNoZWNrKQorICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOworCisg
ICAgYXV0byBmaW5pc2hDb2RlR2VuZXJhdGlvbiA9IFsmXShSZWZQdHI8UG9seW1vcnBoaWNBY2Nl
c3NKSVRTdHViUm91dGluZT4mJiBzdHViKSB7CisgICAgICAgIG1fc3R1YlJvdXRpbmUgPSBXVEZN
b3ZlKHN0dWIpOworICAgICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBv
aW50cyk7CisgICAgICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZl
cmJvc2UsICJSZXR1cm5pbmc6ICIsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKSk7CisKKyAgICAgICAg
bV9saXN0ID0gV1RGTW92ZShjYXNlcyk7CisgICAgICAgIG1fbGlzdC5zaHJpbmtUb0ZpdCgpOwor
CisgICAgICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OktpbmQgcmVzdWx0S2luZDsKKyAgICAg
ICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNzVmFyaWFudExpc3RTaXpl
KCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQorICAgICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZpbmFsQ29kZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZE5l
d0NvZGU7CisKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0S2lu
ZCwgbV9zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgfTsKKworICAgIENDYWxsSGVs
cGVycyBqaXQoY29kZUJsb2NrKTsKKyAgICBzdGF0ZS5qaXQgPSAmaml0OworCisgICAgaWYgKGNv
ZGVCbG9jay0+dXNlRGF0YUlDKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlLm1fZG9lc0pTR2V0dGVy
U2V0dGVyQ2FsbHMpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQg
c3RhY2stcG9pbnRlciBpcyB0aGUgZXhwZWN0ZWQgb25lLiBUaGlzIGlzIG5vdCBhIHByb2JsZW0g
aWYgd2UgZG8gbm90IGhhdmUgSlMgZ2V0dGVyIC8gc2V0dGVyIGNhbGxzIHNpbmNlIHN0YWNrLXBv
aW50ZXIgaXMKKyAgICAgICAgICAgIC8vIGEgY2FsbGVlLXNhdmUgcmVnaXN0ZXIgaW4gdGhlIEMg
Y2FsbGluZyBjb252ZW5zaW9uLiBIb3dldmVyLCBvdXIgSlMgZXhlY3V0YWJsZSBjYWxsIGRvZXMg
bm90IHNhdmUgc3RhY2stcG9pbnRlci4gU28gd2UgYXJlIGFkanVzdGluZyBzdGFjay1wb2ludGVy
IGFmdGVyCisgICAgICAgICAgICAvLyBKUyBnZXR0ZXIgLyBzZXR0ZXIgY2FsbHMuIEJ1dCB0aGlz
IGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBpbml0aWFsIHN0YWNrLXBvaW50ZXIsIGFuZCBt
YWtlcyBQQUMgdGFnZ2luZyBicm9rZW4uCisgICAgICAgICAgICAvLyBUbyBlbnN1cmUgUEFDLXRh
Z2dpbmcgd29yaywgd2UgZmlyc3QgYWRqdXN0IHN0YWNrLXBvaW50ZXIgdG8gdGhlIGFwcHJvcHJp
YXRlIG9uZS4KKyAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgfQogCisgICAgc3Rh
dGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZSA9CisgICAgICAgIGFsbG9jYXRvci5wcmVz
ZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOworICAgIAogICAgIGlmIChjYXNlcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyBzdXBlciB1bmxpa2VseSwgYnV0IHdlIG1h
a2UgaXQgbGVnYWwgYW55d2F5LgogICAgICAgICBzdGF0ZS5mYWlsQW5kUmVwYXRjaC5hcHBlbmQo
aml0Lmp1bXAoKSk7CkBAIC02OTAsNyArNzU1LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
IAogICAgIENvZGVCbG9jayogY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycyA9IG51
bGxwdHI7CiAgICAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckV4Y2Vw
dGlvbkhhbmRsaW5nOwotICAgIGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhj
ZXB0aW9uKCkgJiYgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxsKSB7CisgICAgaWYgKHN0YXRlLm5lZWRz
VG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSAmJiBkb2VzSlNHZXR0ZXJTZXR0ZXJDYWxs
cykgewogICAgICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAgICAgLy8g
Tm90ZSB0aGF0IHRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSB3aGVuIGRvaW5nIGdlbmVyaWNV
bndpbmQgZnJvbSBhIHB1cmUgSlMgZ2V0dGVyL3NldHRlciAuCiAgICAgICAgIC8vIE5vdGUgYWxz
byB0aGF0IHRoaXMgaXMgbm90IHJlYWNoYWJsZSBmcm9tIGN1c3RvbSBnZXR0ZXIvc2V0dGVyLiBD
dXN0b20gZ2V0dGVyL3NldHRlcnMgd2lsbCBoYXZlIApAQCAtNzMwLDQ4ICs3OTUsNjMgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhh
bmRsaW5nID0gc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCk7CiAgICAg
fQogCisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpIHsKKyAgICAgICAgZmFpbHVyZS5s
aW5rKCZqaXQpOworICAgICAgICAvLyBJbiBBUk02NCwgd2UgZG8gbm90IHB1c2ggYW55dGhpbmcg
b24gc3RhY2sgc3BlY2lhbGx5LgorICAgICAgICAvLyBTbyB3ZSBjYW4ganVzdCBqdW1wIHRvIHRo
ZSBzbG93LXBhdGggZXZlbiB0aG91Z2ggdGhpcyB0aHVuayBpcyBjYWxsZWQgKG5vdCBqdW1wZWQp
LgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRhaWwgY2FsbCB0byB0aGUgdGh1bmsgd2hp
Y2ggY2FsbHMgdGhlIHNsb3cgcGF0aCBmdW5jdGlvbi4KKyAgICAgICAgLy8gQW5kIHdlIHNob3Vs
ZCBlbGltaW5hdGUgSUMgc2xvdy1wYXRoIGdlbmVyYXRpb24gaW4gQmFzZWxpbmVKSVQuCisgICAg
ICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5tX3N0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSks
IEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9CisKKyAgICBSZWZQdHI8UG9seW1vcnBoaWNB
Y2Nlc3NKSVRTdHViUm91dGluZT4gc3R1YjsKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4g
d2Vha1N0cnVjdHVyZXMoV1RGTW92ZShzdGF0ZS53ZWFrU3RydWN0dXJlcykpOworICAgIGlmIChj
b2RlQmxvY2stPnVzZURhdGFJQygpICYmIGNhbkJlU2hhcmVkKSB7CisgICAgICAgIFNoYXJlZEpJ
VFN0dWJTZXQ6OlNlYXJjaGVyIHNlYXJjaGVyIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmJhc2VH
UFIsCisgICAgICAgICAgICBzdHViSW5mby52YWx1ZUdQUiwKKyAgICAgICAgICAgIHN0dWJJbmZv
LnJlZ3MudGhpc0dQUiwKKyAgICAgICAgICAgIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIsCisgICAg
ICAgICAgICBzdHViSW5mby51c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAga2V5cywKKyAgICAg
ICAgICAgIHdlYWtTdHJ1Y3R1cmVzLAorICAgICAgICB9OworICAgICAgICBzdHViID0gdm0ubV9z
aGFyZWRKSVRTdHVicy0+ZmluZChzZWFyY2hlcik7CisgICAgICAgIGlmIChzdHViKSB7CisgICAg
ICAgICAgICBkYXRhTG9nTG5JZihQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlLCAi
Rm91bmQgZXhpc3RpbmcgY29kZSBzdHViICIsIHN0dWItPmNvZGUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBjb2RlQmxvY2ssIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlm
IChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgaWYgKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nKCJEaWQgZmFp
bCB0byBhbGxvY2F0ZS5cbiIpOworICAgICAgICBkYXRhTG9nTG5JZihQb2x5bW9ycGhpY0FjY2Vz
c0ludGVybmFsOjp2ZXJib3NlLCAiRGlkIGZhaWwgdG8gYWxsb2NhdGUuIik7CiAgICAgICAgIHJl
dHVybiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHYXZlVXA7CiAgICAgfQogCiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc3VjY2Vzc0xhYmVsID0gc3R1YkluZm8uZG9u
ZUxvY2F0aW9uOwogCi0gICAgbGlua0J1ZmZlci5saW5rKHN0YXRlLnN1Y2Nlc3MsIHN1Y2Nlc3NM
YWJlbCk7Ci0KLSAgICBsaW5rQnVmZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAg
QVNTRVJUKHN0YXRlLnN1Y2Nlc3MuZW1wdHkoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGxpbmtC
dWZmZXIubGluayhzdGF0ZS5zdWNjZXNzLCBzdWNjZXNzTGFiZWwpOworICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoZmFpbHVyZSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICB9
CiAgICAgCi0gICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCi0gICAg
ICAgIGRhdGFMb2coRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBzdHViSW5mby5jb2RlT3JpZ2lu
KSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1YiBmb3IgIiwgbGlzdER1bXAo
Y2FzZXMpLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFs
Ojp2ZXJib3NlLCBGdWxsQ29kZU9yaWdpbihjb2RlQmxvY2ssIHN0dWJJbmZvLmNvZGVPcmlnaW4p
LCAiOiBHZW5lcmF0aW5nIHBvbHltb3JwaGljIGFjY2VzcyBzdHViIGZvciAiLCBsaXN0RHVtcChj
YXNlcykpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PiBjb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1ZmZl
ciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICIlcyIsIHRvQ1N0cmluZygiQWNjZXNz
IHN0dWIgZm9yICIsICpjb2RlQmxvY2ssICIgIiwgc3R1YkluZm8uY29kZU9yaWdpbiwgIiB3aXRo
IHJldHVybiBwb2ludCAiLCBzdWNjZXNzTGFiZWwsICI6ICIsIGxpc3REdW1wKGNhc2VzKSkuZGF0
YSgpKTsKLQotICAgIGJvb2wgZG9lc0NhbGxzID0gZmFsc2U7Ci0gICAgVmVjdG9yPEpTQ2VsbCo+
IGNlbGxzVG9NYXJrOwotICAgIGZvciAoYXV0byYgZW50cnkgOiBjYXNlcykKLSAgICAgICAgZG9l
c0NhbGxzIHw9IGVudHJ5LT5kb2VzQ2FsbHModm0sICZjZWxsc1RvTWFyayk7Ci0gICAgCi0gICAg
bV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxvY2ss
IGRvZXNDYWxscywgY2VsbHNUb01hcmssIFdURk1vdmUoc3RhdGUubV9jYWxsTGlua0luZm9zKSwg
Y29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2Vw
dGlvbkhhbmRsaW5nKTsKLSAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBv
aW50cyk7Ci0gICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAg
IG1fd2Vha1JlZmVyZW5jZXMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4oV1RG
TW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0lu
dGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29k
ZSgpLCAiXG4iKTsKICAgICAKLSAgICBtX2xpc3QgPSBXVEZNb3ZlKGNhc2VzKTsKLSAgICBtX2xp
c3Quc2hyaW5rVG9GaXQoKTsKLSAgICAKLSAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5k
IHJlc3VsdEtpbmQ7Ci0gICAgaWYgKG1fbGlzdC5zaXplKCkgPj0gT3B0aW9uczo6bWF4QWNjZXNz
VmFyaWFudExpc3RTaXplKCkgfHwgZ2VuZXJhdGVkRmluYWxDb2RlKQotICAgICAgICByZXN1bHRL
aW5kID0gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2VuZXJhdGVkRmluYWxDb2RlOwotICAgIGVs
c2UKLSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRl
ZE5ld0NvZGU7Ci0gICAgCi0gICAgcmV0dXJuIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQocmVzdWx0
S2luZCwgY29kZS5jb2RlKCkpOworICAgIHN0dWIgPSBjcmVhdGVJQ0pJVFN0dWJSb3V0aW5lKGNv
ZGUsIFdURk1vdmUoa2V5cyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpLCB2bSwgY29kZUJsb2Nr
LCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1fY2FsbExpbmtJbmZvcyks
IGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNl
cHRpb25IYW5kbGluZyk7CisKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkgeworICAg
ICAgICBpZiAoY2FuQmVTaGFyZWQpCisgICAgICAgICAgICB2bS5tX3NoYXJlZEpJVFN0dWJzLT5h
ZGQoU2hhcmVkSklUU3R1YlNldDo6SGFzaDo6S2V5KHN0dWJJbmZvLmJhc2VHUFIsIHN0dWJJbmZv
LnZhbHVlR1BSLCBzdHViSW5mby5yZWdzLnRoaXNHUFIsIHN0dWJJbmZvLm1fc3R1YkluZm9HUFIs
IHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMsIHN0dWIuZ2V0KCkpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmluaXNoQ29kZUdlbmVyYXRpb24oV1RGTW92ZShzdHViKSk7CiB9CiAKIHZvaWQgUG9seW1v
cnBoaWNBY2Nlc3M6OmFib3V0VG9EaWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCAyOTIwMzI2ZGNjOTE1NDc0YjNmMWVl
YjdmNzI1ZTZhYjM0YWVjYjQxLi41MDVmYWIzN2Y4ODk0MDE5MzkxNTMyNDcyY2MwM2ExOTZjYzUx
YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuaApAQCAtMTQxLDEwICsxNDEsMTAgQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3Mg
ewogICAgIC8vIFdoZW4gdGhpcyBmYWlscyAocmV0dXJucyBHYXZlVXApLCB0aGlzIHdpbGwgbGVh
dmUgdGhlIG9sZCBzdHViIGludGFjdCBidXQgeW91IHNob3VsZCBub3QgdHJ5CiAgICAgLy8gdG8g
Y2FsbCB0aGlzIG1ldGhvZCBhZ2FpbiBmb3IgdGhhdCBQb2x5bW9ycGhpY0FjY2VzcyBpbnN0YW5j
ZS4KICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IGFkZENhc2VzKAotICAgICAgICBjb25zdCBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4pOworICAgICAgICBj
b25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4pOwogCiAgICAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlKAotICAgICAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXImLCBWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgc3RkOjp1bmlx
dWVfcHRyPEFjY2Vzc0Nhc2U+KTsKKyAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9j
a2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFJlZjxBY2Nlc3NDYXNl
Pik7CiAgICAgCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZWdlbmVyYXRlKGNvbnN0IEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sq
LCBFQ01BTW9kZSwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICAKQEAgLTE3OSwxNiArMTc5LDE1
IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNzIHsKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2Nr
OwogICAgIGZyaWVuZCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlOwogICAgIAotICAgIHR5
cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gTGlzdFR5cGU7Cisg
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+LCAyPiBMaXN0VHlwZTsKICAgICAK
ICAgICB2b2lkIGNvbW1pdCgKICAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
JiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPiYs
IENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwKICAgICAgICAgQWNjZXNzQ2FzZSYpOwog
CiAgICAgTGlzdFR5cGUgbV9saXN0OwotICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gbV9zdHVi
Um91dGluZTsKKyAgICBSZWZQdHI8UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZT4gbV9z
dHViUm91dGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0
dWJJbmZvPiBtX3dhdGNocG9pbnRzOwotICAgIEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+PiBtX3dlYWtSZWZlcmVuY2VzOwogfTsKIAogc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSB7CkBAIC0xOTYsNiArMTk1LDggQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAg
ICAgICAgIDogbV92bSh2bSkgCiAgICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgICAgICwgbV9kb2VzSlNHZXR0
ZXJTZXR0ZXJDYWxscyhmYWxzZSkKKyAgICAgICAgLCBtX2RvZXNDYWxscyhmYWxzZSkKICAgICAg
ICAgLCBtX2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoZmFs
c2UpCiAgICAgICAgICwgbV9uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKGZhbHNl
KQogICAgICAgICAsIG1fY2FsY3VsYXRlZENhbGxTaXRlSW5kZXgoZmFsc2UpCkBAIC0yMjMsMTAg
KzIyNCwxMiBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICBGUFJSZWcgc2Ny
YXRjaEZQUiB7IEludmFsaWRGUFJSZWcgfTsKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlIHsgRUNN
QU1vZGU6OnNsb3BweSgpIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1
Y3R1cmVTdHViSW5mbz4gd2F0Y2hwb2ludHM7Ci0gICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+PiB3ZWFrUmVmZXJlbmNlczsKKyAgICBWZWN0b3I8U3RydWN0dXJlSUQ+IHdlYWtTdHJ1Y3R1
cmVzOwogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAgICBib29sIG1f
ZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgOiAxOworICAgIGJvb2wgbV9kb2VzQ2FsbHMgOiAxOwog
Ci0gICAgdm9pZCBpbnN0YWxsV2F0Y2hwb2ludChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biYpOworICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoQ29kZUJsb2NrKiwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24mKTsKIAogICAgIHZvaWQgcmVzdG9yZVNjcmF0Y2goKTsKICAgICB2
b2lkIHN1Y2NlZWQoKTsKQEAgLTI0OCw3ICsyNTEsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlv
blN0YXRlIHsKICAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0Zv
ckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgU3BpbGxTdGF0ZSBwcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7IH0p
OwotICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGxXaXRo
b3V0RXhjZXB0aW9ucygpOworICAgIFNwaWxsU3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9T
dGFja0ZvckNhbGxXaXRob3V0RXhjZXB0aW9ucyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEgPSB7
IH0pOwogCiAgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRo
VGhyb3duRXhjZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVMaXZl
UmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0
ZXJTZXQmIGRvbnRSZXN0b3JlID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAppbmRleCBjYzI5NzNjOTRlMTE2
MmEzODllMmVmNTBlZWE2YTNiMzRlNzVmYTlkLi40YmY3ODBlZDMxNzY2ZWRlNmJjYzU2MDQ0NmE1
MDc5YWNiY2MxMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgUHJveHlhYmxl
QWNjZXNzQ2FzZTo6UHJveHlhYmxlQWNjZXNzQ2FzZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUgYWNjZXMKICAgICBtX3ZpYVByb3h5ID0gdmlhUHJveHk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwg
V2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiYmIHByb3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vz
c0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0
aW9uU2V0LCBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBSZWZQ
dHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAg
QVNTRVJUKHR5cGUgPT0gTG9hZCB8fCB0eXBlID09IE1pc3MgfHwgdHlwZSA9PSBHZXRHZXR0ZXIg
fHwgdHlwZSA9PSBSZXBsYWNlKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KG5ldyBQcm94eWFibGVBY2Nlc3NDYXNlKHZtLCBvd25lciwgdHlwZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlhUHJveHksIGFkZGl0aW9uYWxTZXQs
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUsIGlkZW50aWZpZXIsIG9mZnNl
dCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBhZGRpdGlvbmFsU2V0LCBXVEZN
b3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOwogfQogCiBQcm94eWFibGVBY2Nlc3NDYXNlOjp+
UHJveHlhYmxlQWNjZXNzQ2FzZSgpCiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gUHJv
eHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm94eWFibGVBY2Nlc3NDYXNlPiByZXN1bHQobmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2UoKnRoaXMp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSgq
dGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vz
c0Nhc2UuaAppbmRleCBkYzM5ZTI2Y2EyZjRiMmI3YWJhMTJiNWE1NWYzMjY2NDQxMGVmYTVjLi5l
ODQzODVjYTc1YzlmNzUyZThlOGUxNmNkZGUwYWJjYWM3YmNjNGQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKQEAgLTM3
LDExICszNywxMSBAQCBjbGFzcyBQcm94eWFibGVBY2Nlc3NDYXNlIDogcHVibGljIEFjY2Vzc0Nh
c2UgewogCiAgICAgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYWRkaXRpb25hbFNldC5nZXQoKTsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLCBjb25zdCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgp
LAogICAgICAgICBib29sIHZpYVByb3h5ID0gZmFsc2UsIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9u
YWxTZXQgPSBudWxscHRyLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgPSBudWxscHRy
KTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25z
dCBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIH5Qcm94eWFibGVBY2Nlc3NDYXNlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGFm
YWU0ZTg0MmZjN2Q0ZGQxZWRlOGViYmNlZWViYjRlMjZkYjIyYTQuLmM0NTgzZDNmZjlmNTRjNmI2
ZTEzMWEzZTA0M2QzZGYyMjQxOGMwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNTIsNiArNTIsNyBAQCBTdHJ1
Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaQogICAgICwgcHJvcGVydHlJc0ludDMyKGZhbHNlKQogICAgICwg
cHJvcGVydHlJc1N5bWJvbChmYWxzZSkKIHsKKyAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BS
UmVnOwogfQogCiBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZvKCkKQEAgLTEz
OSw3ICsxNDAsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKCkKIH0KIAog
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgK
LSAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFNb2RlIGVjbWFNb2Rl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
YWNjZXNzQ2FzZSkKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVDTUFN
b2RlIGVjbWFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50LCBSZWZQdHI8QWNjZXNzQ2Fz
ZT4gYWNjZXNzQ2FzZSkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTE1NSw3ICsx
NTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nl
c3NDYXNlKAogICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAgICAg
CiAgICAgICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIpIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRkQ2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlz
LCBXVEZNb3ZlKGFjY2Vzc0Nhc2UpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHUuc3R1Yi0+YWRk
Q2FzZShsb2NrZXIsIHZtLCBjb2RlQmxvY2ssICp0aGlzLCBhY2Nlc3NDYXNlLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9J
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYWQgc3R1YiwgcmVz
dWx0OiAiLCByZXN1bHQsICJcbiIpOwpAQCAtMTcwLDkgKzE3MSw5IEBAIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2Vz
cyA9IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2Vz
OworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBw
cmV2aW91c0Nhc2UgPSBBY2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8odm0sIGNvZGVC
bG9jaywgaWRlbnQsICp0aGlzKTsKKyAgICAgICAgICAgIGF1dG8gcHJldmlvdXNDYXNlID0gQWNj
ZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhp
cyk7CiAgICAgICAgICAgICBpZiAocHJldmlvdXNDYXNlKQogICAgICAgICAgICAgICAgIGFjY2Vz
c0Nhc2VzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzQ2FzZSkpOwogICAgICAgICAgICAgCkBAIC0y
NzksNyArMjgwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRJbkJ5
KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpOb3JtYWxCeVZhbCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKLSAgICAgICAgcmVzZXRJbnN0YW5j
ZU9mKCp0aGlzKTsKKyAgICAgICAgcmVzZXRJbnN0YW5jZU9mKGNvZGVCbG9jaywgKnRoaXMpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAg
IHJlc2V0RGVsQnkoY29kZUJsb2NrLCAqdGhpcywgRGVsQnlLaW5kOjpOb3JtYWwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRl
eCBhOTQwNWRjZWI5ZjAyNGYwNDkyMmE2NzUzMDE0MThkYTZlZDM3OTg5Li4wZjY3NzVmMTZmYmM1
YmFhZmQ3YTY3MTE3YzUwMTRmZGY3ZTYzNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtODgsNyArODgsNyBAQCBjbGFz
cyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgdm9pZCBpbml0UHV0QnlJZFJlcGxhY2UoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVj
dFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgaW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9j
ayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hl
YWJsZUlkZW50aWZpZXIpOwogCi0gICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRBY2Nlc3ND
YXNlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgRUNNQU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPik7CisgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRBY2Nlc3NDYXNlKGNv
bnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgRUNNQU1vZGUsIENhY2hlYWJsZUlkZW50aWZpZXIsIFJlZlB0cjxBY2Nlc3NDYXNlPik7CiAK
ICAgICB2b2lkIHJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sq
KTsKIApAQCAtMTM0LDEyICsxMzQsNiBAQCBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAg
ICAgIHJldHVybiBpbmxpbmVTaXplOwogICAgIH0KIAotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4gcGF0Y2hhYmxlSnVtcCgpCi0gICAgeyAKLSAgICAgICAgQVNTRVJUKGFj
Y2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6SW5zdGFuY2VPZik7Ci0gICAgICAgIHJldHVybiBzdGFy
dC5qdW1wQXRPZmZzZXQ8SlNJbnRlcm5hbFB0clRhZz4oMCk7Ci0gICAgfQotCiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVn
cygKQEAgLTM0NSwxOSArMzM5LDMwIEBAIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvIHsKIHB1Ymxp
YzoKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc3RhcnQ7IC8v
IFRoaXMgaXMgZWl0aGVyIHRoZSBzdGFydCBvZiB0aGUgaW5saW5lIElDIGZvciAqYnlJZCBjYWNo
ZXMuIG9yIHRoZSBsb2NhdGlvbiBvZiBwYXRjaGFibGUganVtcCBmb3IgJ2luc3RhbmNlb2YnIGNh
Y2hlcy4KICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRp
b247Ci0gICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aENhbGxM
b2NhdGlvbjsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gc2xv
d1BhdGhTdGFydExvY2F0aW9uOwogCisgICAgdW5pb24geworICAgICAgICBDb2RlTG9jYXRpb25D
YWxsPEpTSW50ZXJuYWxQdHJUYWc+IG1fc2xvd1BhdGhDYWxsTG9jYXRpb247CisgICAgICAgIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gbV9zbG93T3BlcmF0aW9uOworICAgIH07CisKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fY29kZVB0cjsK
KworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlUHRyKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX2NvZGVQdHIpOyB9CisgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZlNsb3dQYXRoU3RhcnRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgc2xvd1BhdGhTdGFydExvY2F0aW9uKTsgfQorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZVN0dWJJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9CisKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwogCi0gICAgR1BSUmVnIGJhc2VHUFI7Ci0gICAgR1BS
UmVnIHZhbHVlR1BSOworICAgIEdQUlJlZyBiYXNlR1BSIHsgSW52YWxpZEdQUlJlZyB9OworICAg
IEdQUlJlZyB2YWx1ZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICB1bmlvbiB7CiAgICAgICAg
IEdQUlJlZyB0aGlzR1BSOwogICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSOwogICAgICAgICBH
UFJSZWcgcHJvcGVydHlHUFI7CiAgICAgICAgIEdQUlJlZyBicmFuZEdQUjsKICAgICB9IHJlZ3M7
CisgICAgR1BSUmVnIG1fc3R1YkluZm9HUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFI7CiAgICAgLy8gRklYTUU6IFszMi1i
aXRzXSBDaGVjayBpZiBTdHJ1Y3R1cmVTdHViSW5mbzo6YmFzZVRhZ0dQUiBpcyB1c2VkIHNvbWV3
aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCAx
ODc1NDNkMTZlZDA2ODA4YjlhMTYxN2M1N2ZlZWFkZDcyMGNhNzY0Li45NmJmYzVhMzAzOWEzNjBm
ZDEwYWE0MDk0ZjU3MDYwYTdjZGE5YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCkBAIC0xNTQsNiArMTU0LDExIEBAIGNsYXNzIEpJVENvbXBpbGVyIDog
cHVibGljIENDYWxsSGVscGVycyB7CiAgICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVj
b3JkKGZ1bmN0aW9uQ2FsbCwgZnVuY3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2Fs
bDsKICAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBjYWxsKGFkZHJlc3MsIE9wZXJhdGlvblB0clRhZyk7Cisg
ICAgfQogICAgIAogICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDI1YTEyMTlmZGQ0
M2JkZmUzYzA3YjhhMjc0ZGY4ZTBlNTc4OGQyYjUuLjYzZTk1MmVmMWUyNGY4ZWNmZjIxYzExM2Nh
ZmE2ZDkwNjQxZjg0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmgKQEAgLTI2NCw2ICsyNjQsNjUgQEAgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogICAgICAgICBmcm9tLCBqaXQs
IGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
SnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorY2xhc3MgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRo
SUNHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgQ2FsbFNsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBSZXN1bHRUeXBlPiB7CitwdWJsaWM6CisgICAgQ2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQ
YXRoSUNHZW5lcmF0b3IoCisgICAgICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBq
aXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUg
ZnVuY3Rpb24sCisgICAgICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlv
bkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dHMuLi4gYXJndW1lbnRzKQorICAgICAgICA6IENhbGxTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlw
ZSwgUmVzdWx0VHlwZT4oZnJvbSwgaml0LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQp
CisgICAgICAgICwgbV9zdHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgLCBtX3Nsb3dQ
YXRoT3BlcmF0aW9uQWRkcmVzcyhzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MpCisgICAgICAgICwg
bV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX2FyZ3VtZW50cyhzdGQ6OmZvcndhcmQ8
QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKQorICAgICAgICAsIG1fc3R1YkluZm8oc3R1YkluZm8p
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4gQXJndW1l
bnRzSW5kZXg+CisgICAgdm9pZCB1bnBhY2tBbmRHZW5lcmF0ZShTcGVjdWxhdGl2ZUpJVCogaml0
LCBzdGQ6OmluZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7CisgICAgICAg
IEFTU0VSVChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSk7CisgICAgICAgIHRo
aXMtPnNldFVwKGppdCk7CisgICAgICAgIG1fc3R1YkluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG1f
ZnVuY3Rpb247CisgICAgICAgIGppdC0+bV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm9HUFIpOworICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZTxSZXN1bHRUeXBlLCBOb1Jlc3VsdFRhZz46OnZhbHVlKQorICAgICAgICAg
ICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFk
ZHJlc3MsIHN0ZDo6Z2V0PEFyZ3VtZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb248RnVuY3Rpb25UeXBlPihtX3Ns
b3dQYXRoT3BlcmF0aW9uQWRkcmVzcywgZXh0cmFjdFJlc3VsdCh0aGlzLT5tX3Jlc3VsdCksIHN0
ZDo6Z2V0PEFyZ3VtZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pOworICAgICAgICB0aGlzLT50
ZWFyRG93bihqaXQpOworICAgIH0KKworICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxh
dGl2ZUpJVCogaml0KSBmaW5hbAorICAgIHsKKyAgICAgICAgdW5wYWNrQW5kR2VuZXJhdGUoaml0
LCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJn
dW1lbnRzLi4uPj46OnZhbHVlPigpKTsKKyAgICB9CisKKyAgICBHUFJSZWcgbV9zdHViSW5mb0dQ
UjsKKyAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3M7
CisgICAgRnVuY3Rpb25UeXBlIG1fZnVuY3Rpb247CisgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMu
Li4+IG1fYXJndW1lbnRzOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlw
ZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhJQ0NhbGwoCisgICAgSnVtcFR5cGUg
ZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBH
UFJSZWcgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyBzbG93UGF0aE9wZXJhdGlv
bkFkZHJlc3MsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwKKyAgICBTcGlsbFJlZ2lzdGVyc01vZGUg
c3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAorICAgIFJl
c3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yPEp1bXBU
eXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KGZyb20sIGppdCwg
c3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0aW9u
LCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1l
IFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxsKAorICAgIEp1bXBUeXBlIGZyb20s
IFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVn
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mgc2xvd1BhdGhPcGVyYXRpb25BZGRy
ZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3Vt
ZW50cy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIHNsb3dQYXRoSUNDYWxsKGZyb20sIGpp
dCwgc3R1YkluZm8sIHN0dWJJbmZvR1BSLCBzbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGZ1bmN0
aW9uLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQs
IHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
CiAjZW5kaWYgLy8gRU5BQkxEKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDdlODczNTNjMmYyZTIxNTJkOTFlZGExNmY1
MTIyNWMzZWI2ZmYxNGMuLjQ5ODNhMjJhYWZiNWMwMjI2ZTI1NTFiMDg0M2Y4MzMwMTcyNWQ4ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0xMDQ2LDI0ICsxMDQ2LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eUlkKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdz
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0K
ICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBhY2Nlc3NUeXBl
KTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdz
LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBK
SVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgYWNjZXNzVHlwZSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVu
Q2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50
eXBlZFVzZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisg
ICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdw
cigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1Zh
bHVlUmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKIApAQCAtMTA3MSw3ICsxMDgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5SWQoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwog
Ci0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywg
cmVzdWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9T
cGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGls
ZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwODcsMjcgKzEwOTks
MzkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2Rl
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7Ci0KICAgICAgICAgSlNWYWx1ZVJl
Z3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOwor
ICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZS5ncHIoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAot
ICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJl
c3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAo
KSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBEb250U3BpbGwsIGFj
Y2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0
YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpz
VmFsdWVSZWdzKCk7Ci0KICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIg
PSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CkBAIC0xMTE2LDcgKzExNDAs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlJZEZsdXNoKE5vZGUqIG5vZGUs
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RD
ZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRH
ZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUt
PmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RD
ZWxsLCBEb250U3BpbGwsIGFjY2Vzc1R5cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OwogICAgICAgICBicmVhazsKQEAgLTExMzEsMTQgKzExNTUsMTkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5
cGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQog
ewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVl
UmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKKyAg
ICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3By
KCk7CisgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7Ci0KICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKQEAgLTExNDgsMjAgKzExNzcsMzUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAogICAg
ICAgICBKSVREZWxCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksCisgICAgICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
KTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwK
LSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52
YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSk7CisgICAgICAgIH0KICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1v
ZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1f
aml0LmFkZERlbEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xMTkwLDIyICsxMjM0LDI3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIHsKICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLQogICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7Ci0KICAgICAgICAgSlNW
YWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBrZXkpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BS
ID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVn
cygpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICAgICAgc3BlY3VsYXRl
KG5vZGUsIG5vZGUtPmNoaWxkMigpKTsKKwogICAgICAgICBpZiAobmVlZHNUeXBlQ2hlY2sobm9k
ZS0+Y2hpbGQyKCksIFNwZWNDZWxsKSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGtleVJlZ3MpKTsKIApAQCAtMTIxNCwyMCArMTI2MywzNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAog
ICAgICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3Ms
IHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRG
R0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCht
X2ppdCk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAg
ICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVC
eVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Cisg
ICAgICAgIH0KICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Cisg
ICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0KICNl
bmRpZgogCiAgICAgICAgIG1faml0LmFkZERlbEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtMTI1Niw5ICsxMzIwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVC
eVZhbChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5v
ZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSwgUGF5bG9hZFdv
cmQpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8u
ZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7Cisg
ICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIApAQCAtMTI2OCwxNCArMTMzOCwyNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAgICAgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25I
YW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAg
ICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwogICAg
IEpJVEluQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJl
Z3MpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHJlc3VsdFJlZ3Ms
IHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAKLSAgICBh
dXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCks
IHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAotICAgICAgICBOZWVkVG9TcGlsbCwgRXhj
ZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAorICAgICAgICAgICAg
TmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAg
ICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlJ
ZE9wdGltaXplLAorICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgfQog
CiAgICAgbV9qaXQuYWRkSW5CeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTEyODgsNyArMTM2OSwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVP
cGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIFJldXNlLCBrZXkpOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgSlNW
YWx1ZVJlZ3Mga2V5UmVncyA9IGtleS5qc1ZhbHVlUmVncygpOwogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwpAQCAtMTI5NiwxOCArMTM4MywzMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogICAgIGJhc2UudXNlKCk7
CiAgICAga2V5LnVzZSgpOwogCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CisKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncyk7Cisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZUdQUiksIGtleVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkp
OwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgZ2VuLnNsb3dQ
YXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsCi0gICAgICAgIE5lZWRU
b1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBu
dWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZv
KCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlWYWxP
cHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIGtleVJlZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5
VmFsT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1
aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5
VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1v
dmUoc2xvd1BhdGgpKTsKQEAgLTM2MDMsOSArMzcwMiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNl
LCBKUwogewogICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9
PSBHZXRQcml2YXRlTmFtZSk7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBt
X2dyYXBoLmNoaWxkKG5vZGUsIDEpLnVzZUtpbmQoKSA9PSBTeW1ib2xVc2UpOwotICAgIHNwZWN1
bGF0ZVN5bWJvbChtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8
R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CisKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5m
by5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsK
KyAgICB9CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAg
ICBzcGVjdWxhdGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CisKICAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgQ2FsbFNpdGVJbmRl
eCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5k
bGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBS
ZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAtMzYx
NiwxNCArMzcyNSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5h
bWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAKICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsIHVzZWRSZWdpc3RlcnMsCi0gICAg
ICAgIGJhc2UsIHByb3BlcnR5LCByZXN1bHQucmVncygpKTsKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OkdldFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlLCBwcm9wZXJ0eSwg
cmVzdWx0UmVncywgc3R1YkluZm9HUFIpOwogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlz
U3ltYm9sID0gdHJ1ZTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4u
c2xvd1BhdGhKdW1wKCkpOwotCi0gICAgYXV0byBtYWtlU2xvd1BhdGhDYWxsID0gWyZdKGF1dG8g
YmFzZSkgeworICAgIGF1dG8gbWFrZVNsb3dQYXRoSUNDYWxsID0gWyZdKGF1dG8gYmFzZSkgewor
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAg
ICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAorICAgICAgICAgICAgICAgIHJlc3Vs
dC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAg
YmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKICAgICAgICAgICAg
IHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCkBAIC0zNjMx
LDggKzM3NDYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVC
eVZhbChOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgIH07CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gYmFzZUlzS25vd25DZWxs
Ci0gICAgICAgID8gbWFrZVNsb3dQYXRoQ2FsbChDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
LnBheWxvYWRHUFIoKSkpCi0gICAgICAgIDogbWFrZVNsb3dQYXRoQ2FsbChiYXNlKTsKKyAgICAg
ICAgPyBtYWtlU2xvd1BhdGhJQ0NhbGwoQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZS5wYXls
b2FkR1BSKCkpKQorICAgICAgICA6IG1ha2VTbG93UGF0aElDQ2FsbChiYXNlKTsKIAogICAgIG1f
aml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM2NDQsMjggKzM3NTksNDAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2RlKQogewog
ICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VLaW5kKCkpIHsKICAgICBjYXNl
IENlbGxVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQo
bm9kZSwgMCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIGJhc2UpOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BS
ID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VS
ZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFj
Y2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBzdHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNo
aWxkKG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BS
UmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsK
KyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5m
b0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3Jt
YXRKUyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzc2NCwyOSArMzg5MSw0MCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2RlKQogeworICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CisKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5l
bXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAg
ICB9CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAg
ICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0KLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKICAgICAv
LyBXZSBlbWl0IHByb3BlcnR5IGNoZWNrIGR1cmluZyBERkcgZ2VuZXJhdGlvbiwgc28gd2UgZG9u
J3QgbmVlZAogICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCiAgICAgYXV0byBwdXRLaW5kID0gbm9k
ZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBQdXRLaW5kOjpEaXJlY3RQcml2
YXRlRmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQ7Ci0gICAgY2Fj
aGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2Ny
YXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6
c3RyaWN0KCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNl
R1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCksIHB1dEtpbmQsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKICAgICBub1Jlc3Vs
dChub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJy
YW5kKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJ
bmZvOwogICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJyYW5kVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwog
CisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFj
ZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQog
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgR1BS
UmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIAogICAgIHNwZWN1bGF0ZVN5bWJvbChu
b2RlLT5jaGlsZDIoKSwgYnJhbmRHUFIpOwpAQCAtMzgwMCwxNiArMzkzOCwyNCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKIAog
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNv
ZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRl
QnJhbmQsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIGJhc2VSZWdzLCBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJy
YW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBiYXNlUmVncywgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgZ2VuLnN0dWJJbmZvKCktPnBy
b3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
LSAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAor
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNj
ZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1v
dmUoc2xvd1BhdGgpKTsKQEAgLTM4MjAsOSArMzk2NiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVTZXRQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpOworICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgR1BSUmVnIGJyYW5kR1BSID0gYnJhbmRWYWx1ZS5ncHIoKTsKIApAQCAtMzgzNCwxNiArMzk4
NiwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUq
IG5vZGUpCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygp
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCB1c2Vk
UmVnaXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUikpOworICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6
U2V0UHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0
dWJJbmZvR1BSKTsKIAogICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1
ZTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LCAKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwK
KyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9S
ZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJh
bmRHUFIpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOwpAQCAtMzk2MSwyMiArNDEyMSwyOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
T3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSogbm9kZSkKICAgICB1bmJsZXNzZWRCb29sZWFuUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzLCBKU1Zh
bHVlUmVncyBwcm90b3R5cGVSZWdzLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSogbm9kZSwgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVSZWdzLCBHUFJSZWcgcmVz
dWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2Ny
YXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlKQogewogICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9IG1faml0LmFkZENhbGxTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgCiAgICAgSklUSW5zdGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0
LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRS
ZWdpc3RlcnMoKSwgcmVzdWx0R1BSLAotICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBw
cm90b3R5cGVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycygpLCByZXN1bHRHUFIsCisgICAgICAg
IHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHByb3RvdHlwZVJlZ3MucGF5bG9hZEdQUigpLCBzdHVi
SW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsCiAgICAgICAgIG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkuaXNUeXBlKFNwZWNPYmplY3QgfCB+U3BlY0NlbGwpKTsKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0gICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChzbG93Q2FzZSk7Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAgICAg
IHByb3RvdHlwZVJlZ3MpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkp
IHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVn
cywgcHJvdG90eXBlUmVncyk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2Yo
Z2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShz
bG93UGF0aCkpOwpAQCAtMzk4Nyw2ICs0MTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZQogICAgICAgICAmJiBub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90
eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgCkBAIC0zOTk0LDEzICs0MTYxLDE4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaDIodGhpcyk7CiAgICAgICAgIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAg
ICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBHUFJS
ZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9
IHByb3RvdHlwZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBH
UFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGNv
bXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9kZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1Zh
bHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BS
KTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCBKU1ZhbHVlUmVncyh2
YWx1ZUdQUiksIEpTVmFsdWVSZWdzKHByb3RvdHlwZUdQUiksIHJlc3VsdEdQUiwgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgCiAgICAgICAgIGJsZXNzZWRC
b29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwMTAs
MTIgKzQxODIsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9k
ZSogbm9kZSkKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBo
KCksIG5vZGUsIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAK
KyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHBy
b3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAKKyAgICBH
UFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMp
OworICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBKU1ZhbHVlUmVn
cyBwcm90b3R5cGVSZWdzID0gcHJvdG90eXBlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC00MDMx
LDcgKzQyMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOb2Rl
KiBub2RlKQogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJh
bmNoSWZOb3RDZWxsKHByb3RvdHlwZVJlZ3MpOwogICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9m
Rm9yQ2VsbHMobm9kZSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzLCByZXN1bHRHUFIsIHNjcmF0
Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNlKTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZv
ckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywgcmVzdWx0R1BSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiwgSW52YWxpZEdQUlJlZywgc2xvd0Nhc2UpOwogICAgIAogICAgIGRv
bmUubGluaygmbV9qaXQpOwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CkBAIC0xMzI3Niw0NiArMTM0NTQsNjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVRvSW5kZXhTdHJpbmcoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5SWRGbHVzaChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVS
ZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAoKSwgRG9udFNwaWxsKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2Rl
KCksIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CiAKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWQoTm9kZSogbm9k
ZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAg
c3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+
Z3ByKCk7CisgICAgfQogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKIAotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdz
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQ
dXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9k
ZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUq
IG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJS
ZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1Yklu
Zm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7Cisg
ICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVn
cywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
UHV0S2luZDo6RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAogICAgIG5vUmVzdWx0KG5vZGUp
OwogfQpAQCAtMTQ5NDIsMTggKzE1MTM4LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQcm9maWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2hHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBl
Y21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywg
R1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkK
IHsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygp
OwogICAgIGlmIChzcGlsbE1vZGUgPT0gRG9udFNwaWxsKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFs
cmVhZHkgZmx1c2hlZCByZWdpc3RlcnMgdG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNw
aWxsIHRoZXNlLgogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAg
ICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHZhbHVlUmVncywgZmFsc2UpOworICAgICAgICBpZiAo
c3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMu
c2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgfQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JF
eGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCisgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiks
IHZhbHVlUmVncywgc3R1YkluZm9HUFIsCiAgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBw
dXRLaW5kKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKQEAgLTE0OTYzLDkg
KzE1MTYxLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdp
biBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKLSAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
SUNDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRz
KCkpOworICAgIH0KIAogICAgIG1faml0LmFkZFB1dEJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGY4YjI5OThkNGQx
N2JlY2U0MzZkMThmOTkxNzRmNmViY2M4OTg0ODMuLjI5YmEyOWFlNDc2NmVhZWJjN2ZlYzc4ZGYx
YWE0ZDdkNTQ2NWM2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTcxOSwxNiArNzE5LDE2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsK
IAogICAgIHZvaWQgY29tcGlsZUNoZWNrRGV0YWNoZWQoTm9kZSopOwogCi0gICAgdm9pZCBjYWNo
ZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3Vs
dCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQs
IFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBjYWNoZWRQdXRCeUlk
KENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQdXRLaW5kLCBFQ01BTW9kZSwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGls
bFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0
dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNhY2hl
ZFB1dEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgUHV0S2luZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwp
OwogICAgIHZvaWQgY2FjaGVkR2V0QnlWYWwoQ29kZU9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB2b2lkIGNhY2hl
ZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGls
bFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhU
aGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0
JiBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAgICB2b2lkIGNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIs
IEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CisgICAg
dm9pZCBjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hl
YWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJn
ZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9u
ZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xv
d1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7Ci0gICAgdm9pZCBj
YWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUs
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFJPck5vbmUsIEdQUlJlZyB0
aGlzUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRH
UFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xv
d1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CisgICAgdm9pZCBjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBh
eWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBH
UFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOworICAgIHZv
aWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFnR1BST3JO
b25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BST3JOb25lLCBHUFJS
ZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJlZyByZXN1bHRQYXls
b2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExp
c3QoKSk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5SWQoTm9kZSopOwpAQCAt
NzUxLDcgKzc1MSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGdlbmVyaWNK
U1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAg
ICAgYm9vbCBnZW5lcmljSlNWYWx1ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNl
KTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMoTm9kZSosIEpTVmFs
dWVSZWdzIHZhbHVlR1BSLCBKU1ZhbHVlUmVncyBwcm90b3R5cGVHUFIsIEdQUlJlZyByZXN1bHRH
UFQsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dDYXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CisgICAgdm9pZCBjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3Mg
cHJvdG90eXBlR1BSLCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dD
YXNlID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZihO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoTm9kZSopOwpAQCAtOTQ5LDYgKzk0OSwyNiBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlw
ZW5hbWUgUmVzdWx0UmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVuYWJsZV9p
Zl90PAorICAgICAgICBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LAor
ICAgIHZvaWQ+CisgICAgY2FsbE9wZXJhdGlvbihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVz
cywgUmVzdWx0UmVnVHlwZSByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3Ms
IGFyZ3MuLi4pOworICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCksIHJlc3VsdCk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBzdGQ6OmVuYWJsZV9pZl90PAorICAgICAgICAhRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46Omhhc1Jlc3VsdCwKKyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KGFkZHJlc3Ms
IGFyZ3MuLi4pOworICAgICAgICBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpub25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCkpOworICAgIH0KKwogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihW
X0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsK
ICAgICAgICAgLy8gRG8gbm90IHJlZ2lzdGVyIENvZGVCbG9jayogYXMgYSB3ZWFrLXBvaW50ZXIu
CkBAIC05ODgsNiArMTAwOCwxMyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJl
dHVybiBtX2ppdC5hcHBlbmRDYWxsKGZ1bmN0aW9uKTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVu
ZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBwcmVw
YXJlRm9yRXh0ZXJuYWxDYWxsKCk7CisgICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4o
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgbV9qaXQuYXBwZW5kQ2Fs
bChhZGRyZXNzKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRPcGVyYXRp
b25DYWxsKGNvbnN0IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAg
ewogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CkBAIC0xMDEwLDYgKzEwMzcsMjgg
QEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAK
KyAgICB2b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJl
c3MsIEdQUlJlZyByZXN1bHQpCisgICAgeworICAgICAgICBhcHBlbmRDYWxsKGFkZHJlc3MpOwor
ICAgICAgICBpZiAocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBtX2ppdC5t
b3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgIH0KKworICAgIHZvaWQg
YXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcywgR1BSUmVn
IHJlc3VsdDEsIEdQUlJlZyByZXN1bHQyKQorICAgIHsKKyAgICAgICAgYXBwZW5kQ2FsbChhZGRy
ZXNzKTsKKyAgICAgICAgbV9qaXQuc2V0dXBSZXN1bHRzKHJlc3VsdDEsIHJlc3VsdDIpOworICAg
IH0KKworICAgIHZvaWQgYXBwZW5kQ2FsbFNldFJlc3VsdChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mg
YWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChhZGRyZXNzLCByZXN1bHRSZWdzLmdwcigp
KTsKKyNlbHNlCisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoYWRkcmVzcywgcmVzdWx0UmVn
cy5wYXlsb2FkR1BSKCksIHJlc3VsdFJlZ3MudGFnR1BSKCkpOworI2VuZGlmCisgICAgfQorCiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0KQogICAgIHsKICAgICAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggMTdiNDhhY2NkNWVlNmM3MGJlMDY4M2Y0MWMxMzVmNjJkOGJmODUwMC4uNjgyOGU0ZTAy
MTMwMzdjMzY0ODdkMTk4MWYyNDA0NzY5YTQwZTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xNjgsMTUgKzE2
OCwxNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UsIEdQUlJl
ZyYgdGFnR1BSLCBHUFJSZWcmIHBheWxvYWRHUFIsCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNl
LCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwg
QWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2Rl
T3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNz
VHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLnRhZ0dQUigpLCBi
YXNlLnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBp
ZGVudGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJ
ZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BS
KCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIHN0dWJJbmZvR1BSLCBpZGVudGlmaWVyLCBzbG93UGF0
aFRhcmdldCwgbW9kZSwgdHlwZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoCi0gICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9u
ZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFn
R1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwg
U3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogeworICAgIFVO
VVNFRF9QQVJBTShzdHViSW5mb0dQUik7CiAgICAgLy8gVGhpcyBpcyBhIGhhY2t5IGZpeCBmb3Ig
d2hlbiB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIGRlY2lkZXMgdG8gYWxpYXMgdGhlIGJhc2UgcGF5
bG9hZCB3aXRoIHRoZSByZXN1bHQgdGFnLiBUaGlzIG9ubHkgaGFwcGVucwogICAgIC8vIGluIHRo
ZSBjYXNlIG9mIEdldEJ5SWRGbHVzaC9HZXRCeUlkRGlyZWN0Rmx1c2gsIHdoaWNoIGhhcyBhIHJl
bGF0aXZlbHkgZXhwZW5zaXZlIHJlZ2lzdGVyIGFsbG9jYXRpb24gc3RvcnkgYWxyZWFkeSBzbyB3
ZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvCiAgICAgLy8gdHJpcCBvdmVyIG9uZSBtb3ZlIGluc3Ry
dWN0aW9uLgpAQCAtMjAwLDggKzIwMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdl
dEJ5SWQoCiAgICAgCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENh
bGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3Jp
Z2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0
ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JOb25lLCBi
YXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiksIHR5cGUpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVn
cyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBJbnZhbGlkR1BSUmVnLCB0eXBlKTsK
ICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCkBAIC0yMjgsMTUg
KzIyOSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCi0gICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BS
LCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0
VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJl
ZyB0aGlzVGFnR1BSLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoVGFyZ2V0KQogeworICAgIFVOVVNFRF9QQVJBTShzdHViSW5mb0dQUik7CiAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICAKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRl
bnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1Zh
bHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUikpOworICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lz
dGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1
bHRQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRH
UFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiksIEludmFsaWRHUFJS
ZWcpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKQEAgLTIz
NDEsOCArMjM0Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChi
YXNlUmVncy50YWdHUFIoKSkpOwogCiAgICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgICAgICAg
ICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgYmFz
ZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAKICAgICAg
ICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSku
aXNUeXBlKFNwZWNTdHJpbmcpKQogICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKQEAgLTM0MDksNyArMzQxMSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdH
UFIgPSByZXN1bHRUYWcuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQ
UiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJh
c2VHUFIsIEludmFsaWRHUFJSZWcsIHRoaXNHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGNhY2hlZEdl
dEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcsIGJhc2VH
UFIsIEludmFsaWRHUFJSZWcsIHRoaXNHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiwgSW52YWxpZEdQUlJlZywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIsIG5vZGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzQyOSw3ICszNDMxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbm90Q2Vs
bExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpKTsK
ICAgICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwodGhp
c1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVRhZ0dQUiwgYmFzZVBh
eWxvYWRHUFIsIHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwor
ICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHRoaXNUYWdHUFIsIHRoaXNQYXlsb2FkR1BSLCBy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIEludmFsaWRHUFJSZWcsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IDc3MmQ0MjUwYWE3MzBiMmM2NmM1NjgyNzlmZGMzMzU4YTgxMmRlODEu
LjYyMzU1Yzk0ODc5MTNhYTk2NGI1YWJmMzUwMTBjMjI0NWUzYzgxNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTQ3LDEy
ICsxNDcsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2Up
CiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmln
aW4gb3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQg
LCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGls
bFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIGNhY2hlZEdldEJ5
SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1bHQuZ3ByKCksIGlkZW50aWZpZXIsIHNsb3dQYXRo
VGFyZ2V0LCBtb2RlLCB0eXBlKTsKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIo
KSwgcmVzdWx0LmdwcigpLCBzdHViSW5mb0dQUiwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQs
IG1vZGUsIHR5cGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhU
YXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFy
Z2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiB7CiAg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOwpAQCAtMTYwLDI2ICsxNjAsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAg
ICAgICAgLy8gV2UndmUgYWxyZWFkeSBmbHVzaGVkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2ssIHdl
IGRvbid0IG5lZWQgdG8gc3BpbGwgdGhlc2UuCiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KGJh
c2VHUFIsIGZhbHNlKTsKICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxz
ZSk7CisgICAgICAgIGlmIChzdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1YkluZm9HUFIsIGZhbHNlKTsKICAgICB9CiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHR5cGUpOworICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiks
IEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSLCB0eXBlKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwK
LSAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBi
YXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0
eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6
Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAorICAgICAg
ICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
KyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
YmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0KICAgICAKICAgICBtX2ppdC5h
ZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KFdURk1vdmUoc2xvd1BhdGgpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJl
ZyB0aGlzR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IEpJVENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRoaXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJl
ZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRD
b21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0KQogewogICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxp
bmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE4Nywy
MCArMTk3LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSCiAgICAgdXNlZFJlZ2lzdGVycy5z
ZXQoYmFzZUdQUiwgZmFsc2UpOwogICAgIHVzZWRSZWdpc3RlcnMuc2V0KHRoaXNHUFIsIGZhbHNl
KTsKICAgICB1c2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIsIGZhbHNlKTsKKyAgICBpZiAoc3R1
YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoc3R1
YkluZm9HUFIsIGZhbHNlKTsKICAgICAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiks
IEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh0aGlzR1BSKSk7CisgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIp
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQUiksIHN0dWJJbmZvR1BS
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFy
Z2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNP
cHRpbWl6ZSwKLSAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpD
aGVja05lZWRlZCwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpc09wdGltaXplLAorICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwK
KyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAg
ICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTI2ODEsMTYg
KzI3MDEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgICAgICAgICBzcGVj
dWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0KKyAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5
KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBwcm9w
ZXJ0eSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsK
KyAgICAgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKSk7CisKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdp
biA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdP
U1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgICAgICAg
ICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOwpAQCAt
MjcwMCw4ICsyNzI3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VHUFIpKTsKIAogICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNj
ZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3MocmVz
dWx0R1BSKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRG
R0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVn
aXN0ZXJzLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAog
ICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCiAgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
PnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwpAQCAtMjcxMiwxMSArMjczOSwxOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwotCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51
bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5
VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdU
Rk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5ODgsOSArNDAyMywxNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogewog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UgJiYgbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1Zh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhp
cyk7CisgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAg
ICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CkBAIC0z
OTk4LDE0ICs0MDQwLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOworICAgICAgICAgICAgY2FjaGVk
R2V0QnlJZFdpdGhUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdGhpc1ZhbHVl
R1BSLCByZXN1bHRHUFIsIHN0dWJJbmZvR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHVi
SW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1Yklu
Zm8tPmdwcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5n
cHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwpAQCAtNDAxNyw3ICs0MDY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbm90Q2VsbExpc3QuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhiYXNlR1BSKSkpOwogICAgICAgICAgICAgbm90Q2Vs
bExpc3QuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh0aGlzVmFsdWVH
UFIpKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNh
Y2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNW
YWx1ZUdQUiwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmll
cigpLCBub3RDZWxsTGlzdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFiZDY5NGY4ZGM2NDUwZGZlYzRjZTJkOTMx
YmRlNWI4ODZhNGE1MzIuLjRmOTc3MGFkNGZmYWNiMjkzMWRlYTIyMjZkODMyMzI3MTY1NzZkZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTM5ODgsNiArMzk4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRh
ZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTQwMDksMTAgKzQwMTAsMTEgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gcGFyYW1z
WzFdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1sy
XS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJbnZhbGlk
R1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlW
YWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpT
VmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVn
cyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BSKTsKIAog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub3RDZWxsOwogICAgICAgICAgICAg
ICAgIGlmICghYmFzZUlzQ2VsbCkKQEAgLTQwMjYsMTMgKzQwMjgsMjUgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICBpZiAobm90Q2VsbC5pc1NldCgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGpp
dC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAg
ICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0
ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQ
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4s
IHNsb3dQYXRoQ2FsbCk7CkBAIC00MTIwLDYgKzQxMzQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsK
IAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFu
ZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC00
MTQwLDEwICs0MTU1LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIGJyYW5k
R1BSID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0g
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDAp
IDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nl
c3NUeXBlLAotICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLAorICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
YnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBub3RDZWxsOwogICAgICAgICAgICAgaWYgKCFiYXNlSXNDZWxsKQpAQCAtNDE2OSwxMyArNDE4
NSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgaWYgKG5vdENl
bGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgbm90Q2VsbC5saW5rKCZqaXQpOwotICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAg
ICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKQorICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0Lmxh
YmVsKCk7Ci0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5j
dGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIGJhc2VHUFIsIGJyYW5kR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5tX3Nsb3dPcGVyYXRpb24gPSBhcHByb3ByaWF0ZVByaXZhdGVBY2Nlc3NGdW5jdGlvbihh
Y2Nlc3NUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlk
R1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9u
KGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0
b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVn
aW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC00NTI2LDYgKzQ1NTQsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6
OnJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAg
ICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBQdXRCeUlkRmx1c2gsIHdlIG1pZ2h0IHdhbnQg
dG8gbGF0ZS1jbG9iYmVyIHZvbGF0aWxlIHJlZ2lzdGVycy4KICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjg0OApAQCAtNDU0OCwxMCArNDU3Nywx
MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIC8vIEpTIHNldHRlciBj
YWxsIElDcyBnZW5lcmF0ZWQgYnkgdGhlIFB1dEJ5SWQgSUMgd2lsbCBuZWVkIHRoaXMuCiAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVud2lu
ZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BT
Y3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVFB1dEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3Mo
cGFyYW1zWzBdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1z
WzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUs
CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIHN0dWJJ
bmZvR1BSLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgcHV0S2luZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKQEAgLTQ1NjMsMTIgKzQ1OTQsMjQgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwg
SW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0
dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mb0dQUiwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCksIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQYXRoRnVuY3Rpb24oKSwgSW52YWxp
ZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSkuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAo
KS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC01
MjQ5LDYgKzUyOTIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251
bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsK
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMSA6IDA7CiAKICAg
ICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5k
bGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTUy
NjksMTAgKzUzMTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0
b3IgPSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9w
ZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwKKyAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1Zh
bHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHN0dWJJbmZvR1BS
KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0
cmluZyA9IHByb3BlcnR5SXNTdHJpbmc7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHVi
SW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSBwcm9wZXJ0eUlzSW50MzI7CkBAIC01MjkwLDEzICs1
MzM1LDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vdENlbGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygm
aml0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5r
KCZqaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG51bGxwdHIpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAg
ICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
ZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uR2V0
QnlWYWxPcHRpbWl6ZSwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRy
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJl
Z2luLCBzbG93UGF0aENhbGwpOwpAQCAtNTg0Niw3ICs1OTAzLDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gMiA6IDE7CiAKICAg
ICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9
CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7
CkBAIC01ODY2LDkgKzU5MjMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAg
ICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAgICAgICAg
ICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICAg
ICAgYXV0byBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkg
PyBwYXJhbXMuZ3BTY3JhdGNoKDEpIDogSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICBB
U1NFUlQoYmFzZS5ncHIoKSAhPSByZXR1cm5HUFIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNlLmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwotICAgICAgICAgICAgICAgIEFTU0VS
VChyZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2UuZ3ByKCkgIT0gc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJl
dHVybkdQUiAhPSBzY3JhdGNoR1BSKTsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKQEAgLTU4ODQsNyArNTk0Myw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygp
KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocGFyYW1zLmdwU2NyYXRjaCgwKSAhPSBwYXJhbXNbMl0uZ3ByKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gcGFyYW1zWzJdLmdwcigpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGpp
dC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CkBA
IC01ODk0LDE5ICs1OTUzLDIwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICBpZiBj
b25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBCb3g8SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwg
c2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0
LCBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0
aChqaXQpOwotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93
UGF0aEp1bXAoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5l
cmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKIAogICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRMYXRl
UGF0aCgKQEAgLTU5MTUsMTIgKzU5NzUsMjQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXph
dGlvbkZ1bmN0aW9uLCByZXR1cm5HUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWJzY3JpcHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBzbG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
cmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRp
b25GdW5jdGlvbiwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2RlLT5lY21h
TW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1Bh
dGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyMzAxLDYgKzEyMzczLDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZh
bHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPm51
bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQp
ID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4
Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKIApAQCAtMTIzMTUsNiArMTIzODgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9u
IGNhbGxzLgogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNl
cHRpb25zID0gZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5q
dW1wcyhqaXQpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52
YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5n
cHIoKTsKICAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0u
Z3ByKCkpOwogCkBAIC0xMjMyOCw0MSArMTI0MDIsNjggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUik7CiAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94
PEpJVEluQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpG
VExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwgc3Vi
c2NyaXB0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQ
UikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUiks
IHN0dWJJbmZvR1BSKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0o
KTsKIAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOworICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0Lmxh
YmVsKCk7CiAKICAgICAgICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoCiAgICAgICAgICAg
ICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAot
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZq
aXQpOworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGw7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQg
PT0gSW5CeUtpbmQ6Ok5vcm1hbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdl
dCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
cmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBiYXNlLCBzdWJzY3JpcHQp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRP
cHRpbWl6ZSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1z
LnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25J
bkJ5VmFsT3B0aW1pemUsIHJldHVybkdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZSwgc3Vic2Ny
aXB0KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeVZhbE9w
dGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRl
LCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mb0dQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZSwgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCByZXR1
cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlwdCkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogCkBAIC0xMjU4MCw3ICsxMjY4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm90b3R5cGUpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9u
dW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7
Ci0gICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDI7CisgICAgICAg
IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpID8gMyA6IDI7CiAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0
cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAg
ICAgICAKQEAgLTEyNTk2LDYgKzEyNjk3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgcHJvdG90eXBlR1BSID0gcGFyYW1zWzJdLmdwcigpOwogICAgICAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworICAg
ICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgyKSA6IEludmFsaWRHUFJSZWc7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmVKdW1w
OwogICAgICAgICAgICAgICAgIGlmICghdmFsdWVJc0NlbGwpIHsKQEAgLTEyNjE3LDEwICsxMjcx
OSwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5z
dGFuY2VPZkdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVl
R1BSLCBwcm90b3R5cGVHUFIsIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICAgICAgICAgIGppdC5j
b2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVHUFIsIHN0dWJJbmZvR1BSLCBzY3Jh
dGNoR1BSLAogICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMkdQUiwgcHJvdG90eXBlSXNPYmpl
Y3QpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwor
ICAgICAgICAgICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkp
CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0
aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0
LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExh
dGVQYXRoKApAQCAtMTI2MzEsMTIgKzEyNzM1LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
cy5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmVzdWx0R1BSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRM
SklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXN1bHRHUFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvdG90eXBlR1BSKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlv
biwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJh
dG9yLT5zdHViSW5mbygpKSwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xNDA4
MCw2ICsxNDE5Niw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6
bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRM
SklUKSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgR2V0QnlJZEZs
dXNoL0dldEJ5SWREaXJlY3RGbHVzaCwgd2UgbWlnaHQgZ2V0IHNvbWUgcGVyZm9ybWFuY2UgYm9v
c3QgaWYgd2UgY2xhaW0gdGhhdCBpdAogICAgICAgICAvLyBjbG9iYmVycyB2b2xhdGlsZSByZWdp
c3RlcnMgbGF0ZS4gSXQncyBub3QgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzcywgdGhvdWdoLCBz
aW5jZSB0aGUKQEAgLTE0MTA4LDEwICsxNDIyNSwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAgICAgICBl
eGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2Fs
bFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJ
bnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklU
R2V0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3By
KCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCB0
eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwg
c3R1YkluZm9HUFIsIHR5cGUpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0
ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25l
ID0gaml0LmxhYmVsKCk7CkBAIC0xNDEyNCwxMiArMTQyNDMsMjQgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBh
cmFtc1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5n
cHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2Fs
bCk7CkBAIC0xNDE1NCw4ICsxNDI4NSw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih0aGlzVmFsdWUpOwogICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1i
ZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0K
ICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJl
ZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAg
ICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwpAQCAtMTQx
NzcsMTAgKzE0MzA4LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAg
Ly8gdGhlIGNhbGxzaXRlIGluZGV4LgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+
c2NoZWR1bGVFeGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAor
ICAgICAgICAgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisK
ICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKLSAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzJdLmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSksIHN0dWJJbmZvR1BS
KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpA
QCAtMTQxOTMsMTIgKzE0MzI2LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9
IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQo
KSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRp
Zmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5j
dGlvbiwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihpZGVudGlmaWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUs
ICZqaXQpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQ
YXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCmluZGV4IDJhZGQ0OTRjNTMyYWFlYThlZTNk
MTFjZTEyMjc4MTE4OTM1NmFkNGYuLmI0ZTQ3NThlNThmYjFlNzkyNmM2YTA3MTgzNzMxNTg5ODdj
NzZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3Qgd29yZFNpemUgPSA4OwogCiBTbG93UGF0aENhbGxDb250ZXh0
OjpTbG93UGF0aENhbGxDb250ZXh0KAotICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIEND
YWxsSGVscGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIp
CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIHVuc2ln
bmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRh
cmdldFJlZ2lzdGVyKQogICAgIDogbV9qaXQoaml0KQogICAgICwgbV9udW1BcmdzKG51bUFyZ3Mp
CiAgICAgLCBtX3JldHVyblJlZ2lzdGVyKHJldHVyblJlZ2lzdGVyKQpAQCAtNjMsNiArNjMsOCBA
QCBTbG93UGF0aENhbGxDb250ZXh0OjpTbG93UGF0aENhbGxDb250ZXh0KAogICAgIG1fY2FsbGlu
Z0NvbnZlbnRpb25SZWdpc3RlcnMubWVyZ2UobV9hcmd1bWVudFJlZ2lzdGVycyk7CiAgICAgaWYg
KHJldHVyblJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIG1fY2FsbGluZ0NvbnZl
bnRpb25SZWdpc3RlcnMuc2V0KEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBpZiAoaW5k
aXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgbV9jYWxs
aW5nQ29udmVudGlvblJlZ2lzdGVycy5zZXQoaW5kaXJlY3RDYWxsVGFyZ2V0UmVnaXN0ZXIpOwog
ICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuZmlsdGVyKHVzZWRSZWdpc3RlcnMpOwog
ICAgICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJz
ID0KQEAgLTExNCw3ICsxMTYsMTIgQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6flNsb3dQYXRoQ2Fs
bENvbnRleHQoKQogCiBTbG93UGF0aENhbGxLZXkgU2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0
aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgY2FsbFRhcmdldCwg
bV9hcmd1bWVudFJlZ2lzdGVycywgbV9vZmZzZXQpOworICAgIHJldHVybiBTbG93UGF0aENhbGxL
ZXkobV90aHVua1NhdmVTZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zm
c2V0LCAwKTsKK30KKworU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2FsbENvbnRleHQ6OmtleVdp
dGhUYXJnZXQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFNsb3dQYXRoQ2FsbEtleShtX3RodW5rU2F2ZVNldCwgbnVsbHB0ciwgbV9hcmd1bWVudFJl
Z2lzdGVycywgbV9vZmZzZXQsIGFkZHJlc3Mub2Zmc2V0KTsKIH0KIAogU2xvd1BhdGhDYWxsIFNs
b3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBjYWxsVGFyZ2V0KQpAQCAtMTMzLDYgKzE0MCwyMiBAQCBTbG93UGF0aENhbGwgU2xv
d1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorU2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2Fs
bENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGNhbGxUYXJn
ZXQpCit7CisgICAgU2xvd1BhdGhDYWxsS2V5IGtleSA9IGtleVdpdGhUYXJnZXQoY2FsbFRhcmdl
dCk7CisgICAgU2xvd1BhdGhDYWxsIHJlc3VsdCA9IFNsb3dQYXRoQ2FsbChtX2ppdC5jYWxsKEpJ
VFRodW5rUHRyVGFnKSwga2V5KTsKKworICAgIG1faml0LmFkZExpbmtUYXNrKAorICAgICAgICBb
cmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0KKyAgICAgICAgICAgICAg
ICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCByZXN1bHQua2V5KCkpOwor
CisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0LmNhbGwoKSwgQ29kZUxvY2F0aW9u
TGFiZWw8SklUVGh1bmtQdHJUYWc+KHRodW5rLmNvZGUoKSkpOworICAgICAgICB9KTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckNvZGVP
cmlnaW4oU3RhdGUmIHN0YXRlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgaWYgKGNv
ZGVPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQ
YXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaApp
bmRleCA3MGQyODhlMDNmMWQ4ZDgxZjI3N2Y2YjgyMTdhYzlmM2ZhODBjMTJhLi5kNmYyODU0OWEz
MWIzMzVkZDViNTc1OWFjZTIxMGY0ODJhODMxZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKQEAgLTU0LDE1ICs1NCwxNyBAQCBjbGFzcyBTbG93UGF0
aENhbGwgewogLy8gVGhpcyB3aWxsIGJlIGFuIFJBSUkgdGhpbmd5IHRoYXQgd2lsbCBzZXQgdXAg
dGhlIG5lY2Vzc2FyeSBzdGFjayBzaXplcyBhbmQgb2Zmc2V0cyBhbmQgc3VjaC4KIGNsYXNzIFNs
b3dQYXRoQ2FsbENvbnRleHQgewogcHVibGljOgotICAgIFNsb3dQYXRoQ2FsbENvbnRleHQoUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiwgdW5zaWduZWQgbnVtQXJncywg
R1BSUmVnIHJldHVyblJlZ2lzdGVyKTsKKyAgICBTbG93UGF0aENhbGxDb250ZXh0KFJlZ2lzdGVy
U2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVuc2lnbmVkIG51bUFyZ3MsIEdQUlJl
ZyByZXR1cm5SZWdpc3RlciwgR1BSUmVnIGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyKTsKICAg
ICB+U2xvd1BhdGhDYWxsQ29udGV4dCgpOwogCiAgICAgLy8gTk9URTogVGhlIGNhbGwgdGhhdCB0
aGlzIHJldHVybnMgaXMgYWxyZWFkeSBnb2luZyB0byBiZSBsaW5rZWQgYnkgdGhlIEpJVCB1c2lu
ZyBhZGRMaW5rVGFzaygpLAogICAgIC8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHlvdSB0byBs
aW5rIGl0IHlvdXJzZWxmLgogICAgIFNsb3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCk7CisgICAgU2xvd1BhdGhDYWxsIG1ha2VD
YWxsKFZNJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKIAogcHJpdmF0ZToKICAgICBTbG93UGF0
aENhbGxLZXkga2V5V2l0aFRhcmdldChGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxU
YXJnZXQpIGNvbnN0OworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlXaXRoVGFyZ2V0KENDYWxsSGVs
cGVyczo6QWRkcmVzcykgY29uc3Q7CiAgICAgCiAgICAgUmVnaXN0ZXJTZXQgbV9hcmd1bWVudFJl
Z2lzdGVyczsKICAgICBSZWdpc3RlclNldCBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzOwpA
QCAtODIsNyArODQsNyBAQCBTbG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKIHsKICAgICBTbG93
UGF0aENhbGwgY2FsbDsKICAgICB7Ci0gICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4
dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3Vs
dEdQUik7CisgICAgICAgIFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJz
LCBqaXQsIHNpemVvZi4uLihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgSW52YWxpZEdQ
UlJlZyk7CiAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czx2b2lkKEFyZ3VtZW50VHlwZXMuLi4p
Pihhcmd1bWVudHMuLi4pOwogICAgICAgICBjYWxsID0gY29udGV4dC5tYWtlQ2FsbCh2bSwgZnVu
Y3Rpb24pOwogICAgIH0KQEAgLTExNyw2ICsxMTksNDggQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVy
YXRpb24oCiAgICAgICAgIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAg
IFZNJiB2bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYg
aml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQsCisgICAgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBBcmd1bWVudFR5cGVz
Li4uIGFyZ3VtZW50cykKK3sKKyAgICBTbG93UGF0aENhbGwgY2FsbDsKKyAgICB7CisgICAgICAg
IFNsb3dQYXRoQ2FsbENvbnRleHQgY29udGV4dCh1c2VkUmVnaXN0ZXJzLCBqaXQsIHNpemVvZi4u
LihBcmd1bWVudFR5cGVzKSArIDEsIHJlc3VsdEdQUiwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Cisg
ICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDx2b2lkKEFyZ3VtZW50VHlw
ZXMuLi4pPihmdW5jdGlvbiwgYXJndW1lbnRzLi4uKTsKKyAgICAgICAgY2FsbCA9IGNvbnRleHQu
bWFrZUNhbGwodm0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBm
dW5jdGlvbi5vZmZzZXQpKTsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlvblRhcmdldCkKKyAgICAg
ICAgZXhjZXB0aW9uVGFyZ2V0LT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayh2bSkpOwor
ICAgIHJldHVybiBjYWxsOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVz
PgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgVk0mIHZtLCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGVJbmRleCwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNlcHRpb25UYXJnZXQs
IENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwKKyAgICBB
cmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoY2FsbFNpdGVJbmRleCkgewor
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFn
Rm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpKTsKKyAgICB9CisgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24odm0sIHVzZWRSZWdpc3Rl
cnMsIGppdCwgZXhjZXB0aW9uVGFyZ2V0LCBmdW5jdGlvbiwgcmVzdWx0R1BSLCBhcmd1bWVudHMu
Li4pOworfQorCitDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRl
JiwgQ29kZU9yaWdpbik7CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitT
bG93UGF0aENhbGwgY2FsbE9wZXJhdGlvbigKKyAgICBTdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLAorICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QqIGV4Y2VwdGlvblRhcmdldCwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzIGZ1bmN0aW9uLCBHUFJSZWcgcmVzdWx0LCBBcmd1bWVudFR5cGVz
Li4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgc3Rh
dGUudm0oKSwgdXNlZFJlZ2lzdGVycywgaml0LCBjYWxsU2l0ZUluZGV4Rm9yQ29kZU9yaWdpbihz
dGF0ZSwgY29kZU9yaWdpbiksIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sCisgICAgICAgIHJl
c3VsdCwgYXJndW1lbnRzLi4uKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCiAj
ZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFNsb3dQYXRoQ2FsbEtleS5jcHAKaW5kZXggMmQzMDZjNjIwMzNhODM5MDhlNmZjYzZhYjll
NmU4NGNmZTgxZWNhYS4uYzRlN2U4MjYxZmQ0NzM2YjFkMzM3MmJlZjU1MTNlZmU1YWEzOWE4NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXku
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmNw
cApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHZv
aWQgU2xvd1BhdGhDYWxsS2V5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAg
b3V0LnByaW50KCI8dXNlZFJlZ2lzdGVycyA9ICIsIG1fdXNlZFJlZ2lzdGVycywgIiwgb2Zmc2V0
ID0gIiwgbV9vZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2ludGVyKG1fY2FsbFRhcmdl
dC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3RlcnMgPSAiLCBtX2FyZ3Vt
ZW50UmVnaXN0ZXJzLCAiPiIpOworICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBt
X3VzZWRSZWdpc3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBpbmRpcmVjdE9mZnNl
dCA9ICIsIG1faW5kaXJlY3RPZmZzZXQsICIsIGNhbGxUYXJnZXQgPSAiLCBSYXdQb2ludGVyKG1f
Y2FsbFRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiwgYXJndW1lbnRSZWdpc3RlcnMgPSAi
LCBtX2FyZ3VtZW50UmVnaXN0ZXJzLCAiPiIpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2Fs
bEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaApp
bmRleCAwODZhZTAwZWU1ODU1MmM3Y2U4M2Q3MDUyMGU3NjEzODQyYmRkMzNkLi4wY2U2MWYyNmJh
OTUwYjkzZmMzYThlYzE5YjU2NzQxYWUxMDAwZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsS2V5LmgKQEAgLTUxLDExICs1MSwxMiBAQCBjbGFzcyBT
bG93UGF0aENhbGxLZXkgewogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSgKICAgICAgICAgY29u
c3QgUmVnaXN0ZXJTZXQmIHNldCwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxsVGFy
Z2V0LCBjb25zdCBSZWdpc3RlclNldCYgYXJndW1lbnRSZWdpc3RlcnMsCi0gICAgICAgIHB0cmRp
ZmZfdCBvZmZzZXQpCisgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQsIGludDMyX3QgaW5kaXJlY3RP
ZmZzZXQpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKHNldCkKICAgICAgICAgLCBtX2NhbGxU
YXJnZXQoY2FsbFRhcmdldC5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpCiAgICAgICAgICwg
bV9hcmd1bWVudFJlZ2lzdGVycyhhcmd1bWVudFJlZ2lzdGVycykKICAgICAgICAgLCBtX29mZnNl
dChvZmZzZXQpCisgICAgICAgICwgbV9pbmRpcmVjdE9mZnNldChpbmRpcmVjdE9mZnNldCkKICAg
ICB7CiAgICAgfQogICAgIApAQCAtNjMsMTAgKzY0LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtl
eSB7CiAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50
UmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudFJlZ2lzdGVyczsgfQogICAgIHB0
cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIGludDMyX3Qg
aW5kaXJlY3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGlyZWN0T2Zmc2V0OyB9CiAgICAg
CiAgICAgU2xvd1BhdGhDYWxsS2V5IHdpdGhDYWxsVGFyZ2V0KEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gY2FsbFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBTbG93UGF0aENhbGxL
ZXkodXNlZFJlZ2lzdGVycygpLCBjYWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZz
ZXQoKSk7CisgICAgICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkodXNlZFJlZ2lzdGVycygpLCBj
YWxsVGFyZ2V0LCBhcmd1bWVudFJlZ2lzdGVycygpLCBvZmZzZXQoKSwgaW5kaXJlY3RPZmZzZXQo
KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAt
NzYsMTMgKzc4LDExIEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEtleSB7CiAgICAgCiAgICAgU2xvd1Bh
dGhDYWxsS2V5KEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDogbV91c2VkUmVnaXN0ZXJzKFJlZ2lz
dGVyU2V0OjpFbXB0eVZhbHVlKQotICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0K
ICAgICAKICAgICBTbG93UGF0aENhbGxLZXkoRGVsZXRlZFZhbHVlVGFnKQogICAgICAgICA6IG1f
dXNlZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RGVsZXRlZFZhbHVlKQotICAgICAgICAsIG1fb2Zm
c2V0KDApCiAgICAgewogICAgIH0KICAgICAKQEAgLTkzLDE4ICs5MywyMCBAQCBjbGFzcyBTbG93
UGF0aENhbGxLZXkgewogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdXNlZFJlZ2lzdGVycyA9PSBv
dGhlci5tX3VzZWRSZWdpc3RlcnMKICAgICAgICAgICAgICYmIG1fY2FsbFRhcmdldCA9PSBvdGhl
ci5tX2NhbGxUYXJnZXQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0
OworICAgICAgICAgICAgJiYgbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQKKyAgICAgICAgICAg
ICYmIG1faW5kaXJlY3RPZmZzZXQgPT0gb3RoZXIubV9pbmRpcmVjdE9mZnNldDsKICAgICB9CiAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV91c2VkUmVn
aXN0ZXJzLmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdldC5leGVjdXRh
YmxlQWRkcmVzcygpKSArIG1fb2Zmc2V0OworICAgICAgICByZXR1cm4gbV91c2VkUmVnaXN0ZXJz
Lmhhc2goKSArIFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fY2FsbFRhcmdldC5leGVjdXRhYmxlQWRk
cmVzcygpKSArIG1fb2Zmc2V0ICsgbV9pbmRpcmVjdE9mZnNldDsKICAgICB9CiAKIHByaXZhdGU6
CiAgICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4gbV9jYWxsVGFyZ2V0OwogICAgIFJlZ2lzdGVyU2V0IG1fYXJndW1lbnRSZWdp
c3RlcnM7Ci0gICAgcHRyZGlmZl90IG1fb2Zmc2V0OworICAgIHB0cmRpZmZfdCBtX29mZnNldCB7
IDAgfTsKKyAgICBpbnQzMl90IG1faW5kaXJlY3RPZmZzZXQgeyAwIH07CiB9OwogCiBzdHJ1Y3Qg
U2xvd1BhdGhDYWxsS2V5SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5j
cHAKaW5kZXggZGJmZWQ0NGQ1YTEyYWFkZGQyNzZhOTMzMTMzYzBiMzZjODY2MTNhZC4uZDkyMDJh
M2Q0MTllNWNiMmE1OWUzMWZiZTg1YTRhZDUzYmU0OTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtNzgsOCArNzgsOCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9y
KAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIpOwogICAgIAogICAgIC8vIFRlbGwg
R0MgbWFyayBwaGFzZSBob3cgbXVjaCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgaXMgYWN0aXZlIGR1
cmluZyBjYWxsLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHNj
cmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7Ci0gICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlcXVp
cmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5h
ZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5z
dG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1v
cnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAKICAgICBqaXQubG9hZFB0
cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAg
ICBqaXQucGVlaygKQEAgLTIwMCwxMyArMjAwLDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBT
CiAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgfQogICAgIAot
ICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BS
MCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZz
ZXQoKSkpOworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6
bm9uQXJnR1BSMSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjEsIEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IGtleS5vZmZzZXQoKSkpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAg
Ci0gICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soaml0LCBrZXkuYXJndW1lbnRSZWdpc3RlcnMoKSk7
CisgICAgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIgPSBrZXkuYXJndW1lbnRSZWdpc3RlcnMoKTsK
KyAgICBpZiAoIWtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGRvbnRDbG9iYmVyLnNldChHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIFdURk1vdmUo
ZG9udENsb2JiZXIpKTsKIAotICAgIEFzc2VtYmx5SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNh
bGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6OkNhbGwgY2FsbDsKKyAg
ICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAgICAgICAgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlv
blB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwga2V5LmluZGlyZWN0T2Zmc2V0KCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwogCiAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSwgR1BSSW5mbzo6
bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKICAgICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKQEAgLTIzMiw3
ICsyMzksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRo
Q2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgUwogICAgIGppdC5yZXQoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkZUTFRodW5rKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIGtleS5jYWxs
VGFyZ2V0KCkpOworICAgIGlmIChrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBhdGggY2FsbCB0aHVuayBm
b3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggMzU0Zjk1NDdiNGFiZjMyODk2ZDFj
ZWI0ZWEyMDBmYmI0YTRkZWNjZC4uMDg0YjM4ZWY4MTI1Mjc1Mzk3ZTZhMzhiNWM2Mjc2NzRjMGYz
NGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vz
c0Nhc2UuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgpAQCAtNjUyLDcgKzY1
Myw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0VmlydHVhbENhbGwoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgICAgIGF1dG8gY2FsbExvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8SklUQ29tcGlsYXRpb25QdHJUYWc+KGNh
bGwpOwogICAgICAgICBsaW5rQnVmZmVyLmFkZE1haW5UaHJlYWRGaW5hbGl6YXRpb25UYXNrKFs9
LCAmdm1dICgpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91
dGluZVB0clRhZz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCAqaW5mbyk7Ci0g
ICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0
ZSh2aXJ0dWFsVGh1bmssIHZtKSk7CisgICAgICAgICAgICBpbmZvLT5zZXRTbG93U3R1YihHQ0F3
YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2bSwgdmlydHVhbFRodW5rKSk7CiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHZpcnR1YWxUaHVuay5jb2RlKCkpKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5jcHAKaW5kZXggMWE3NjNiN2E3NWRiY2ExNzgxYjBiMGYwODkyZjRmNDkxOWMxZDViYy4uYjZj
M2ZmYjNhOWNjODdkMWVlODc3MTYzODM2ZWMwOGVjYjA0MGRmMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIENDYWxs
SGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChWTSYgdm0sIEdQUlJlZyBzaGFkb3dQ
YWNrZXQsIEdQUlJlZwogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNjcmF0Y2gxTm9u
QXJnR1BSKSk7CiB9CiAKLXZvaWQgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQ0NhbGxIZWxwZXJzJik+IGVtaXRDb2RlLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikKK3Zv
aWQgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
SW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBTY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4g
ZW1pdENvZGUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKQogewogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAgICAgZW1pdENvZGUoaml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCmluZGV4IDY4YjEyMTNmNmQyNGM3MGFmYjUwMzMyMGVhYTcyZDg5ZTdkODZiZTkuLmQ4
MTE4NDdiYWYwYmVmM2E3ZTEzOTc0MTM3ZWYzYmU4NDE2ZDMyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdQ
UkluZm8uaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvblRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKQEAgLTIwNyw3ICsyMDgsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKIAogICAgIC8vIGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRyYWNr
IDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgaW4gcmVnaXN0ZXIgb24gMzItYml0IGFyY2hp
dGVjdHVyZXMuCiAgICAgLy8gZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3Vt
ZW50IHR5cGVzIHBhc3NlZCBvbiB0aGUgc3RhY2suCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlPgog
ICAgIHN0cnVjdCBBcmdDb2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAg
ICAgIHsKQEAgLTIxOSw4ICsyMjAsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNp
Z25lZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1
bnNpZ25lZCBnPgotICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywg
ZCwgZSwgZiwgZz4mIG90aGVyKQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25l
ZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNp
Z25lZCBnLCB1bnNpZ25lZCBoPgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248
YSwgYiwgYywgZCwgZSwgZiwgZywgaD4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBn
cHJTb3VyY2VzID0gb3RoZXIuZ3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9u
cyA9IG90aGVyLmdwckRlc3RpbmF0aW9uczsKQEAgLTIzMCw2NSArMjMxLDc0IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgY3Jvc3NE
ZXN0aW5hdGlvbnMgPSBvdGhlci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQor
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJl
ZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7
CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2Vz
ICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAg
ICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAg
ICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJT
b3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVz
aFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
LCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRp
b24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAgICAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsg
MSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5m
cHJTb3VyY2VzW251bUZQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQu
ZnByRGVzdGluYXRpb25zW251bUZQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBS
UmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
PiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2Vz
W251bUNyb3NzU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rl
c3RpbmF0aW9uc1tudW1Dcm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhH
UFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBv
a2U+IHB1c2hFeHRyYVJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikK
ICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNv
dXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJE
ZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScyAr
IDEsIGV4dHJhUG9rZT4gcHVzaE5vbkFyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5h
dGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJz
ICsgMSwgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3By
U291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0Lmdw
ckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZEdQUkFy
ZygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAg
ICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzICsgMSwgZXh0cmFQb2tlPiBhZGRHUFJFeHRyYUFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+
IGFkZEdQUkV4dHJhQXJnKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlzKTsK
KyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJn
KEdQUlJlZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAg
ICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
bm9uQXJnR1BScywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRT
dGFja0FyZyhGUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAx
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkKKyAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAx
PigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAg
ICB9CiAKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQpAQCAtMzMxLDEyICszNDEsMTQg
QEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBjYWxj
dWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3Vy
cmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQg
Y2FsY3VsYXRlUG9rZU9mZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVk
IGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAg
ICB7CiAgICAgICAgIC8vIENsYW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBzeW1i
b2wgZm9yIEZQUlJlZy9HUFJSZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0aGV5
IGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1ZwogICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1l
bnRSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogCisgICAg
ICAgIFVOVVNFRF9QQVJBTShub25BcmdHUFJzKTsKKwogICAgICAgICBjdXJyZW50R1BSQXJndW1l
bnQgKz0gZXh0cmFHUFJBcmdzOwogICAgICAgICBjdXJyZW50RlBSQXJndW1lbnQgLT0gbnVtQ3Jv
c3NTb3VyY2VzOwogICAgICAgICBJR05PUkVfV0FSTklOR1NfQkVHSU4oInR5cGUtbGltaXRzIikK
QEAgLTM1MCwxNSArMzYyLDE1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQg
Y3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywg
dW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAgICB1bnNpZ25l
ZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1
cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSk7CisgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1
cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBv
a2VPZmZzZXQpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFja0FsaWduZWQo
dW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25l
ZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHBva2VP
ZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQ
UkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAg
ICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQ
UkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0
ICYgMSk7CiAgICAgfQogCkBAIC0zNzYsOCArMzg4LDggQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDog
cHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIAogICAgIC8vIEF2
b2lkIE1TVkMgb3B0aW1pemF0aW9uIHRpbWUgZXhwbG9zaW9uIGFzc29jaWF0ZWQgd2l0aCBfX2Zv
cmNlaW5saW5lIGluIHJlY3Vyc2l2ZSB0ZW1wbGF0ZXMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5F
X0VYQ0VQVF9NU1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVn
VHlwZSBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFM
V0FZU19JTkxJTkVfRVhDRVBUX01TVkMgdm9pZCBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgdXNpbmcgSW5mb1R5cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAgICAg
dW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnM7CkBAIC0zOTIsMzEgKzQwNCwzMSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVn
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBu
b25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRf
QVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5n
IEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVy
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4u
LiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7
CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFy
c2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5n
cHIoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291
cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25B
cmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENl
bGxWYWx1ZSBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1l
bnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3Mu
Li4pOwogICAgIH0KQEAgLTQyNCw4ICs0MzYsOCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShNSVBTKQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJl
ZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
LCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBh
IGRvdWJsZSIpOwogCkBAIC00NjksMjUgKzQ4MSwyNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBw
dWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJyZW50
R1BBcmdDb3VudCA8IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewotICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFy
Z3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmco
KS5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIC8vIE90aGVyd2lzZSBwYXNzIEZQIGFy
Z3VtZW50IG9uIHN0YWNrLgotICAgICAgICBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7Ci0g
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgaWYgKHN0
YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFy
Z3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFk
ZFBva2UoKSwgYXJncy4uLik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBv
a2UoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BS
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxl
X2lmX3Q8c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0Nv
dW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcpOwpAQCAtNDk3LDM0ICs1MDksMzQgQEAg
Y2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7
CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgdm9pZCBwb2tlQXJndW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBh
cmcyLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
MSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAg
ICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQo
R1BSSW5mbzo6cmVnVDApOwogCiAgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51
bUFyZ1JlZ2lzdGVycykgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0
cmFQb2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSAr
IDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0
cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMs
IGV4dHJhUG9rZSArIDEpOwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tl
KCksIGFyZ3MuLi4pOwotICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkg
ewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgfSBlbHNlIGlm
IChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmco
KS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlICsgMik7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
MSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAyKTsKICAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2Uo
KS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1D
cm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2
YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5bG9h
ZCwgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1
bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0
ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFy
Z0NvdW50KHBheWxvYWQuZ3ByKCkpOwpAQCAtNTQ0LDkgKzU1Niw5IEBAIGNsYXNzIENDYWxsSGVs
cGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcG9rZUFyZ3VtZW50
c0FsaWduZWQ8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdH
UFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1
ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdz
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAg
dW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lz
dGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5h
cmdDb3VudChhcmcudGFnR1BSKCkpOwpAQCAtNTY5LDExICs1ODEsMTEgQEAgY2xhc3MgQ0NhbGxI
ZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAjZW5kaWYgLy8gQ1BVKEFSTV9USFVN
QjIpIHx8IENQVShNSVBTKQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFt
ZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAg
c3RkOjppc19iYXNlX29mPFRydXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0ZDo6
aXNfY29udmVydGlibGU8QXJnLCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhpcyBz
aW5jZSBERkdTcGVjdWxhdGl2ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2YgVHJ1
c3RlZEltbVB0cgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFy
Z3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhp
cyBvbmx5IHN1cHBvcnRzIG5vbi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNp
bmNlIHdlIG5ldmVyIGNhbGwgb3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAg
ICAgICAgIC8vIElmIHdlIGV2ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5n
IHBvaW50IGFyZ3VtZW50cyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZv
ciBib3RoIHR5cGVzLCB3aGljaCBzb3VuZHMKQEAgLTU5MSw0NiArNjAzLDQ2IEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7Cisg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJB
cmcoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5U
X0FSR1VNRU5UX1RZUEUpIDw9IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMy
KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxX
QVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVO
VF9BUkdVTUVOVF9UWVBFLCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFs
PENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVO
VF9BUkdVTUVOVF9UWVBFKSA9PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02
NChhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFM
V0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENV
UlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVy
PEFyZz46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxz
dGQ6OnJlbW92ZV9wb2ludGVyX3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1
ZSkKICAgICAgICAgICAgIHx8IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFs
dWUpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcpLCBhcmdzLi4uKTsK
ICAgICB9CiAKICAgICAvLyBTcGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlIGJl
Y2F1c2UgaXQncyByZWFsbHkgYW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVyd2lzZS4uLgotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcs
IHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAog
ICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6
dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0
dXJlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywg
QXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQo
KSksIGFyZ3MuLi4pOwogICAgIH0KQEAgLTYzOSw4ICs2NTEsOCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICN1bmRlZiBSRVNVTFRfVFlQRQogCiAgICAg
Ly8gQmFzZSBjYXNlOyBzZXQgdXAgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2U+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9w
ZXJhdGlvblR5cGU+Ojphcml0eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0
IHNhbml0eSBjaGVjayIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02NTUsMzEgKzY2Nyw0NCBA
QCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAg
c2V0dXBTdHViQXJnczxudW1GUFJTb3VyY2VzLCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVt
RlBSU291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1w
QXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJj
ZXMpKTsKICAgICB9CiAKLXB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0VudHJ5SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZ3MuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHVzaW5nIEZpcnN0QXJndW1lbnRUeXBlID0gdHlwZW5hbWUgRnVu
Y3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTwwPjsKKyAg
ICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8Rmlyc3RBcmd1bWVudFR5cGUsIENhbGxG
cmFtZSo+Ojp2YWx1ZSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAx
LCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIH0gZWxzZSB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBq
c3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgorICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09
IHNpemVvZi4uLihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJn
cy4uLik7CisgICAgICAgIH0KKyAgICB9CiAKLSNkZWZpbmUgRklSU1RfQVJHVU1FTlRfVFlQRSB0
eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRU
eXBlPDA+CitwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0
eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX3NhbWU8RklSU1RfQVJHVU1FTlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFy
Z3VtZW50cyhBcmdzLi4uIGFyZ3MpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzKEFyZ3MuLi4gYXJncykKICAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8g
VGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNz
IHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCi0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncykgKyAx
LCAiQmFzaWMgc2FuaXR5IGNoZWNrIik7Ci0jZW5kaWYKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwg
MCwgMCwgMCwgMCwgMCwgMD4oKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4p
OworICAgICAgICBzZXR1cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xs
ZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAg
QUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8RklSU1RfQVJHVU1F
TlRfVFlQRSwgQ2FsbEZyYW1lKj46OnZhbHVlPiBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3Mp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsKEdQ
UlJlZyBmdW5jdGlvbkdQUiwgQXJncy4uLiBhcmdzKQogICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2
YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KLSAgICAgICAgc3RhdGljX2Fz
c2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVv
Zi4uLihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xs
ZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAgICBzZXR1cEFy
Z3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDA+KCkucHVzaE5vbkFyZyhmdW5jdGlvbkdQUiwgR1BSSW5mbzo6bm9uQXJnR1BS
MCksIGFyZ3MuLi4pOwogICAgIH0KIAotI3VuZGVmIEZJUlNUX0FSR1VNRU5UX1RZUEUKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbChBZGRyZXNzIGFk
ZHJlc3MsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHNldHVwQXJndW1lbnRzRW50cnlJ
bXBsPE9wZXJhdGlvblR5cGU+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMCwgMD4o
KS5wdXNoTm9uQXJnKGFkZHJlc3MuYmFzZSwgR1BSSW5mbzo6bm9uQXJnR1BSMCksIGFyZ3MuLi4p
OworICAgIH0KIAogICAgIHZvaWQgc2V0dXBSZXN1bHRzKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRl
c3RCKQogICAgIHsKQEAgLTgxOSw3ICs4NDQsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAvLyBMZWF2ZXMgYmVoaW5kIGEgcG9pbnRlciB0byB0
aGUgUGFja2V0IHdlIHNob3VsZCB3cml0ZSB0byBpbiBzaGFkb3dQYWNrZXQuCiAgICAgdm9pZCBl
bnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KFZNJiwgR1BSUmVnIHNoYWRvd1BhY2tldCwgR1BSUmVn
IHNjcmF0Y2gxTm9uQXJnR1BSLCBHUFJSZWcgc2NyYXRjaDIpOwogCi0gICAgc3RhdGljIHZvaWQg
ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3
aGVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKENDYWxsSGVscGVycyYpPiwgY29uc3QgY2hhciopOwor
ICAgIHN0YXRpYyB2b2lkIGVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJ
bnRlcm5hbFB0clRhZz4gd2hlcmUsIFNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPiwg
Y29uc3QgY2hhciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKaW5kZXggZjdhYTMy
OWZlMjVkMTljNzM3MTg0NzBhZWZmYjNiNGFhZWEwNWRiNi4uZTY2NDFiZjYyZjRkNjI3ZmNmMzVk
MzAwMWZiOGEyNWNjNGFiNDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJERkdDb21tb25EYXRhLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtMzgs
MTggKzM5LDIyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1HQ0F3YXJlSklUU3R1YlJvdXRpbmU6
OkdDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0pCitHQ0F3YXJlSklUU3R1YlJvdXRp
bmU6OkdDQXdhcmVKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlKQogICAgIDogSklUU3R1YlJvdXRpbmUoY29kZSkKIHsK
LSAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRpbmVzLT5hZGQodGhpcyk7CiB9CiAKIEdDQXdhcmVK
SVRTdHViUm91dGluZTo6fkdDQXdhcmVKSVRTdHViUm91dGluZSgpIHsgfQogCit2b2lkIEdDQXdh
cmVKSVRTdHViUm91dGluZTo6bWFrZUdDQXdhcmUoVk0mIHZtKQoreworICAgIHZtLmhlYXAubV9q
aXRTdHViUm91dGluZXMtPmFkZCh0aGlzKTsKKyAgICBtX2lzR0NBd2FyZSA9IHRydWU7Cit9CisK
IHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIHsKLSAg
ICBpZiAobV9pc0pldHRpc29uZWQpIHsKKyAgICBpZiAobV9pc0pldHRpc29uZWQgfHwgIW1faXNH
Q0F3YXJlKSB7CiAgICAgICAgIC8vIFRoaXMgY2FzZSBpcyBuZWVkZWQgZm9yIHdoZW4gdGhlIHN5
c3RlbSBzaHV0cyBkb3duLiBJdCBtYXkgYmUgdGhhdAogICAgICAgICAvLyB0aGUgSklUIHN0dWIg
cm91dGluZSBzZXQgZ2V0cyBkZWxldGVkIGJlZm9yZSB3ZSBnZXQgYXJvdW5kIHRvIGRlbGV0aW5n
CiAgICAgICAgIC8vIHRoaXMgZ3V5LiBJbiB0aGF0IGNhc2UgdGhlIEdDIGluZm9ybXMgdXMgdGhh
dCB3ZSdyZSBqZXR0aXNvbmVkIGFscmVhZHkKQEAgLTc0LDEwICs3OSwzNSBAQCB2b2lkIEdDQXdh
cmVKSVRTdHViUm91dGluZTo6ZGVsZXRlRnJvbUdDKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAor
UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHVi
Um91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+
JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywg
Rml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMpCisgICAgOiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmUoY29kZSkKKyAgICAsIG1fdm0odm0pCisgICAgLCBtX2Nhc2VzKFdURk1v
dmUoY2FzZXMpKQorICAgICwgbV93ZWFrU3RydWN0dXJlcyhXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVz
KSkKK3sKK30KKwordm9pZCBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpvYnNlcnZl
WmVyb1JlZkNvdW50KCkKK3sKKyAgICBpZiAobV92bS5tX3NoYXJlZEpJVFN0dWJzKQorICAgICAg
ICBtX3ZtLm1fc2hhcmVkSklUU3R1YnMtPnJlbW92ZSh0aGlzKTsKKyAgICBCYXNlOjpvYnNlcnZl
WmVyb1JlZkNvdW50KCk7Cit9CisKK3Vuc2lnbmVkIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmU6OmNvbXB1dGVIYXNoKGNvbnN0IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4m
IGNhc2VzLCBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mIHdlYWtTdHJ1Y3R1cmVzKQor
eworICAgIEhhc2hlciBoYXNoZXI7CisgICAgZm9yIChhdXRvJiBrZXkgOiBjYXNlcykKKyAgICAg
ICAgV1RGOjphZGQoaGFzaGVyLCBrZXktPmhhc2goKSk7CisgICAgZm9yIChhdXRvJiBzdHJ1Y3R1
cmVJRCA6IHdlYWtTdHJ1Y3R1cmVzKQorICAgICAgICBXVEY6OmFkZChoYXNoZXIsIHN0cnVjdHVy
ZUlEKTsKKyAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKK30KKwogTWFya2luZ0dDQXdhcmVKSVRT
dHViUm91dGluZTo6TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIGNv
bnN0IEpTQ2VsbCogb3duZXIsCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtTdHJ1Y3R1cmVz
LCBjb25zdCBKU0NlbGwqIG93bmVyLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMs
IEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcykKLSAgICA6IEdDQXdhcmVKSVRTdHVi
Um91dGluZShjb2RlLCB2bSkKKyAgICA6IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUo
Y29kZSwgdm0sIFdURk1vdmUoY2FzZXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVzKSkKICAgICAs
IG1fY2VsbHMoY2VsbHMuc2l6ZSgpKQogICAgICwgbV9jYWxsTGlua0luZm9zKFdURk1vdmUoY2Fs
bExpbmtJbmZvcykpCiB7CkBAIC0xMDYsOSArMTM2LDkgQEAgdm9pZCBNYXJraW5nR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZp
c2kKIH0KIAogR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXI6OkdDQXdh
cmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKAotICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgIGNvbnN0
IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMsIEJhZzxDYWxsTGlu
a0luZm8+JiYgY2FsbExpbmtJbmZvcywKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEZpeGVkVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPj4mJiBjYXNlcywgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVj
dHVyZXMsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYgY2VsbHMs
IEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRp
b25IYW5kbGVyQ2FsbFNpdGVJbmRleCkKLSAgICA6IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRp
bmUoY29kZSwgdm0sIG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkKKyAgICA6
IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1vdmUoY2FzZXMpLCBX
VEZNb3ZlKHdlYWtTdHJ1Y3R1cmVzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5m
b3MpKQogICAgICwgbV9jb2RlQmxvY2tXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlQmxvY2tGb3JF
eGNlcHRpb25IYW5kbGVycykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIG1fY29kZU9yaWdp
blBvb2woJm1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRsZXItPmNvZGVPcmlnaW5zKCkpCkBA
IC0xNTIsOCArMTgyLDEwIEBAIHZvaWQgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXI6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogfQogCiAKLVJlZjxKSVRTdHViUm91dGlu
ZT4gY3JlYXRlSklUU3R1YlJvdXRpbmUoCitSZWY8UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91
dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAorICAgIEZpeGVkVmVjdG9yPFJlZlB0
cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3
ZWFrU3RydWN0dXJlcywKICAgICBWTSYgdm0sCiAgICAgY29uc3QgSlNDZWxsKiBvd25lciwKICAg
ICBib29sIG1ha2VzQ2FsbHMsCkBAIC0xNjUsMTggKzE5NywyNSBAQCBSZWY8SklUU3R1YlJvdXRp
bmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGlmICghbWFrZXNDYWxscykgewogICAgICAg
ICAvLyBBbGxvY2F0aW5nIENhbGxMaW5rSW5mb3MgbWVhbnMgd2Ugc2hvdWxkIGhhdmUgY2FsbHMu
CiAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm9zLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEpJVFN0dWJSb3V0aW5lKGNvZGUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZShjb2RlLCB2bSwgV1RG
TW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpKSk7CiAgICAgfQogICAgIAogICAg
IGlmIChjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycykgewogICAgICAgICBSRUxFQVNFX0FT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxl
cnMtPmppdFR5cGUoKSkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBX
VEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgZXhj
ZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKKyAgICAgICAgYXV0byBzdHViID0gYWRvcHRS
ZWYoKm5ldyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb2RlLCB2
bSwgV1RGTW92ZShjYXNlcyksIFdURk1vdmUod2Vha1N0cnVjdHVyZXMpLCBvd25lciwgY2VsbHMs
IFdURk1vdmUoY2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhhbmRsZXJzLCBl
eGNlcHRpb25IYW5kbGVyQ2FsbFNpdGVJbmRleCkpOworICAgICAgICBzdHViLT5tYWtlR0NBd2Fy
ZSh2bSk7CisgICAgICAgIHJldHVybiBzdHViOwogICAgIH0KIAotICAgIGlmIChjZWxscy5pc0Vt
cHR5KCkgJiYgY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmU6OmNyZWF0ZShjb2RlLCB2bSk7CisgICAgaWYgKGNlbGxzLmlzRW1wdHko
KSAmJiBjYWxsTGlua0luZm9zLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHN0dWIgPSBhZG9w
dFJlZigqbmV3IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1v
dmUoY2FzZXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVzKSkpOworICAgICAgICBzdHViLT5tYWtl
R0NBd2FyZSh2bSk7CisgICAgICAgIHJldHVybiBzdHViOworICAgIH0KICAgICAKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBv
d25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExpbmtJbmZvcykpKTsKKyAgICBhdXRvIHN0dWIgPSBh
ZG9wdFJlZigqbmV3IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIFdURk1v
dmUoY2FzZXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVzKSwgb3duZXIsIGNlbGxzLCBXVEZNb3Zl
KGNhbGxMaW5rSW5mb3MpKSk7CisgICAgc3R1Yi0+bWFrZUdDQXdhcmUodm0pOworICAgIHJldHVy
biBzdHViOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCmluZGV4IDQ4YmVmYmM0ODdmY2EyNTcw
YzY1YzkyOWY5NGQxOGU2Y2UxY2E5ZmQuLjNhNjdkZmJjNTg2ZmI3YTVjZGVmZjIxNWY4NDQ2ODhh
MjBjYjllNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklU
U3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0zOCw2ICszOSw3IEBAIG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ29kZU9y
aWdpblBvb2w7CiB9CiAKK2NsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDYWxsTGlua0luZm87CiBj
bGFzcyBKSVRTdHViUm91dGluZVNldDsKIApAQCAtNTQsMTIgKzU2LDE0IEBAIGNsYXNzIEpJVFN0
dWJSb3V0aW5lU2V0OwogLy8gbGlzdCB3aGljaCBkb2VzIG5vdCBnZXQgcmVjbGFpbWVkIGFsbCBh
dCBvbmNlKS4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBKSVRTdHViUm91
dGluZSB7CiBwdWJsaWM6Ci0gICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYpOworICAgIEdDQXdhcmVK
SVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+Jik7CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZSgpIG92ZXJyaWRlOwogCi0gICAg
c3RhdGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSkKKyAgICBzdGF0aWMgUmVm
PEpJVFN0dWJSb3V0aW5lPiBjcmVhdGUoVk0mIHZtLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtKSk7CisgICAgICAgIGF1
dG8gc3R1YiA9IGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUpKTsKKyAg
ICAgICAgc3R1Yi0+bWFrZUdDQXdhcmUodm0pOworICAgICAgICByZXR1cm4gc3R1YjsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpAQCAtNjksNiArNzMsOCBAQCBjbGFz
cyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogICAgIH0K
ICAgICAKICAgICB2b2lkIGRlbGV0ZUZyb21HQygpOworCisgICAgdm9pZCBtYWtlR0NBd2FyZShW
TSYpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIG92
ZXJyaWRlOwpAQCAtODEsMTQgKzg3LDQ0IEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZSA6
IHB1YmxpYyBKSVRTdHViUm91dGluZSB7CiAKICAgICBib29sIG1fbWF5QmVFeGVjdXRpbmcgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9pc0pldHRpc29uZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0dDQXdhcmUgeyBmYWxzZSB9OworfTsKKworY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHVi
Um91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgeworcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CisKKyAgICBQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4mLCBWTSYsIEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRW
ZWN0b3I8U3RydWN0dXJlSUQ+JiYpOworCisgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFj
Y2Vzc0Nhc2U+PiYgY2FzZXMoKSBjb25zdCB7IHJldHVybiBtX2Nhc2VzOyB9CisgICAgY29uc3Qg
Rml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiB3ZWFrU3RydWN0dXJlcygpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vha1N0cnVjdHVyZXM7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2hhc2gpCisgICAgICAgICAgICBtX2hhc2ggPSBjb21wdXRlSGFzaCht
X2Nhc2VzLCBtX3dlYWtTdHJ1Y3R1cmVzKTsKKyAgICAgICAgcmV0dXJuIG1faGFzaDsKKyAgICB9
CisKKyAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgRml4ZWRWZWN0b3I8UmVm
UHRyPEFjY2Vzc0Nhc2U+PiYsIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYpOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgb3ZlcnJpZGU7CisKK3By
aXZhdGU6CisgICAgVk0mIG1fdm07CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+
PiBtX2Nhc2VzOworICAgIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiBtX3dlYWtTdHJ1Y3R1cmVz
OwogfTsKIAogLy8gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gbWFyayBvbmUgYWRkaXRpb25hbCBv
YmplY3QgZHVyaW5nIEdDIGlmIHlvdXIgc3R1YgogLy8gcm91dGluZSBpcyBrbm93biB0byBiZSBl
eGVjdXRpbmcuCi1jbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdD
QXdhcmVKSVRTdHViUm91dGluZSB7CitjbGFzcyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
IDogcHVibGljIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUgewogcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOworCiAgICAgTWFy
a2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSgKLSAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwg
Y29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJik7CisgICAgICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiwgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+
JiYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxs
TGlua0luZm8+JiYpOwogICAgIH5NYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJp
ZGU7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0xMDcsOSArMTQzLDkgQEAgY2xhc3MgTWFya2luZ0dD
QXdhcmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogLy8g
Zm9yIG5ldyBleGNlcHRpb24gaGFuZGxlcnMgdG8gdXNlIHRoZSBzYW1lIERpc3Bvc2FibGVDYWxs
U2l0ZUluZGV4LgogY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRs
ZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZSB7CiBwdWJsaWM6
Ci0gICAgdHlwZWRlZiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgQmFzZTsKKyAgICB1c2luZyBCYXNl
ID0gTWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTsKIAotICAgIEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3Rv
cjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIENvZGVCbG9jayosIERpc3Bvc2FibGVD
YWxsU2l0ZUluZGV4KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFu
ZGxlcihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+Jiwg
Vk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVj
dHVyZUlEPiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBC
YWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxvY2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7
CiAgICAgfkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKCkgZmluYWw7
CiAKICAgICB2b2lkIGFib3V0VG9EaWUoKSBmaW5hbDsKQEAgLTEyOSw5ICsxNjUsMTAgQEAgY2xh
c3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJs
aWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIGFwcHJvcHJpYXRlLiBHZW5lcmFsbHkgeW91IG9ubHkg
bmVlZCB0byBwYXNzIHBvaW50ZXJzIHRoYXQgd2lsbCBiZSB1c2VkCiAvLyBhZnRlciB0aGUgZmly
c3QgY2FsbCB0byBDKysgb3IgSlMuCiAvLyAKLS8vIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRl
SklUU3R1YlJvdXRpbmUoCisvLyBSZWY8UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZT4g
Y3JlYXRlSUNKSVRTdHViUm91dGluZSgKIC8vICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsCiAvLyAgICBWTSYgdm0sCisvLyAgICBGaXhl
ZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYgY2FzZXMsCiAvLyAgICBjb25zdCBKU0NlbGwq
IG93bmVyLAogLy8gICAgYm9vbCBtYWtlc0NhbGxzLAogLy8gICAgLi4uKTsKQEAgLTE0Miw4ICsx
NzksOCBAQCBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBm
aW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVAogLy8gdGhpcyBmdW5jdGlvbiB1c2luZyB2
YXJhcmdzLCBJIGVuZGVkIHVwIHdpdGggbW9yZSBjb2RlIHRoYW4gdGhpcyBzaW1wbGUKIC8vIHdh
eS4KIAotUmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKLSAgICBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25z
dCBKU0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCitSZWY8UG9seW1vcnBoaWNBY2Nlc3NK
SVRTdHViUm91dGluZT4gY3JlYXRlSUNKSVRTdHViUm91dGluZSgKKyAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgRml4ZWRWZWN0b3I8UmVmUHRy
PEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiB3ZWFrU3Ry
dWN0dXJlcywgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVyLCBib29sIG1ha2VzQ2FsbHMsCiAgICAg
Y29uc3QgVmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9z
LAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMsIERpc3Bvc2Fi
bGVDYWxsU2l0ZUluZGV4IGV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5kZXggOGY0NWIzNzdjMTY5NmE1MTZhODQzMDBiODky
MWY2YWRkNmEzZDRkZC4uMDY3YWJmZjFkNmFkMjAwNzU0NTE4MDA3N2IwYzRhNTVjNzc3MjI2NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTQ2MCw2ICs0NjAsNyBAQCBjbGFz
cyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjMgPSBY
ODZSZWdpc3RlcnM6OnI5OyAvLyByZWdUMwogI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24g
V2luZG93cykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIxID0gWDg2UmVn
aXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJu
VmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEg
b3IgcmVnVDIKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1
cm5HUFIgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCkBA
IC02NTIsNiArNjUzLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgYXJndW1lbnRHUFI2ID0gQVJNNjRSZWdpc3RlcnM6Ong2OyAvLyByZWdUNgogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSNyA9IEFSTTY0UmVnaXN0ZXJzOjp4Nzsg
Ly8gcmVnVDcKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25BcmdHUFIwID0gQVJNNjRS
ZWdpc3RlcnM6Ong4OyAvLyByZWdUOAorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFy
Z0dQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7IC8vIHJlZ1Q5CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBBUk02NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gQVJNNjRSZWdpc3Rl
cnM6OngxOyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZl
ZE5vblJldHVybkdQUiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCAxYWZmZTllOTM3NzYyOTZmZjcyNzllMTdmNTBiYjgyOGExNDUzYWYzLi5mZDIz
YmI5MWJjOTE3MDkwMjJiMTY2MjMxNzM1ZjE1MjRjODk5MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0xMjY1LDEyICsxMjY1LDEyIEBAIHZvaWQgSklUOjpsaW5rKCkKIAogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29tcGlsYXRpb25JbmZvIDogbV9ieVZhbENvbXBp
bGF0aW9uSW5mbykgewogICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVOb3RJbmRl
eEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5ub3RJbmRleEp1bXA7Ci0gICAgICAgICAgICBh
dXRvIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4oKTsK
KyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbm90SW5kZXhK
dW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1NldCgp
KQogICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRj
aGFibGVOb3RJbmRleEp1bXApKTsKIAogICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFi
bGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOwotICAgICAg
ICAgICAgYXV0byBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4oKTsKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFk
VHlwZUp1bXA7CiAgICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNT
ZXQoKSkKICAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihi
eVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwogCkBAIC0xMjc5LDE0ICsxMjc5LDE5
IEBAIHZvaWQgSklUOjpsaW5rKCkKICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhUYXJnZXQgPSBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
PEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLnNsb3dQYXRoVGFyZ2V0KSk7
CiAKICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+c2V0VXAoCi0g
ICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wLAotICAgICAgICAgICAgICAgIGJhZFR5cGVKdW1w
LAogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXIsCiAgICAgICAgICAgICAgICAgYnlW
YWxDb21waWxhdGlvbkluZm8uYXJyYXlNb2RlLAogICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGls
YXRpb25JbmZvLmFycmF5UHJvZmlsZSwKICAgICAgICAgICAgICAgICBkb25lVGFyZ2V0LAogICAg
ICAgICAgICAgICAgIG5leHRIb3RQYXRoVGFyZ2V0LAogICAgICAgICAgICAgICAgIHNsb3dQYXRo
VGFyZ2V0KTsKKyAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJ
bmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZv
LmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2Vk
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wID0g
bm90SW5kZXhKdW1wOworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFs
SW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1ODBmZjUwMTM1NzNmYTY4
NTcxNzIwZmUxNzc4ZTI1MTZkYWU3NzlkLi43ZmVkOGJhNDg5OTA2MmQ4MDg5MmNkMjVhYjFlMDFl
MmZhZjI4YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI5NCw2ICsyOTQsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwogICAgICAg
ICB9CiAKKyAgICAgICAgdm9pZCBhcHBlbmRDYWxsKEFkZHJlc3MgZnVuY3Rpb24pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNhbGwoZnVuY3Rpb24sIE9wZXJhdGlvblB0clRhZyk7CisgICAgICAg
IH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIENhbGwgYXBwZW5k
Q2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPiBmdW5jdGlvbikKICAgICAgICAgewpAQCAtMzk3LDM5ICs0MDIsMzkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIC8vIFByb3BlcnR5IGlzIGludC1jaGVja2VkIGFuZCB6ZXJvIGV4dGVu
ZGVkLiBCYXNlIGlzIGNlbGwgY2hlY2tlZC4KICAgICAgICAgLy8gU3RydWN0dXJlIGlzIGFscmVh
ZHkgcHJvZmlsZWQuIFJldHVybnMgdGhlIHNsb3cgY2FzZXMuIEZhbGwtdGhyb3VnaAogICAgICAg
ICAvLyBjYXNlIGNvbnRhaW5zIHJlc3VsdCBpbiByZWdUMCwgYW5kIGl0IGlzIG5vdCB5ZXQgcHJv
ZmlsZWQuCi0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKSB7IHJldHVybiBlbWl0Q29udGln
dW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMyU2hhcGUpOyB9Ci0gICAgICAgIEp1
bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBleHBlY3RlZFNo
YXBlID0gQ29udGlndW91c1NoYXBlKTsKLSAgICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFn
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKLSAgICAg
ICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBKSVRB
cnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0
SW50MzJMb2FkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pIHsgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9h
ZChpbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJbnQzMlNoYXBlKTsgfQorICAgICAg
ICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOworICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91
c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbElu
Zm8qLCBJbmRleGluZ1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7CisgICAg
ICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CisgICAgICAgIEp1bXBMaXN0IGVtaXRM
b2FkRm9yQXJyYXlNb2RlKGNvbnN0IEluc3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKIAogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBp
biByZWdUMSwgYmFzZSBpcyBpbiByZWdUMC4gcmVnVDIgY29udGFpbnMgaW5kZWNpbmcgdHlwZS4K
ICAgICAgICAgLy8gVGhlIHZhbHVlIHRvIHN0b3JlIGlzIG5vdCB5ZXQgbG9hZGVkLiBQcm9wZXJ0
eSBpcyBpbnQtY2hlY2tlZCBhbmQKICAgICAgICAgLy8gemVyby1leHRlbmRlZC4gQmFzZSBpcyBj
ZWxsIGNoZWNrZWQuIFN0cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLgogICAgICAgICAvLyBy
ZXR1cm5zIHRoZSBzbG93IGNhc2VzLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAg
ICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKGJ5
dGVjb2RlLCBiYWRUeXBlLCBJbnQzMlNoYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2Vu
ZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBJbnQz
MlNoYXBlKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgSnVtcExpc3QgZW1pdERvdWJsZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIERvdWJsZVNoYXBlKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0R2Vu
ZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvLCBEb3Vi
bGVTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAg
ICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUpCisgICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmlj
Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgICAg
ICB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0
R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5k
ZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3VzU2hhcGUpOworICAgICAgICBKdW1w
TGlzdCBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUgPSBDb250aWd1b3Vz
U2hhcGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSnVtcExpc3Qg
ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKKyAg
ICAgICAgSnVtcExpc3QgZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0g
ICAgICAgIEp1bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEludFR5
cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwg
VHlwZWRBcnJheVR5cGUpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAg
SnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiwgVHlw
ZWRBcnJheVR5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBF
Q01BTW9kZSBlY21hTW9kZShPcCk7CkBAIC05MDEsMTMgKzkwNiwxNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7Cisg
ICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKTsKICNpZiBP
UyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25z
dCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3Qg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7Cisg
ICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQo
QWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE1ldGFkYXRhPgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgY29u
c3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgorICAgICAgICB2b2lkIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0V2l0aFByb2ZpbGUoTWV0YWRh
dGEmLCBBZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAgICAgICAgCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAg
ICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jl
c3VsdCwgTWFjcm9Bc3NlbWJsZXI6OkNhbGw+CkBAIC05MTcsNiArOTI2LDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICAgICAgfQogCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
ICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jl
c3VsdCwgdm9pZD4KKyAgICAgICAgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3Mu
Li4pOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCks
IHJlc3VsdCk7CisgICAgICAgIH0KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICAgICAgIHN0cnVjdCBpczY0Qml0VHlw
ZSB7CkBAIC05MzcsNiArOTU0LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJu
VHlwZShvcGVyYXRpb24pOwogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICAgICAgdm9pZCBjYWxsT3BlcmF0
aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJn
cy4uLik7CisgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBjYW5ub3QgdXNlIHN0YW5kYXJkIGNh
bGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRoYW4gNjQgYml0cy4KKyAgICAgICAg
ICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgICAgICAgICBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0
Lm9mZnNldCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoQWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAgIH0KICNlbHNlIC8vIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIEFyZ3MuLi4gYXJncykKQEAgLTk0NCw2
ICs5NzIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50czxP
cGVyYXRpb25UeXBlPihhcmdzLi4uKTsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgICAgICB2b2lk
IGNhbGxPcGVyYXRpb24oQWRkcmVzcyB0YXJnZXQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgewor
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4o
dGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2soQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCB0YXJnZXQub2Zmc2V0KSk7CisgICAgICAg
IH0KICNlbmRpZiAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgpAQCAtOTU0LDYgKzk4OSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQ
cm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgICAgIH0KIAorICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBNZXRhZGF0YSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICAgICAgc3RkOjplbmFibGVfaWZfdDxGdW5jdGlvblRyYWl0czxP
cGVyYXRpb25UeXBlPjo6aGFzUmVzdWx0LCB2b2lkPgorICAgICAgICBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGUoTWV0YWRhdGEmIG1ldGFkYXRhLCBBZGRyZXNzIHRhcmdldCwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzZXR1cEFy
Z3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25UeXBlPih0YXJnZXQsIGFyZ3MuLi4pOwor
ICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0V2l0aFByb2ZpbGUobWV0YWRhdGEsIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
dGFyZ2V0Lm9mZnNldCksIHJlc3VsdCk7CisgICAgICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChPcGVyYXRpb25UeXBlIG9wZXJh
dGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4uLiBhcmdzKQogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAxYjQ5ZDQ4OWRhYTJiNzg2YWI3
OTM5MmY5YTM0ZWJjNjQ0Y2RhYjE4Li42YWI1NDg4MmQ3ZDkxMmM1NjE5ZjZiYWY0MGExYzY1YTAz
MWJlNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTM5OCw4ICsz
OTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJ
ZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QxLCBBY2Nlc3NUeXBlOjpHZXRCeUlk
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNDMyLDgg
KzQzMiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIAogICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQ
cm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgQ2FsbCBj
YWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7
CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemU7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spLCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG5leHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJhdG9yR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50
KS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldp
dGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplLCBuZXh0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlcmF0b3JHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgIGF1dG8gZG9u
ZSA9IGp1bXAoKTsKIAogICAgIG5vdE9iamVjdC5saW5rKHRoaXMpOwpAQCAtNDgwLDggKzQ4Nyw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQogICAgICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpOwogICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFk
ZCh2YWx1ZUdQUik7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdz
LAotICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRl
clJlc3VsdEdQUiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
KyAgICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpKSksIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1l
cy0+ZG9uZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyhpdGVyUmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3Mo
ZG9uZUdQUiksIHJlZ1QzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNDk5LDggKzUwNiw4IEBA
IHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogICAgICAgICBKdW1wTGlzdCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHko
dm0oKSwgSlNWYWx1ZVJlZ3MoZG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwg
ZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpOwogCiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1l
cy0+dmFsdWUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMt
PnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCByZWdUNCwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTUyOCwxNiArNTM1LDIzIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAg
ICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKICAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFu
Y2hJZk5vdENlbGwoaXRlclJlc3VsdEdQUikpOwotICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJy
YW5jaElmTm90T2JqZWN0KGl0ZXJSZXN1bHRHUFIpKTsKIAogICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpOwogICAgICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwog
ICAgICAgICAKICAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICAg
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJ
Zk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAKKyAgICAgICAgQ2FsbCBjYWxsOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAg
ICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSks
IEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhQcm9m
aWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBkb25lVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyUmVz
dWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVy
KGlkZW50KS5yYXdCaXRzKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBj
YWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGRvbmVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOworCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9uZVZSZWcsIHJlZ1QxKTsK
ICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7
CiAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwpAQCAtNTU2
LDggKzU3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogCiAgICAgICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwot
CisgICAgICAgIENhbGwgY2FsbDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dP
cGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpPihieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgdmFsdWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgdmFs
dWVWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5z
dHViSW5mbygpLCBpdGVyUmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOwogICAgICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGVjYzRlNWYzZmY2ZDA3Zjk5YzA3
ODRkZDRjMTJkZWJhMGUyMTBkY2YuLjE1MjUxNGFmZGNhYzc4MmFjOWM4NzRlNTUwYWZmYjljNzI4
YmVhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAg
LTM5NiwxMiArMzk2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAg
ICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBDYWxsU2l0ZUluZGV4
KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCiAgICAgICAgIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwKICAg
ICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxvYWRJdGVyYXRvckdQUiksCiAg
ICAgICAgIG5leHRSZWdzLAorICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBA
IC01MDUsMTIgKzUwNywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgcHJlc2VydmVkUmVncy5hZGQocGF5
bG9hZFZhbHVlR1BSKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
ICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJVFR5cGU6OkJhc2VsaW5lSklULAogICAg
ICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICAgICAgQ2FsbFNp
dGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAogICAgICAg
ICAgICAgcHJlc2VydmVkUmVncywKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwo
KSksCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRl
clJlc3VsdEdQUiksCiAgICAgICAgICAgICBkb25lUmVncywKKyAgICAgICAgICAgIEludmFsaWRH
UFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOwpAQCAtNTMzLDEyICs1MzcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgICAgIEpJ
VFR5cGU6OkJhc2VsaW5lSklULAogICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLAogICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkpLAogICAgICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAogICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksCiAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3Vs
dEdQUiksCiAgICAgICAgICAgICByZXN1bHRSZWdzLAorICAgICAgICAgICAgSW52YWxpZEdQUlJl
ZywKICAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4IDc3NDU5YWJlYWMzZTJiZjQw
ZDQ5YjJlYmRmN2Q2YzY3ODUzMWI5NTYuLjczNzY2NzliZTg3MmI1OTg5M2Y5YWNhMzE5OGU5ZWZl
NTUyMmY2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC01MSwxMyArNTEs
MTUgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiBjbGFzcyBWTTsKIAogZW51bSBjbGFzcyBK
SVRUeXBlIDogdWludDhfdCB7Ci0gICAgTm9uZSwKLSAgICBIb3N0Q2FsbFRodW5rLAotICAgIElu
dGVycHJldGVyVGh1bmssCi0gICAgQmFzZWxpbmVKSVQsCi0gICAgREZHSklULAotICAgIEZUTEpJ
VAorICAgIE5vbmUgPSAwYjAwMCwKKyAgICBIb3N0Q2FsbFRodW5rID0gMGIwMDEsCisgICAgSW50
ZXJwcmV0ZXJUaHVuayA9IDBiMDEwLAorICAgIEJhc2VsaW5lSklUID0gMGIwMTEsCisgICAgREZH
SklUID0gMGIxMDAsCisgICAgRlRMSklUID0gMGIxMDEsCiB9Oworc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7CitzdGF0aWNfYXNzZXJ0KFdURjo6Z2V0TVNCU2V0
Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJ
VFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9mSklUVHlwZSk7CiAKIGNsYXNzIEpJVENvZGUg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogcHVibGljOgpAQCAtMTU1
LDYgKzE1NywxNSBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEpJVENvZGU+IHsKICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSklUVHlwZTo6SW50ZXJwcmV0
ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVFR5cGU6OkJhc2VsaW5lSklUOwogICAgIH0KIAorICAg
IHN0YXRpYyBib29sIHVzZURhdGFJQyhKSVRUeXBlIGppdFR5cGUpCisgICAgeworICAgICAgICBp
ZiAoIU9wdGlvbnM6OnVzZURhdGFJQygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZURhdGFJQ0luT3B0aW1pemlu
Z0pJVCgpOworICAgIH0KKwogICAgIHZpcnR1YWwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKICAgICBlbnVtIGNsYXNz
IFNoYXJlQXR0cmlidXRlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDE4OTNjNjgwMTJiMDJi
NzU2MDA3MzFhNmY3NzY5Y2FiMWJlMGRkZDAuLmZkZmQyYTlkYjVjYzVlMTBiZDI3MmEzZDgxYWEx
ZmY1ODE0M2VjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC00Myw5ICs0MywxMCBAQCBzdGF0aWMgU3RydWN0
dXJlU3R1YkluZm8qIGdhcmJhZ2VTdHViSW5mbygpCiB9CiAKIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yOjpKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUsCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUsCiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpCiAgICAg
OiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKIHsKICAg
ICBtX3N0dWJJbmZvID0gbV9jb2RlQmxvY2sgPyBtX2NvZGVCbG9jay0+YWRkU3R1YkluZm8oYWNj
ZXNzVHlwZSwgY29kZU9yaWdpbikgOiBnYXJiYWdlU3R1YkluZm8oKTsKICAgICBtX3N0dWJJbmZv
LT5jYWxsU2l0ZUluZGV4ID0gY2FsbFNpdGU7CkBAIC02MCwyMCArNjEsMjIgQEAgdm9pZCBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCiAKICAgICBtX3N0dWJJbmZvLT5kb25lTG9j
YXRpb24gPSBmYXN0UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fZG9uZSk7CiAK
LSAgICBtX3N0dWJJbmZvLT5zbG93UGF0aENhbGxMb2NhdGlvbiA9IHNsb3dQYXRoLmxvY2F0aW9u
T2Y8SlNJbnRlcm5hbFB0clRhZz4obV9zbG93UGF0aENhbGwpOworICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fc2xvd1BhdGhDYWxs
TG9jYXRpb24gPSBzbG93UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1Bh
dGhDYWxsKTsKICAgICBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBzbG93UGF0
aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3Nsb3dQYXRoQmVnaW4pOwogfQog
CiBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBl
LCB1c2VkUmVnaXN0ZXJzKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5
cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlLAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKQor
ICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKICAgICAsIG1fYmFzZShi
YXNlKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0g
YmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSB2YWx1ZS5wYXls
b2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsK
KyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsK
ICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwpAQCAtODMsMTMg
Kzg2LDE1IEBAIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAKIHZvaWQgSklU
QnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXIm
IHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOwotICAgIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBm
YXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFz
dFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9j
b2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCiB2b2lkIEpJ
VEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBz
aXplX3QgaW5saW5lSUNTaXplKQogeworICAgIC8vIFdlIGdlbmVyYXRlIHRoZSBzYW1lIGNvZGUg
cmVnYXJkbGVzcyBvZiB3aGV0aGVyIFNoYXJlZElDIGlzIGVuYWJsZWQgYmVjYXVzZSB3ZSBzdGls
bCBuZWVkIHRvIHVzZSBJbmxpbmVBY2Nlc3MKKyAgICAvLyBmb3IgdGhlIHBlcmZvcm1hbmNlIHJl
YXNvbi4KICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9
IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpOwogICAgIG1fc2xvd1BhdGhKdW1w
ID0gaml0Lmp1bXAoKTsKQEAgLTEwMSw5ICsxMDYsOSBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdENvbW1vbihNYWNyb0Fzc2VtYmxlciYgaml0LCBzaXplX3QgaW5saW5lSUNT
aQogfQogCiBKSVRHZXRCeUlkR2VuZXJhdG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIENhY2hlYWJs
ZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBi
YXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdp
c3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAgICAsIG1faXNMZW5ndGhBY2Nlc3Mo
cHJvcGVydHlOYW1lLnVpZCgpID09IGNvZGVCbG9jay0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGguaW1wbCgpKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHZh
bHVlLnRhZ0dQUigpKTsKQEAgLTExNSw5ICsxMjAsOSBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIH0KIAogSklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yOjpKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHRoaXNSZWdzKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMs
IGJhc2UsIHZhbHVlKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRoaXNSZWdzLCBHUFJS
ZWcgc3R1YkluZm9HUFIpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpcywgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKHRoaXNSZWdzLnBheWxvYWRHUFIoKSAhPSB0aGlzUmVncy50YWdHUFIoKSk7CiAKQEAgLTEz
MywxMCArMTM4LDEwIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB9CiAKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6
OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFi
bGVJZGVudGlmaWVyLAorICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoLCAKICAgICBFQ01BTW9kZSBlY21hTW9k
ZSwgUHV0S2luZCBwdXRLaW5kKQotICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2Nr
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBi
YXNlLCB2YWx1ZSkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgaml0VHlw
ZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywg
YmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSKQogICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUp
CiAgICAgICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCiB7CkBAIC0xNzEsMTQgKzE3NiwxNSBAQCBW
X0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rp
b24oKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFs
dWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWwsIHVzZWRSZWdp
c3RlcnMpCitKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklURGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoKQorICAgIDogQmFzZShj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6
OkRlbGV0ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0
YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAhPSBy
ZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5wYXls
b2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IHByb3BlcnR5LnBh
eWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BS
KCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgQVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQ
UigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTE5
MSwyNiArMTk3LDMwIEBAIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJVERlbEJ5VmFs
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAg
bV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJs
ZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpIHsKKyAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGpp
dC5sYWJlbCgpOwogfQogCi12b2lkIEpJVERlbEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAg
ICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJVERl
bEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgp
KTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0
UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFz
ZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyht
X2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5z
bG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5
SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBHUFJSZWcgc2NyYXRjaCkKLSAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2lu
LCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlELCB1c2VkUmVnaXN0ZXJzKQor
SklURGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hl
YWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeUlE
LCB1c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IHRydWU7CiAgICAgQVNTRVJUKGJhc2UucGF5bG9hZEdQUigpICE9IHJlc3VsdC5wYXlsb2Fk
R1BSKCkpOwogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAg
ICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBtX3N0
dWJJbmZvLT52YWx1ZUdQUiA9IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+
bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
QVNTRVJUKGJhc2UudGFnR1BSKCkgIT0gcmVzdWx0LnRhZ0dQUigpKTsKICAgICBtX3N0dWJJbmZv
LT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKQEAgLTIyMywyNiArMjMzLDMwIEBAIEpJVERl
bEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVPcmlnaW4gY29kZU9yCiB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7
Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkgeworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIp
OworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1
YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGpp
dC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0gaml0LmxhYmVsKCk7CiB9CiAKLXZvaWQg
SklURGVsQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgs
IExpbmtCdWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVREZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNT
RVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgK
LSAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0
dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9
CiAKLUpJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUlu
ZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCkKLSAgICA6IEJhc2UoY29k
ZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCB1
c2VkUmVnaXN0ZXJzKQorSklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCB1
c2VkUmVnaXN0ZXJzKQogewogICAgIG1fc3R1YkluZm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9
IGZhbHNlOwogCiAgICAgbV9zdHViSW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwog
ICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7
CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwogICAgIG1f
c3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOwpAQCAtMjUzLDcgKzI2Nywx
MSBAQCBKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcgogdm9pZCBKSVRJbkJ5VmFsR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGpp
dC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0
dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1
YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIo
KSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0
aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwog
fQogCkBAIC0yNjEsMTIgKzI3OSwxNSBAQCB2b2lkIEpJVEluQnlWYWxHZW5lcmF0b3I6OmZpbmFs
aXplKAogICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsK
ICAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAg
ICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRo
LCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZv
LT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKLUpJ
VEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2Nr
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluQnlJ
ZCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCitKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVElu
QnlJZEdlbmVyYXRvcigKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJ
bmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVP
cmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbkJ5SWQsIHVzZWRSZWdpc3RlcnMsIGJhc2Us
IHZhbHVlLCBzdHViSW5mb0dQUikKIHsKICAgICAvLyBGSVhNRTogV2UgYXJlIG5vdCBzdXBwb3J0
aW5nIGZhc3QgcGF0aCBmb3IgImxlbmd0aCIgcHJvcGVydHkuCiAgICAgVU5VU0VEX1BBUkFNKHBy
b3BlcnR5TmFtZSk7CkBAIC0yNzksMTUgKzMwMCwxNSBAQCB2b2lkIEpJVEluQnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRJbnN0YW5j
ZU9mR2VuZXJhdG9yOjpKSVRJbnN0YW5jZU9mR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCwKLSAgICBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLAorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4LAorICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzdHViSW5m
b0dQUiwKICAgICBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwgYm9vbCBwcm90b3R5
cGVJc0tub3duT2JqZWN0KQotICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgICAg
IGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5zdGFu
Y2VPZiwgdXNlZFJlZ2lzdGVycykKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5z
dGFuY2VPZiwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gdmFs
dWU7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQ7CiAgICAgbV9zdHViSW5mby0+
cmVncy5wcm90b3R5cGVHUFIgPSBwcm90b3R5cGU7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5m
b0dQUiA9IHN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdH
UFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMzA3LDIxICszMjgsMjQgQEAgSklUSW5zdGFuY2VPZkdl
bmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKIAogdm9pZCBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7Ci0gICAgbV9q
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9z
dHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0
dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRy
KCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1Bh
dGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsK
IH0KIAogdm9pZCBKSVRJbnN0YW5jZU9mR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBm
YXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3I6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsCi0gICAgICAgIGZh
c3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fanVtcCkpOwotICAgIAot
ICAgIGZhc3RQYXRoLmxpbmsobV9qdW1wLm1fanVtcCwgc2xvd1BhdGgubG9jYXRpb25PZjxOb1B0
clRhZz4obV9zbG93UGF0aEJlZ2luKSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNs
b3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0
dWJJbmZvLT5tX2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9
CiAKLUpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVn
cyByZXN1bHQpCi0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRl
eCwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKK0pJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRH
ZXRCeVZhbEdlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIHN0dWJJbmZvR1BSKQorICAgIDogQmFzZShjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmln
aW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCiAgICAgLCBtX2Jh
c2UoYmFzZSkKICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKIHsKQEAgLTMzMCw2ICszNTQsNyBAQCBK
SVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZQogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBh
eWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHku
cGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRH
UFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdH
UFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsKQEAg
LTM0MCwyMCArMzY1LDIzIEBAIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpKSVRHZXRCeVZhbEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlCiB2b2lkIEpJVEdldEJ5
VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAg
ICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNo
YWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpIHsKKyAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBt
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9
IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSgK
LSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgpCit2b2lkIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1
ZmZlciYgc2xvd1BhdGgpCiB7Ci0gICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFz
ZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRp
b25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXpl
KGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0
clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkK
KyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFy
dExvY2F0aW9uOwogfQogCi1KSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIGJyYW5kKQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNh
bGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJh
bmQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQogewog
ICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kIHx8
IGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kKTsKICAgICBtX3N0dWJJ
bmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKQEAgLTM2MSw2ICszODksNyBAQCBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbAogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBh
eWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLmJyYW5kR1BSID0gYnJhbmQucGF5bG9h
ZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBt
X3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICBt
X3N0dWJJbmZvLT52LmJyYW5kVGFnR1BSID0gYnJhbmQudGFnR1BSKCk7CkBAIC0zNzEsMTYgKzQw
MCwxOSBAQCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcihDb2RlQmxvY2sqIGNvZGVCbAogdm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIHsKICAg
ICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hh
YmxlSnVtcCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkgeworICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyksIG1f
c3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQorICAg
ICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25lID0g
aml0LmxhYmVsKCk7CiB9CiAKLXZvaWQgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpm
aW5hbGl6ZSgKLSAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZlciYgc2xvd1BhdGgp
Cit2b2lkIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0
LmlzU2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1Bh
dGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsK
KyAgICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9u
T2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1
YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKaW5kZXggOTA0ZGIxNDIyMjM4YmQxNGNmMzQyOTFhZjc1MzY4NDA4YmE1N2I5YS4uNGI0Nzli
OTc2ZTFlNzcxNmMwMzM2ZTUyNWY3NzJlZDMyZmNkMTVjZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNDEsMTIgKzQx
LDEyIEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCiBlbnVt
IGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CitlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90
OwogCiBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiBwcm90ZWN0ZWQ6CiAgICAgSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IoKSB7IH0KLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigK
LSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlw
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMpOworICAgIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yKENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKICAgICAKIHB1
YmxpYzoKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8oKSBjb25zdCB7IHJldHVybiBt
X3N0dWJJbmZvOyB9CkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yIHsKICAgICAKIHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOworICAg
IEpJVFR5cGUgbV9qaXRUeXBlOwogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOwog
CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZG9uZTsKQEAgLTc3LDggKzc4LDggQEAgY2xh
c3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAg
ICAgSklUQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUQnlJZEdlbmVyYXRvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHZhbHVlKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc3R1YkluZm9HUFIpOwogCiBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
c2xvd1BhdGhKdW1wKCkgY29uc3QKQEAgLTEwMSwxMyArMTAyLDEzIEBAIGNsYXNzIEpJVEJ5SWRH
ZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklUR2V0QnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKK2NsYXNzIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUR2V0
QnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEFjY2Vzc1R5cGUp
OwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogCkBA
IC0xMTUsMjYgKzExNiwyNiBAQCBjbGFzcyBKSVRHZXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJ
VEJ5SWRHZW5lcmF0b3IgewogICAgIGJvb2wgbV9pc0xlbmd0aEFjY2VzczsKIH07CiAKLWNsYXNz
IEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsK
K2NsYXNzIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoKSB7
IH0KIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncyk7CisgICAgICAgIENvZGVCbG9j
ayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVn
cyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MsIEdQUlJlZyBz
dHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
KTsKIH07CiAKLWNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVy
YXRvciB7CitjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRH
ZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6
IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBD
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2Rl
LCBQdXRLaW5kKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJs
ZXImKTsKICAgICAKQEAgLTE0NSwxNCArMTQ2LDE0IEBAIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9
OwogCi1jbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7CitjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yOwogcHVibGljOgogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBK
SVREZWxCeVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQs
IEdQUlJlZyBzY3JhdGNoKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpOwogCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0xNzAsMTQgKzE3
MSwxNCBAQCBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0
aEp1bXA7CiB9OwogCi1jbGFzcyBKSVREZWxCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKK2NsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9CiAK
ICAgICBKSVREZWxCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVh
YmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBD
YWNoZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CkBAIC0yMDEsOCAr
MjAyLDggQEAgY2xhc3MgSklUSW5CeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAgICAgSklUSW5CeVZhbEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUSW5C
eVZhbEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpOworICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZv
R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAg
ICAgewpAQCAtMjIwLDQyICsyMjEsNTAgQEAgY2xhc3MgSklUSW5CeVZhbEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2Vu
ZXJhdG9yKCkgeyB9CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYpOwogfTsKIAotY2xhc3MgSklUSW5zdGFuY2VPZkdlbmVyYXRvciA6IHB1
YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHB1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiAgICAgSklUSW5zdGFuY2VP
ZkdlbmVyYXRvcigpIHsgfQogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCi0gICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LAotICAgICAgICBHUFJSZWcgdmFsdWUs
IEdQUlJlZyBwcm90b3R5cGUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAorICAg
ICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKKyAgICAgICAgR1BS
UmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLAogICAgICAgICBib29sIHByb3RvdHlwZUlzS25vd25P
YmplY3QgPSBmYWxzZSk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNz
ZW1ibGVyJik7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKICAgICB2b2lk
IGZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xv
d1BhdGhMaW5rQnVmZmVyKTsKIAogcHJpdmF0ZToKLSAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBtX2p1bXA7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCi1jbGFz
cyBKSVRHZXRCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7
CitjbGFzcyBKSVRHZXRCeVZhbEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwog
cHVibGljOgogICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1
bHQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJl
c3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNs
b3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpAQCAtMjc2LDE0ICsyODUsMTQgQEAgY2xhc3MgSklU
R2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAg
IE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xh
c3MgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKK2NsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgdXNpbmcgQmFzZSA9IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yOwogcHVibGljOgogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvcigpIHsgfQogCiAgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKAotICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgYnJhbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgYnJhbmQs
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0
aEp1bXAoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
aW5kZXggMzk4MDM5NGUxNmNjYWQxMjJmYTg1MGQ0MTEwOWIzNTAwZTY3YTljMy4uMTkzZTI3ODZk
YjdlM2MxNzViNjY1OGZiM2QzOWU5OWY1YWZiNTMxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFy
cmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBQYXRj
aGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBzd2l0Y2gg
KGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHJldHVybiBlbWl0SW50
MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0
SW50MzJMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBj
YXNlIEpJVERvdWJsZToKLSAgICAgICAgcmV0dXJuIGVtaXREb3VibGVMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0RG91YmxlTG9hZChjdXJyZW50
SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgY2FzZSBKSVRDb250aWd1b3Vz
OgotICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwg
YmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoY3VycmVudEluc3Ry
dWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNhc2UgSklUQXJyYXlTdG9yYWdlOgot
ICAgICAgICByZXR1cm4gZW1pdEFycmF5U3RvcmFnZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBi
YWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJlbnRJbnN0
cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xMjcsNiArMTI3LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0CiAg
ICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKK3sKKyAgICB1cGRhdGVUb3BDYWxs
RnJhbWUoKTsKKyAgICBhcHBlbmRDYWxsKGZ1bmN0aW9uKTsKKyAgICBleGNlcHRpb25DaGVjaygp
OworfQorCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xv
d1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rp
b24pCiB7CkBAIC0xNTYsNiArMTYzLDE2IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAg
cmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxS
ZWdpc3RlciBkc3QpCit7CisgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlv
bik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
cmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0U3RvcmUoZHN0LCByZXR1cm5WYWx1ZUdQ
UjIsIHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZgorfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRh
ZGF0YT4KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBt
ZXRhZGF0YSwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgVmly
dHVhbFJlZ2lzdGVyIGRzdCkKIHsKQEAgLTE3MCw2ICsxODcsMTkgQEAgQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmUKICAgICByZXR1cm4gY2FsbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRh
dGE+CitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
U2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgQWRkcmVzcyBm
dW5jdGlvbiwgVmlydHVhbFJlZ2lzdGVyIGRzdCkKK3sKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2Vsc2UKKyAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhLCBKU1ZhbHVlUmVncyhyZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZh
bHVlR1BSKSk7CisgICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1
ZUdQUik7CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bGlua1Nsb3dDYXNl
SWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgVmlydHVh
bFJlZ2lzdGVyIHJlZykKIHsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbChyZWcp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZWUxOWU2YWRm
NzAyODdiNmQxODBmYzI0YjE0NzRlMWJmYTMxNjhlOC4uZDE5OGQ0MWExY2JhMDMzYjcxYTY5ZDI0
YjVjMDZjYjhjNzIwZGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xNjQsMTMgKzE2NCwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICBKSVRJbnN0YW5jZU9mR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAgcmVnVDIs
IC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICByZWdUNSwKICAgICAg
ICAgcmVnVDMsIHJlZ1Q0KTsgLy8gc2NyYXRjaAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAg
ICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5zdGFuY2VPZnMuYXBwZW5kKGdlbik7CiAgICAg
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwpAQCAtMTg2LDcgKzE5MSwxNCBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiA9
IG1faW5zdGFuY2VPZnNbbV9pbnN0YW5jZU9mSW5kZXgrK107CiAgICAgCiAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CisK
KyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdl
bi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRp
b248ZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKT4oQWRkcmVzcyhHUFJJbmZv
Ojpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCByZXN1bHRWUmVnLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QyLCByZWdUMSk7CisgICAgfSBlbHNlCisgICAgICAg
IGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0
VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgcmVnVDIsIHJlZ1QxKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOwogfQogCkBAIC0xODA0LDcgKzE4MTYsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdAogICAgIAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlw
ZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9
IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRU
eXBlKTsKKyAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgbW92ZShU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCByZWdUMCk7CiAg
ICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xODE5LDggKzE4MzEsMTMgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBS
ZXR1cm5BZGRyZXNzUHQKICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHVi
Um91dGluZVB0clRhZywKICAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0
dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRh
KCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2Fs
bDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVz
c1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fYmFk
VHlwZUp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4o
YnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5m
by0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYzsK
KyAgICB9IGVsc2UgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRy
VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWMpKTsKKyAgICB9CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVt
ZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKQEAgLTE4NTQsMTEgKzE4NzEsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2VudW1l
cmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIAog
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5
cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlN
b2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2RlLCBi
YWRUeXBlLCBieVZhbEluZm8pOwogICAgIAogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYmFk
VHlwZSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQorICAgICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2Fz
ZXMpOwogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwpAQCAtMTg4NCw3ICsxOTAyLDE0
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cmVnVDEpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhl
ZFByb3BlcnR5RGVmYXVsdCwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHJlZ1QwLCByZWdUMSwgYnlWYWxJbmZvKTsKKworICAgIENhbGwgY2FsbDsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAg
ICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eURlZmF1bHQ7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBHUFJJbmZv
Ojpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBC
eVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwLCByZWdUMSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFsSW5mbyk7CiAKICAgICBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdl
dCA9IHNsb3dQYXRoOwogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0
aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDM2YzViYzhiYTY1NzVhMWIzNTJkODVmN2Rl
Yzk1Y2VmNTNlYWE0NTkuLjhmYWZiZjZhZGQ3ODE0NjgwYWNlMDFiOTg4OTIyNjcyNjZkODQ2NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAg
LTE2MiwxMyArMTYyLDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocHJvdG8pOwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksCiAgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgcmVnVDAsIC8vIHJlc3VsdAogICAgICAgICByZWdUMiwgLy8gdmFsdWUK
ICAgICAgICAgcmVnVDEsIC8vIHByb3RvCisgICAgICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAg
IHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2luc3RhbmNl
T2ZzLmFwcGVuZChnZW4pOwogICAgIAogICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7CkBA
IC0xMTgzLDcgKzExODUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJv
cGVydHkoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgIAogICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFycmF5cyBhbmQg
QXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1
cnJlbnRJbnN0cnVjdGlvbiwgYXJyYXlNb2RlLCBiYWRUeXBlKTsKKyAgICBKdW1wTGlzdCBzbG93
Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9k
ZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsK
ICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTExOTgsNyArMTIwMCw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbEluZm8qIGJ5VmFsSW5mbywg
UmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1
YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBz
dHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0
YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgCi0gICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9i
YWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVy
aWMpKTsKIH0KIApAQCAtMTIzNCw3ICsxMjM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX2Vu
dW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QK
IAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgdHlwZXMgbGlrZSBUeXBlZEFy
cmF5cyBhbmQgQXJndW1lbnRzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1MDMzIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM1MDM0LgotICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJy
YXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qg
c2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBtb2Rl
LCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7
CiAKICAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDQxODVjNzYyYzk4NTMxZDI5NDA3NTE3ZTJlN2E3MzQ0
ZWZkMzgzZmYuLmI2Nzk0NDNlNWIzOTNkNzM3MDQwNjNmMjU1ZjEzYjU1YWJlY2M3NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTA0Nyw3ICsx
MDQ3LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE9wdGlt
aXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKHJlc3VsdCA9PSBPcHRp
bWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBv
cHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAg
ICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJO
X0FERFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOworICAgICAgICBpZiAoY29kZUJs
b2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
dGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FE
RFJFU1MpLCBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOwogICAgIH0KICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3Jp
cHQsIHZhbHVlLCBieVZhbEluZm8sIGVjbWFNb2RlKSk7CiB9CkBAIC0xMTM5LDcgKzExNDIsMTAg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlv
blJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXpl
LgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGN0aVBh
dGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVT
UyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CisgICAgICAgIGlmIChjb2RlQmxv
Y2stPnVzZURhdGFJQygpKQorICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24g
PSBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWM7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRV
Uk5fQUREUkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3Qs
IG9iamVjdCwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwpAQCAtMTMy
Myw3ICsxMzI5LDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYgKG9wdGltaXph
dGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBE
b24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1Bh
dGggPSB0cnVlOwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVy
aWMpOworICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
UmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWMpOwogICAgIH0KIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTI2MTIsNyAr
MjYyMSwxMSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzSW5kZXhlZFBy
b3BlcnR5RGVmYXVsdCwgRW5jb2RlZEpTVmFsdWUsIChKUwogICAgICAgICBpZiAoKytieVZhbElu
Zm8tPnNsb3dQYXRoQ291bnQgPj0gMTAKICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJl
KHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRv
IG9wdGltaXplLgotICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVy
bkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3Bl
cnR5R2VuZXJpYyk7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkK
KyAgICAgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhh
c0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVS
Tl9BRERSRVNTKSwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYyk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKaW5kZXggYTg3YmIzMmNjZmU3Y2U3ZmJlMjU1NjRkYjExYmQ3MTRlZDljMmUxNC4u
MjVkMmU5ZDM3N2JlYTlmNGNlODBiMjEwYTJkNzM1MzYwZmI1MDcwMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTY5LDEyICs2OSwx
NSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVl
UmVncyhyZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZXN1bHRSZWdzLCByZWdUMik7CiAg
ICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBn
ZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwotICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCisgICAgICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgICAgICBtX2dldEJ5VmFscy5h
cHBlbmQoZ2VuKTsKIAogICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSwgcmVzdWx0UmVncyk7CkBAIC05Myw4ICs5Niw4IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTCiAKICAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZh
bEluZGV4XTsKLSAgICAgICAgKyttX2dldEJ5VmFsSW5kZXg7CisgICAgICAgIEpJVEdldEJ5VmFs
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKICAgICAg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCkBAIC0xMTgsNyArMTIxLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihwcm9maWxlKSwgcHJvZmlsZUdQUik7CiAgICAgICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CisgICAgICAg
IENhbGwgY2FsbDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2Fs
bCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CiAgICAgICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSht
ZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTM4LDcgKzE0NSw4IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0
KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSNDsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xNTcsOSArMTY1LDEw
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dl
dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBh
IHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAg
Ly8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7
CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAg
ICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTgyLDEwICsxOTEsMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVn
cyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpT
VmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgcmVzdWx0UmVncyk7CisgICAgICAgIG1fY29kZUJsb2Nr
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAor
ICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MsIHJlZ1Qy
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fZ2V0QnlWYWxzLmFwcGVuZChn
ZW4pOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtMjAxLDggKzIxMyw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlCiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUR2V0QnlW
YWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgKytt
X2dldEJ5VmFsSW5kZXg7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlW
YWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKIAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTIyNiw3ICsyMzcsMTEgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJ
bmZvKCkpLCBzdHViSW5mb0dQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemU7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjQ1LDcgKzI2
MCw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CkBAIC0yNjMsOSArMjc5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBt
YWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBp
bnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAg
ICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwpAQCAt
Mjg1LDEwICszMDIsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZUdQUiwgYmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFBy
aXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAg
ICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MoYnJhbmRHUFIpKTsKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0
UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFuZEdQUiksIHJlZ1Qy
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CiAKICAgICAvLyBXZSBzaG91bGQgZW1pdCB3cml0ZS1iYXJyaWVyIGF0
IHRoZSBlbmQgb2Ygc2VxdWVuY2Ugc2luY2Ugd3JpdGUtYmFycmllciBjbG9iYmVycyByZWdpc3Rl
cnMuCkBAIC0zMDIsOCArMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnkKIHsKICAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5k
ZXhdOwotICAgICsrbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleDsKKyAgICBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleCsrXTsKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
IAogI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTMyOCw5ICszNDcsMTQgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnkKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5j
dGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpB
cmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNh
bGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25TZXRQcml2
YXRlQnJhbmRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogI2VuZGlmCisKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIGNhbGwpOwogfQogCkBAIC0zNDYsMTAgKzM3MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAogICAgIEpJ
VFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBBY2Nlc3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wcml2
YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIApAQCAtMzU3LDggKzM4NCw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAgICArK21fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXg7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBt
X3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCkBAIC0zODMsNyArNDA5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRy
YWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50
VHlwZXM+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkNoZWNr
UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7Cisg
ICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC00MTUsOCArNDQ1LDE0IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogICAgIFBh
dGNoYWJsZUp1bXAgbm90SW5kZXg7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc0ludGVnZXJDb25z
dGFudCkgewotICAgICAgICBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQocmVn
VDEpOwotICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBhdXRvIGlz
SW50MzIgPSBicmFuY2hJZkludDMyKHJlZ1QxKTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1
dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRp
bmVQdHJUYWcpOworICAgICAgICAgICAgaXNJbnQzMi5saW5rKHRoaXMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KHJl
Z1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKKyAgICAgICAgfQogICAg
ICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgICAgICB6ZXJvRXh0ZW5k
MzJUb1dvcmQocmVnVDEsIHJlZ1QxKTsKICAgICB9CkBAIC00MzIsMjMgKzQ2OCwyNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJvZmlsZSk7
CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nh
c2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dDYXNlcyA9
IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNl
cyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xv
d0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAg
IHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7
CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQ1JBU0goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dDYXNl
KGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xv
d0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAgLTQ1Nyw3ICs0OTQs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKK0pJVDo6SnVtcExp
c3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEluZGV4aW5nVHlwZSBpbmRl
eGluZ1NoYXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7
CkBAIC00NjUsNyArNTAyLDE2IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiAgICAgCiAgICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKGluZGV4aW5nU2hhcGUpKTsKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgICAgICAgICBmYXJK
dW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIs
IFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CisKICAgICAKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1w
IG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdU
MiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MTUsNyArNTYxLDcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1K
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKQEAgLTUyMyw3ICs1NjksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3Jh
Z2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICAKICAg
ICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAg
ICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJh
bmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKKyAg
ICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1
bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RU
eXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBh
dGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFn
ZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworCiAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBy
ZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1Qx
LCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwog
CkBAIC01NjgsOCArNjIzLDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZh
bFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwogCiAgICAgSklUUHV0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5h
bWUsCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdU
MywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhv
dXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVu
Y29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNl
IGNvZGUgc2l6ZS4KQEAgLTU4MCw3ICs2MzUsMTMgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6
OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAog
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogICAgIGdlbi5zbG93UGF0aEp1bXAo
KS5saW5rKHRoaXMpOwogCi0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1Bh
dGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwor
ICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2Vu
LnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHVi
SW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVj
bHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBy
ZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwg
cmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwog
CkBAIC02MzgsOCArNjk5LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIGF1dG8qIG9wZXJhdGlv
biA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlv
blB1dEJ5VmFsT3B0aW1pemU7Ci0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBpc0RpcmVj
dCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9w
dGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwoaXNEaXJlY3QgPyBv
cGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6
ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIApAQCAtNjU3LDcgKzcyMSw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5l
cmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAot
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwog
CiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC02NzUsOSArNzQwLDEwIEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5
R1BSLCB2YWx1ZVBSLCBieVZhbEluZm9HUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlz
IGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAg
ICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQo
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAg
aml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOwpAQCAtNjk2LDggKzc2MiwxMyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwog
Ci0gICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKLSAgICBh
ZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7CisgICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcDsK
KyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAg
ICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJn
ZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgZWxzZSB7CisgICAgICAgIGZhc3RQYXRo
Sm1wID0gcGF0Y2hhYmxlSnVtcCgpOworICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7
CisgICAgfQogICAgIAogICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwogICAgIApAQCAtNzQzLDcg
KzgxNCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZQogICAgIG1vdmUoVHJ1c3RlZEltbTMy
KHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6
ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTc2MSw3ICs4MzYsOCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklU
IGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtNzc5LDkgKzg1
NSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BSLCBwdXRLaW5kR1BS
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENv
bnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3Bl
cmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxs
IGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQs
IEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsK
QEAgLTg0NiwxMSArOTIzLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwg
YmFzZSk7CiAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QyKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1QzLCByZWdU
Mik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2RlbEJ5SWRzLmFwcGVuZChn
ZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKQEAgLTg5
OCwxNSArOTc4LDE4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVk
SW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwg
PSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxs
OworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAg
ICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAg
IHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKLQogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1Qw
KSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7
CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAog
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtOTE4LDcgKzEwMDEsOCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklU
IGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtOTM1LDkgKzEw
MTksMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2lu
ZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3Rl
YWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGpp
dC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAg
ZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTk1NiwxMCArMTA0
MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgcHJvcGVydHkp
OwogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QyKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMywg
cmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9kZWxCeVZhbHMuYXBw
ZW5kKGdlbik7CiAKICAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyhyZWdUMCkpOwpA
QCAtMTAwOCwxNSArMTA5NiwxOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAg
Q2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7CiAjZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1
ZVJlZ3MocmVnVDApKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJl
Z3MocmVnVDApKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNh
bGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMDI4LDcgKzExMTks
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpA
QCAtMTA0NSw5ICsxMTM3LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVH
UFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTog
Q29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBv
cGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNh
bGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BS
MSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsK
QEAgLTEwNjgsOCArMTE2MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBn
ZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZCk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlk
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTExMCw3
ICsxMjAzLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvCiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsK
KyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblRyeUdldEJ5SWRP
cHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTEzMyw4ICsx
MjMwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBK
U1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBy
ZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxv
Y2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMTc2LDcgKzEy
NzMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4u
c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGlt
aXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJ
ZERpcmVjdE9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTIw
Nyw4ICsxMzA4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpT
VmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
c3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDAp
LCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTEyMzMsOCArMTMzNCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDApOwogCiAgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2dldEJ5SWRzV2l0aFRoaXMuYXBwZW5kKGdlbik7CkBAIC0xMjc1LDcgKzEzNzYsMTEgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJ
bmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICBl
bHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEyOTQsNyArMTM5OSw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBKSVQgaml0KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMjsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzEx
LDkgKzE0MTcsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0
YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8v
IG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAg
ICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwpAQCAtMTM1NCw3ICsxNDYxLDExIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKKyAgICBDYWxsIGNh
bGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgcmV0dXJuVmFs
dWVHUFIpOwpAQCAtMTM3Myw3ICsxNDg0LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAg
ICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIGpp
dC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKQEAgLTEzOTIsOSArMTUwNCwxMCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzX3ByZXBhcmVDYQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxs
IGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1
cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
cmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsIik7CkBAIC0xNDE4LDExICsxNTMxLDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZS
ZWcpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21h
TW9kZShieXRlY29kZSksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKICAgICAgICAgZGlyZWN0
ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKLSAgICAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTQ2NSw3ICsxNTc3LDExIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKKyAgICBlbHNl
CisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKQEAgLTE0ODEsNyArMTU5Nyw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0KHZtKTsKIAotICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCiAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xNTAwLDkgKzE2MTcsMTAgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG8KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
UHV0QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFs
dWVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxs
IGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1
cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQu
cmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9w
dXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTE1MjEsOCArMTYzOSw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKICAgICBK
SVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAq
aWRlbnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDEpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTE1NjQsNyArMTY4MiwxMSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsbwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRl
Y2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRP
cHRpbWl6ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0g
YXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmV0
dXJuVmFsdWVHUFIpOwpAQCAtMTU4OCwxMCArMTcxMCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCBwcm9maWxlKTsKIAogICAg
IEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgcmVnVDIpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAg
IGFkZFNsb3dDYXNlKCk7CiAgICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKQEAgLTE2MzQsNyArMTc1OSwxMSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbAogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9w
ZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1p
emUpPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5VmFsT3B0aW1p
emUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQ
Uik7CkBAIC0yODI0LDggKzI5NTMsOCBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1
dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAgICAgZW1p
dExvYWQodmFsdWUsIHJlZ1QzLCByZWdUMik7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVy
dHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BSUmVnLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNv
ZGUpLCBwdXRLaW5kKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9u
ZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC0yODM1LDcgKzI5NjQsMTMgQEAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0
S2luZCBwdXRLaW5kLAogICAgIC8vIEpJVFB1dEJ5SWRHZW5lcmF0b3Igb25seSBwcmVzZXJ2ZSB0
aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2UgaGF2ZSB0byByZWxvYWQgdGhlIHRh
Zy4KICAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7CiAKLSAgICBDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewor
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNs
b3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1l
LnJhd0JpdHMoKSk7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTI4ODcsMjkgKzMwMjIs
MjkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgQnlWYWxJbmZvKiBieVZhbEluZm8KIAogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7
CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSklURG91YmxlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEpJ
VENvbnRpZ3VvdXM6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwo
Ynl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgbmVlZHNMaW5rRm9y
V3JpdGVCYXJyaWVyID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0
b3JhZ2U6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRC
eVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAgICAgIG5lZWRzTGlua0Zvcldy
aXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IFR5cGVkQXJyYXlUeXBlIHR5cGUgPSB0eXBlZEFycmF5VHlwZUZvckpJVEFycmF5TW9kZShhcnJh
eU1vZGUpOwogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCi0gICAgICAgICAgICBzbG93Q2FzZXMg
PSBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAg
ICAgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIG51bGxwdHIsIHR5cGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBPcHRpbWl6ZSBCaWdJbnQ2NEFycmF5IC8gQmlnVWludDY0QXJyYXkgaW4gSUMKICAg
ICAgICAgICAgIC8vIEN1cnJlbnRseSwgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2NEFycmF5IG5l
dmVyIGNvbWVzIGhlcmUuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMTgzCiAgICAgICAgICAgICBBU1NFUlQoaXNGbG9hdCh0eXBlKSk7
Ci0gICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIHR5cGUpOworICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0
VHlwZWRBcnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yOTM2LDggKzMwNzEsMTQgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
QnlWYWxJbmZvKiBieVZhbEluZm8KICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZl
ciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3Zh
bF9kaXJlY3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIH0KLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29k
ZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBU
YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZv
LT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93
T3BlcmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBv
cGVyYXRpb25QdXRCeVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2Nh
dGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVy
bkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlv
blB1dEJ5VmFsR2VuZXJpYykpOworICAgIH0KIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBj
b25zdW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHAp
LAogLy8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4g
YWR2YW5jZS4KQEAgLTI5NzYsOCArMzExNywxMyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQQog
ICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBu
YW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFtZS51aWQo
KS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5B
ZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9IGdlbi5z
dHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKTsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25Q
dXRQcml2YXRlTmFtZUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxh
YmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRp
b25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5B
ZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7CisgICAgfQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KQEAgLTMwMTQsMTUgKzMxNjAsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFk
ZHJlc3MKICAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92YWwlcyB3aXRoIGNhY2hlZCBwcm9wZXJ0
eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIChwdXRLaW5kID09IFB1
dEtpbmQ6OkRpcmVjdCkgPyAiX2RpcmVjdCIgOiAiIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51dGY4
KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3Mu
dW50YWdnZWRWYWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZv
KCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRl
eEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8t
PnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAg
IGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7
CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gcHV0S2luZCA9PSBQdXRLaW5k
OjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRC
eVZhbEdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hKdW1wKGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJl
dHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRy
VGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2lu
ZCA9PSBQdXRLaW5kOjpEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBv
cGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBUaGlzIGZ1bmN0aW9uIGlz
IG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVuaXQgKEpJVE9wZXJhdGlv
bnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0ZWQgc3BlY2lhbGl6YXRp
b25zIGluIGFkdmFuY2UuCiB0ZW1wbGF0ZSB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZh
bFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsPihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQ
dXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIHRlbXBsYXRlIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkPE9wUHV0QnlWYWxEaXJlY3Q+KEJ5VmFsSW5mbyos
IFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCi1KSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbElu
Zm8pCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsK
QEAgLTMwMzgsNyArMzE4OSwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogCiAgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzOwogCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgaWYgKGJ5VmFsSW5m
bykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJhbmNoMzIoRXF1YWwsIGlu
ZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKyAgICAgICAgICAgIGZhckp1bXAo
QWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQpLCBKSVRTdHVi
Um91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0NvcnJlY3RUeXBlLmxpbmsodGhpcyk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcs
IFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOworCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZERvdWJsZShCYXNl
SW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVzRWlnaHQpLCBmcFJlZ1QwKTsKQEAgLTMwNDcs
NyArMzIwNyw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChjb25zdCBJbnN0
cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJuIHNsb3dDYXNlczsK
IH0KIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVj
dGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBleHBlY3RlZFNoYXBl
KQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlv
biosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJbmRleGlu
Z1R5cGUgZXhwZWN0ZWRTaGFwZSkKIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVy
SUQgYmFzZSA9IHJlZ1QwOwpAQCAtMzA2NSw3ICszMjI1LDE2IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBi
YWRUeXBlCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKLSAgICBiYWRUeXBlID0gcGF0Y2hh
YmxlQnJhbmNoMzIoTm90RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRTaGFw
ZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7
CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlw
ZSA9IGJyYW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUp
KTsKKyAgICAgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fYmFk
VHlwZUp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICBpc0Nv
cnJlY3RUeXBlLmxpbmsodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4
cGVjdGVkU2hhcGUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKGV4cGVjdGVkU2hhcGUpKTsK
KwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCBzY3JhdGNoKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cHJvcGVydHksIEFkZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSkpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5kZXgoc2NyYXRjaCwgcHJvcGVydHksIFRpbWVz
RWlnaHQpLCByZXN1bHQpOwpAQCAtMzA3NCw3ICszMjQzLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRDb250aWd1b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCi1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTMw
OTMsNyArMzI2MiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKIAogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigtQXJyYXlTdG9yYWdlU2hhcGUpLCBp
bmRleGluZywgc2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKEFib3Zl
LCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlT
dG9yYWdlU2hhcGUpKTsKKworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8g
aXNDb3JyZWN0VHlwZSA9IGJyYW5jaDMyKEJlbG93T3JFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZElt
bTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAg
ICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1w
VGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlw
ZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0
b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNs
b3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CiAKICAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7
CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBB
ZGRyZXNzKHNjcmF0Y2gsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBA
IC0zMTA1LDcgKzMyODMsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSB0
eXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBUeXBl
ZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZTsKQEAgLTMxMzAsNyArMzMwOCwxNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJh
c2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVk
SW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKKyAgICBpZiAoSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZv
KSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgZWFy
bHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7Cisg
ICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVK
dW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0
VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlw
ZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5cGUg
PSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVzcyhiYXNl
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNoMik7CiAg
ICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNjcmF0Y2gy
KTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsK
QEAgLTMxODEsNyArMzM2OSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5
cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwo
T3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBUeXBlZEFycmF5VHlwZSB0eXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKQEAgLTMyMDYsNyArMzM5NCwxNyBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVK
dW1wJiBiYWRUeQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKICAgICBsb2FkOChBZGRy
ZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwot
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBU
cnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKKyAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlW
YWxJbmZvKSB7CisgICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVh
bCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUp
KSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2Jh
ZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXND
b3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1t
MzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJh
ZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVk
SW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CisKICAgICBsb2FkMzIoQWRkcmVz
cyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIGxhdGVTY3JhdGNo
Mik7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgbGF0ZVNj
cmF0Y2gyKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9m
aWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCmluZGV4IDg1NTdkMmRlY2U1ZTU2OTRmNzgxODMwZTEyNjAyNmEzZTZjMmU2
MGQuLmZkZjkxYWQ5ZGVjMzQ5NDU5MzBhNjc4OWYyNmM2NWUwNDgyODc0YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApA
QCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdz
LnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CiAgICAgSklURGVsQnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IHJlZ1Q0KTsKKyAgICAgICAgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcsIHJl
Z1Q0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2RlbEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtMTY2
LDggKzE2Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSk7CiAKICAgICBKSVREZWxCeVZhbEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1
bHRSZWdzLCByZWdUNCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
YmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgcmVnVDQp
OwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CkBAIC0yNTcsOCArMjU3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAog
ICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksCi0gICAgICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldEJ5VmFs
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW50KHByb3BlcnR5KSkKICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlz
SW50MzIgPSB0cnVlOwogICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC0z
MDUsOCArMzA1LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVO
YW1lLAotICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGJh
c2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJ
VFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAg
ICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fZ2V0QnlWYWxzLmFwcGVuZChnZW4pOwpAQCAtMzkzLDggKzM5Myw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRh
Z0dQUigpKTsKIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFu
ZFJlZ3MpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKKyAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncywgSW52YWxpZEdQUlJlZyk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsK
QEAgLTQzMyw4ICs0MzMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIGJhc2VSZWdzLnRhZ0dQUigpKTsKIAogICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNj
ZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIGJyYW5kUmVncyk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0
ZUJyYW5kLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAg
IGJhc2VSZWdzLCBicmFuZFJlZ3MsIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CkBAIC00ODYsMTYgKzQ4NiwxNiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSklUQXJyYXlNb2RlIG1vZGUgPSBjaG9vc2VBcnJheU1vZGUocHJv
ZmlsZSk7CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBKSVRJbnQzMjoKLSAgICAgICAg
c2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAg
ICBzbG93Q2FzZXMgPSBlbWl0SW50MzJQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJ
bmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHNsb3dD
YXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSk7CisgICAgICAgIHNs
b3dDYXNlcyA9IGVtaXREb3VibGVQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlWYWxJbmZv
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93
Q2FzZXMgPSBlbWl0Q29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAg
ICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwg
YnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0g
ICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChieXRl
Y29kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQ1JBU0goKTsKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhp
bmdUeXBlIGluZGV4aW5nU2hhcGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTUyMCw2ICs1MjAsNyBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUs
IFBhdGNoYWJsZUp1bXAmIGJhZAogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAorICAg
IFVOVVNFRF9QQVJBTShieVZhbEluZm8pOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsKICAgICAK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHJlZ1QzKTsKQEAgLTU3Miw3ICs1NzMsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVy
aWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZAogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hh
YmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCiB7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC01ODEsNiArNTgyLDcgQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxl
SnVtcCYgYmFkVHlwZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKKyAgICBVTlVT
RURfUEFSQU0oYnlWYWxJbmZvKTsKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKICAgICAKICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJl
Z1QzKTsKQEAgLTY2MCw4ICs2NjIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6
VHJ5R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
Y29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1
bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzAxLDggKzcwMyw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
LSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcs
IEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJ
ZHMuYXBwZW5kKGdlbik7CkBAIC03NDgsOCArNzUwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKSVRH
ZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBy
ZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzkxLDggKzc5Myw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciBnZW4o
Ci0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMykp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywg
KmlkZW50KSwgcmVzdWx0UmVncywgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDQsIHJlZ1QzKSwgSW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAg
ICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChnZW4pOwpAQCAtODM1LDkgKzgzNyw5IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIG1fY29kZUJs
b2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BSUmVnLAogICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9m
bGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBQdXRLaW5kOjpEaXJlY3QgOiBQdXRLaW5kOjpOb3RE
aXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTg4Miw4
ICs4ODQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNl
LCByZWdUMSk7CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDAp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgIG1faW5CeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTkyMiw4ICs5MjQs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAs
IHJlZ1Q0LCBwcm9maWxlKTsKIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwg
SW52YWxpZEdQUlJlZyk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2Vu
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAppbmRleCA4ODE0
NjQwZTZhY2NlYWMxYjliMDY4YTQwYzg5NDI4MzQ4NmNkZmFiLi45ZDNkNzZiNDNiNDZhMjNhYjBk
Mzg2OGU5YWRkYjgzMTRlYzA5MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHViUm91dGluZS5oCkBAIC0zNSw2ICszNSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpJ
VFN0dWJSb3V0aW5lU2V0OwogY2xhc3MgVk07CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQordXNpbmcg
U3RydWN0dXJlSUQgPSB1aW50MzJfdDsKKyNlbHNlCit1c2luZyBTdHJ1Y3R1cmVJRCA9IFN0cnVj
dHVyZSo7CisjZW5kaWYKKworY2xhc3MgQWNjZXNzQ2FzZTsKKwogLy8gVGhpcyBpcyBhIGJhc2Ut
Y2xhc3MgZm9yIEpJVCBzdHViIHJvdXRpbmVzLCBhbmQgYWxzbyB0aGUgY2xhc3MgeW91IHdhbnQK
IC8vIHRvIGluc3RhbnRpYXRlIGRpcmVjdGx5IGlmIHlvdSBoYXZlIGEgcm91dGluZSB0aGF0IGRv
ZXMgbm90IG5lZWQgYW55CiAvLyBoZWxwIGZyb20gdGhlIEdDLiBJZiBpbiBkb3VidCwgdXNlIG9u
ZSBvZiB0aGUgb3RoZXIgc3R1YiByb3V0aW5lcy4gQnV0CkBAIC0xMDMsNiArMTExLDcgQEAgY2xh
c3MgSklUU3R1YlJvdXRpbmUgewogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBtX2NvZGU7CiAgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKKyAgICBtdXRh
YmxlIHVuc2lnbmVkIG1faGFzaCB7IDAgfTsKIH07CiAKIC8vIEhlbHBlciBmb3IgdGhlIGNyZWF0
aW9uIG9mIHNpbXBsZSBzdHViIHJvdXRpbmVzIHRoYXQgbmVlZCBubyBoZWxwIGZyb20gdGhlIEdD
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lLmNwcAppbmRleCAxZjc2MDY4NjI3M2RkYTgxY2JiNmQwMWNkMjFkZDA5ODlj
YzZlMmI4Li40MTE1YmEyNWNlZDE2MjNiM2EyODUxN2VjYjZkMmI4NTU5ODBmNjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1
ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQ29kZU9yaWdpbi5oIgpAQCAtNjcsNyArNjgsNyBA
QCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUo
CiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBDYWxsRnJhbWUqIGNhbGxlckZy
YW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywgY29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2Fs
bENhc2U+JiBjYXNlcywKICAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzKQot
ICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQorICAgIDogR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvZGVSZWYpCiAgICAgLCBtX3ZhcmlhbnRzKGNhc2VzLnNpemUoKSkKICAg
ICAsIG1fZmFzdENvdW50cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQogewpAQCAtODAsNiArODEsNyBA
QCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUo
CiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ1BvbHltb3JwaGljQ2FsbChjYWxs
ZXJGcmFtZSwgbV9jYWxsTm9kZXMuYWRkKCZpbmZvKSk7CiAgICAgfQogICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7CisgICAgbWFrZUdDQXdhcmUodm0pOwogfQogCiBQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZTo6flBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAwNzI5ZGU2MmY3NGEwN2FiNjI0YjU3MjIzOWIw
ODQxMDRjYmNiNGZlLi5iNWFhNzI3NWQzMTIyMGQxMGU3YzFmOWFkYTE1YTVmY2M3MTQ4ZTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTcxLDggKzcxLDExIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBy
ZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxs
PEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwpCitzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPiByZWFkUHV0SUNDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpCisg
ICAgICAgIHJldHVybiBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24ucmV0YWdnZWQ8Q0Z1bmN0aW9u
UHRyVGFnPigpOworICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRhZz4gY2FsbCA9
IHN0dWJJbmZvLm1fc2xvd1BhdGhDYWxsTG9jYXRpb247CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAg
ICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAg
ICBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJl
YWRDYWxsVGFyZ2V0PEpJVFRodW5rUHRyVGFnPihjYWxsKTsKQEAgLTEwNSw2ICsxMDgsMTUgQEAg
dm9pZCBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVM
b2NhdGlvbkNhbGw8SlNJbnRlcm5hbFAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwo
Y2FsbCwgbmV3Q2FsbGVlRnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0K
IAorc3RhdGljIHZvaWQgcmVwYXRjaFNsb3dQYXRoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IG5ld0NhbGxlZUZ1bmN0aW9uKQoreworICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKSB7
CisgICAgICAgIHN0dWJJbmZvLm1fc2xvd09wZXJhdGlvbiA9IG5ld0NhbGxlZUZ1bmN0aW9uLnJl
dGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5tX3Nsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBuZXdDYWxsZWVGdW5jdGlvbik7Cit9CisKIGVudW0gSW5saW5lQ2FjaGVBY3Rp
b24gewogICAgIEdpdmVVcE9uQ2FjaGUsCiAgICAgUmV0cnlDYWNoZUxhdGVyLApAQCAtMjA5LDcg
KzIyMSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgSlNDZWxsKiBiYXNlQ2Vs
bCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAgY29uc3QgYm9vbCBpc1ByaXZhdGUgPSBr
aW5kID09IEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUgfHwga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lQnlJZDsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2Fz
ZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgICAgIGlm
IChpc0pTQXJyYXkoYmFzZUNlbGwpKSB7CkBAIC0yMTksNyArMjMxLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGlu
ZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVBcnJheUxlbmd0aChzdHViSW5mbywganNDYXN0PEpT
QXJyYXkqPihiYXNlQ2VsbCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29k
ZUlubGluZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGlt
aXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLmluaXRBcnJheUxlbmd0aChsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjI3LDEwICsy
MzksMTEgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogCiAgICAgICAgICAgICAgICAgbmV3Q2Fz
ZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxl
bmd0aCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmluZyhi
YXNlQ2VsbCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY2FjaGVUeXBlKCkgPT0g
Q2FjaGVUeXBlOjpVbnNldCAmJiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3Ro
KHN0dWJJbmZvKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNoZVR5cGUoKSA9
PSBDYWNoZVR5cGU6OlVuc2V0CisgICAgICAgICAgICAgICAgICAgICYmIElubGluZUFjY2Vzczo6
aXNDYWNoZWFibGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pKSB7CiAgICAgICAgICAgICAgICAgICAg
IGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdM
ZW5ndGgoc3R1YkluZm8pOwogICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlu
bGluZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXpp
bmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZv
LmluaXRTdHJpbmdMZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI4MiwxMiArMjk1
LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgICAgICAmJiAhc2xvdC53
YXRjaHBvaW50U2V0KCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50KCkKICAgICAgICAgICAgICAgICAmJiAhbG9hZFRhcmdldEZyb21Q
cm94eSkgewotCiAgICAgICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5s
aW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUFjY2VzcyhzdHViSW5mbywgc3RydWN0dXJl
LCBzbG90LmNhY2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29k
ZUlubGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5U2Vs
ZlBhdGNoLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBw
cm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVwbGFj
ZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnRs
VGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9j
YXRpb24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgICAg
ICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFw
cHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwogICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mby5pbml0R2V0QnlJZFNlbGYobG9ja2VyLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICB9CkBAIC00MjUsNyAr
NDM3LDIwIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAgICAgICAgIExPR19JQygoSUNF
dmVudDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0p
LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpLCBzbG90LnNsb3RC
YXNlKCkgPT0gYmFzZVZhbHVlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVT
dHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAg
ICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsOgorICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6
OldpdGhUaGlzOgorICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKKyAgICAgICAgICAg
IGNhc2UgR2V0QnlLaW5kOjpEaXJlY3Q6CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWVCeUlkOgorICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CisgICAgICAgICAgICBj
YXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ss
IHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0
LmNvZGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTQzOSw3ICs0NjQsNyBAQCB2b2lkIHJlcGF0Y2hHZXRCeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBi
YQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAK
ICAgICBpZiAodHJ5Q2FjaGVHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVl
LCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvLCBraW5kKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAg
ICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdl
dEJ5RnVuY3Rpb24oa2luZCkpOwogfQogCiAKQEAgLTUyOSw3ICs1NTQsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpHZXRCeVJlcGxhY2VX
aXRoSnVtcCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSksIElkZW50aWZpZXIoKSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsK
LSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAg
ICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJ
bmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
NTQwLDcgKzU2NSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUFycmF5R2V0
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kCiB2b2lkIHJlcGF0Y2hBcnJh
eUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKIHsKICAgICBpZiAodHJ5Q2FjaGVBcnJheUdldEJ5VmFsKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlLCBpbmRleCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7
CiB9CiAKIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25z
dCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpbmQgcHV0S2luZCkgLT4gZGVjbHR5cGUoJm9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3QpCkBAIC02MzYsNyArNjYxLDcgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sKICAgICAgICAgaWYgKGlzUHJveHkgJiYgKHB1dEtpbmQgPT0gUHV0S2lu
ZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0IHx8IHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0UHJp
dmF0ZUZpZWxkRGVmaW5lKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCi0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQ
dHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsKIAogICAgICAgICBpZiAoc2xvdC5iYXNlKCkgPT0gYmFz
ZVZhbHVlICYmIHNsb3QuaXNDYWNoZWFibGVQdXQoKSkgewogICAgICAgICAgICAgaWYgKHNsb3Qu
dHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6RXhpc3RpbmdQcm9wZXJ0eSkgewpAQCAtNjU4LDcg
KzY4Myw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVy
dHlSZXBsYWNlKHN0dWJJbmZvLCBvbGRTdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlubGluZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpQdXRCeUlkU2VsZlBhdGNoLCBvbGRTdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0
QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6
aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9jaywgb2xkU3Ry
dWN0dXJlLCBzbG90LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtODAxLDcgKzgyNiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1
dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogCi0gICAgICAg
ICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAg
ICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04MTUsNyArODQwLDcgQEAgdm9pZCByZXBhdGNo
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSlNWYWx1ZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKICAgICAKICAgICBpZiAodHJ5Q2FjaGVQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywg
cHV0S2luZCkgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRl
R2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJ
ZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIERlbGV0ZVByb3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBiYXNlVmFsdWUs
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBEZWxCeUtpbmQsIEVDTUFNb2RlIGVjbWFN
b2RlKQpAQCAtODQ2LDcgKzg3MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jCiAgICAgICAg
IGlmIChvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgcmV0dXJuIFJl
dHJ5Q2FjaGVMYXRlcjsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3
Q2FzZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYg
KHNsb3QuaXNEZWxldGVIaXQoKSkgewogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zm
c2V0ID0gaW52YWxpZE9mZnNldDsKQEAgLTg3NCw3ICs4OTksNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvYwogICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoSnVtcCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8o
KSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgICAg
ICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04OTEsMTUg
KzkxNiwxNSBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRlUAogICAgIGlmICh0cnlDYWNoZURlbGV0
ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVy
ZSwgcHJvcGVydHlOYW1lLCBzdHViSW5mbywga2luZCwgZWNtYU1vZGUpID09IEdpdmVVcE9uQ2Fj
aGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpEZWxCeVJlcGxhY2VXaXRoR2VuZXJpYywg
YmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbChnbG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlmIChraW5kID09
IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0
ZUJ5SWRHZW5lcmljKTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2Nr
LCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKTsKKyAgICAg
ICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljKTsKICAgICB9CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluQnkoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSwKLSAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKKyAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2lu
ZCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCByZXN1bHQ7CkBAIC05MzcsNyArOTYyLDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlSW5CeSgKICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdGVkQ29kZUlu
bGluZSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluQnlJZFNlbGZQ
YXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3Bl
cnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xv
d1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRJbkJ5
SWRTZWxmKGxvY2tlciwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCks
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0
ZXI7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTg0LDcgKzEwMDksNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5KAogCiAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5B
ZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5zbG90QmFz
ZSgpID09IGJhc2UpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3
Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSgKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCB3YXNG
b3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDogQWNjZXNzQ2FzZTo6SW5NaXNzLCBwcm9wZXJ0eU5h
bWUsIHdhc0ZvdW5kID8gc2xvdC5jYWNoZWRPZmZzZXQoKSA6IGludmFsaWRPZmZzZXQsIHN0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAKICAg
ICAgICAgcmVzdWx0ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBFQ01BTW9kZTo6c3RyaWN0KCksIHByb3BlcnR5TmFtZSwgV1RGTW92ZShu
ZXdDYXNlKSk7CkBAIC05OTMsNyArMTAxOCwxNSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVJbkJ5KAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRo
SnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5j
b2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOworCisgICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgSW5C
eUtpbmQ6Ok5vcm1hbDoKKyAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBJbkJ5S2luZDo6Tm9ybWFsQnlWYWw6CisgICAgICAgICAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGlu
ZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDA3LDEyICsxMDQwLDEyIEBAIHZvaWQg
cmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTT2JqZWN0KiBiCiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmICh0
cnlDYWNoZUluQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHByb3BlcnR5
TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKSB7CisgICAg
aWYgKHRyeUNhY2hlSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJv
cGVydHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8sIGtpbmQpID09IEdpdmVVcE9uQ2Fj
aGUpIHsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoR2VuZXJpYywgYmFz
ZU9iamVjdC0+Y2xhc3NJbmZvKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKICAgICAgICAgaWYgKGtpbmQgPT0gSW5CeUtp
bmQ6Ok5vcm1hbCkKLSAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRHZW5lcmlj
KTsKKyAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
b3BlcmF0aW9uSW5CeUlkR2VuZXJpYyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBvcGVyYXRpb25JbkJ5VmFsR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoU2xvd1Bh
dGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlWYWxHZW5lcmljKTsKICAg
ICB9CiB9CiAKQEAgLTEwMzgsNyArMTA3MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICBib29sIGlzQmFzZVByb3BlcnR5ID0g
dHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZEFkZEFjY2Vz
c0Nhc2UsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0eSkpOwog
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJRCwgc3RydWN0
dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVh
dGVDaGVja1ByaXZhdGVCcmFuZCh2bSwgY29kZUJsb2NrLCBicmFuZElELCBzdHJ1Y3R1cmUpOwog
CiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5l
d0Nhc2UpKTsKIApAQCAtMTA0Niw3ICsxMDc5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCiAgICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkNoZWNrUHJpdmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LCBpZGVudCwgaXNCYXNlUHJvcGVydHkpKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1
bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJ
bkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTEwNjAsNyArMTA5Myw3IEBAIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0
ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2Nr
CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogCiAgICAg
aWYgKHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBm
dGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxM
b2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25DaGVja1ByaXZh
dGVCcmFuZEdlbmVyaWMpOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVT
ZXRQcml2YXRlQnJhbmQoCkBAIC0xMDk3LDcgKzExMzAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoCiAgICAgICAgIGJvb2wgaXNCYXNlUHJvcGVy
dHkgPSB0cnVlOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlNldFByaXZhdGVCcmFuZEFkZEFj
Y2Vzc0Nhc2UsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0
eSkpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9s
ZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKKyAgICAgICAgUmVmPEFjY2Vzc0Nhc2U+IG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVTZXRQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJh
bmRJRCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0
dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9ja2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNN
QU1vZGU6OnN0cmljdCgpLCBicmFuZElELCBXVEZNb3ZlKG5ld0Nhc2UpKTsKIApAQCAtMTEwNSw3
ICsxMTM4LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJy
YW5kKAogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQcml2YXRlQnJhbmRSZXBsYWNl
V2l0aEp1bXAsIG9sZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBpc0Jhc2VQcm9wZXJ0
eSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29k
ZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5m
bywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkp
KTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90
VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTExOSw3ICsxMTUyLDcgQEAgdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLAogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNo
ZVNldFByaXZhdGVCcmFuZChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xk
U3RydWN0dXJlLCAgYnJhbmRJRCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRHZW5lcmljKTsKKyAgICAgICAgcmVw
YXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25TZXRQcml2YXRl
QnJhbmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5z
dGFuY2VPZigKQEAgLTExMzksNyArMTE3Miw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluc3RhbmNlT2YoCiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIHZhbHVlID0gdmFs
dWVWYWx1ZS5hc0NlbGwoKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS0+
c3RydWN0dXJlKHZtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nh
c2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogICAgICAgICBKU09iamVj
dCogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBwcm90b3R5cGVWYWx1
ZSk7CiAgICAgICAgIGlmIChwcm90b3R5cGUpIHsKICAgICAgICAgICAgIGlmICghanNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHZtLCB2YWx1ZSkpIHsKQEAgLTExNzMsMTAgKzEyMDYsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpJbnN0YW5jZU9mUmVwbGFjZVdpdGhKdW1wLCBzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLCBJZGVudGlmaWVyKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0KLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoSnVtcCgKLSAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaGFibGVKdW1wKCksCi0g
ICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJl
c3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVt
cEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICAKQEAgLTExOTEsNyArMTIyMSw3IEBAIHZvaWQgcmVwYXRjaEluc3Rh
bmNlT2YoCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwogICAgIGlmICh0cnlDYWNoZUluc3RhbmNlT2YoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHZh
bHVlVmFsdWUsIHByb3RvdHlwZVZhbHVlLCBzdHViSW5mbywgd2FzRm91bmQpID09IEdpdmVVcE9u
Q2FjaGUpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyk7Cisg
ICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9u
SW5zdGFuY2VPZkdlbmVyaWMpOwogfQogCiBzdGF0aWMgdm9pZCBsaW5rU2xvd1BhdGhUbyhWTSYs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1
YlJvdXRpbmVQdHJUYWc+IGNvZGVSZWYpCkBAIC0xMjA4LDcgKzEyMzgsNyBAQCBzdGF0aWMgdm9p
ZCBsaW5rU2xvd0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5r
ID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgIGxpbmtTbG93UGF0aFRv
KHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVuayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNs
b3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsK
KyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVh
dGUodm0sIHZpcnR1YWxUaHVuaykpOwogfQogCiBzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93
bmVyKEpTQ2VsbCogY2FsbGVlKQpAQCAtMTMyNiw3ICsxMzU2LDcgQEAgc3RhdGljIHZvaWQgbGlu
a1ZpcnR1YWxGb3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0kKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRh
Zz4gdmlydHVhbFRodW5rID0gdmlydHVhbFRodW5rRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAg
IHJldmVydENhbGwodm0sIGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rKTsKLSAgICBjYWxsTGlu
a0luZm8uc2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRo
dW5rLCB2bSkpOworICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJv
dXRpbmU6OmNyZWF0ZSh2bSwgdmlydHVhbFRodW5rKSk7CiAgICAgY2FsbExpbmtJbmZvLnNldENs
ZWFyZWRCeVZpcnR1YWwoKTsKIH0KIApAQCAtMTY0NywxNCArMTY3NywyNiBAQCB2b2lkIGxpbmtQ
b2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENhbAogCiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0QnlLaW5kIGtpbmQpCiB7Ci0gICAgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRp
b24sIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOwotICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFy
dExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oa2luZCkpOworICAgIHN3aXRjaCAo
a2luZCkgeworICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAgY2FzZSBHZXRCeUtpbmQ6
OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlLaW5kOjpUcnk6CisgICAgY2FzZSBHZXRCeUtpbmQ6
OkRpcmVjdDoKKyAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWVCeUlkOgorICAgICAgICBJ
bmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8p
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CisgICAg
Y2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0
U3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5m
byk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICB1c2lu
ZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplKTsKLSAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIEZ1
bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlv
blR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2NrLCBzdHViSW5mbykuZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CiAgICAgRnVuY3Rpb25UeXBlIG9wdGltaXplZEZ1bmN0aW9uOwogICAgIGlm
ICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwgdW5vcHRp
bWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpCiAgICAgICAg
IG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpAQCAt
MTY3MSw0OCArMTcxMyw0OSBAQCB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlv
biA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAKLSAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wdGltaXplZEZ1bmN0
aW9uKTsKKyAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9j
aywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7CiAgICAgaWYg
KGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemUpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxzZQotICAg
ICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0
aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Ci0gICAgSW5saW5l
QWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0
TG9jYXRpb24pOwotfQotCi1zdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQotewotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChz
dHViSW5mby5wYXRjaGFibGVKdW1wKCksIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7
CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQog
CiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IEluQnlLaW5kOjpO
b3JtYWwpCi0gICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAg
ZWxzZQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKLSAgICBJ
bmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRo
U3RhcnRMb2NhdGlvbik7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBJbkJ5S2luZDo6
Tm9ybWFsOgorICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8s
IG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0
dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJbkJ5S2luZDo6Tm9ybWFsQnlWYWw6CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKKyAgICAg
ICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNj
ZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKLXZv
aWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVz
ZXRJbnN0YW5jZU9mKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7Ci0gICAgcmVzZXRQYXRjaGFibGVKdW1wKHN0dWJJbmZvKTsKKyAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRp
bWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5n
SW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0Q2hlY2tQ
cml2YXRlQnJhbmQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAg
SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNz
KGNvZGVCbG9jaywgc3R1YkluZm8pOwogfQogCiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CisgICAgSW5saW5lQWNjZXNzOjpyZXNl
dFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1Yklu
Zm8pOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganNUb1dhc21J
Q0NvZGVQdHIoVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBj
YWxsZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IDkyOGM5OWIxMjkxOWEx
YTAxYTM0MmE2NWY3ODVjNGU0NmEwZTFmZjcuLjU5YTE1YjkwZWM5NDFiMDFmZjg2MTU3NThjYjcx
ZDc1ZjJlZWUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC03MCw3ICs3
MCw3IEBAIHZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdl
dEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVs
QnlLaW5kKTsKIHZvaWQgcmVzZXRJbkJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwg
SW5CeUtpbmQpOwotdm9pZCByZXNldEluc3RhbmNlT2YoU3RydWN0dXJlU3R1YkluZm8mKTsKK3Zv
aWQgcmVzZXRJbnN0YW5jZU9mKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsK
IHZvaWQgcmVzZXRTZXRQcml2YXRlQnJhbmQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlv
bkNhbGw8SlNJbnRlcm5hbFB0clRhZz4sIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gbmV3
Q2FsbGVlRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAppbmRleCA0MTYzMjQ4MTkyNWM0NTVjMDdmZTZiYjMyZjMxMzY5YTc0YTk0YTkyLi45ZDIzYzI2
MTJhMTNlZTk5MGQ3MzFhMDI0YjUzMDdiMDZiMzdhZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtNDMzLDYgKzQzMywxMSBAQCB2b2lkIE9wdGlvbnM6
OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogICAgIE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRH
QygpID0gZmFsc2U7CiAjZW5kaWYKIAorICAgIGlmICghaXNBUk02NCgpKQorICAgICAgICBPcHRp
b25zOjp1c2VEYXRhSUMoKSA9IGZhbHNlOworICAgIGlmICghT3B0aW9uczo6dXNlRGF0YUlDKCkp
CisgICAgICAgIE9wdGlvbnM6OnVzZURhdGFJQ0luT3B0aW1pemluZ0pJVCgpID0gZmFsc2U7CisK
ICAgICAvLyBBdCBpbml0aWFsaXphdGlvbiB0aW1lLCB3ZSBtYXkgZGVjaWRlIHRoYXQgdXNlSklU
IHNob3VsZCBiZSBmYWxzZSBmb3IgYW55CiAgICAgLy8gbnVtYmVyIG9mIHJlYXNvbnMgKGluY2x1
ZGluZyBmYWlsaW5nIHRvIGFsbG9jYXRlIEpJVCBtZW1vcnkpLCBhbmQgdGhlcmVmb3JlLAogICAg
IC8vIHdpbGwgLyBzaG91bGQgbm90IGJlIGFibGUgdG8gZW5hYmxlIGFueSBKSVQgcmVsYXRlZCBz
ZXJ2aWNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmlu
ZGV4IGM5ZGU2YThhMzhjMTFiNjkzNzYxOWMxZTU5NGFkMTQ1MWIzZjFhOTkuLjQwOGZiYjY5Y2Ni
MDlhMTEzZDEyMjNjYzI0NTVlZDY2ZDNhNWI5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM4LDYgKzUzOCw4IEBAIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZm
ZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVzZVRvcExldmVsQXdh
aXQsIHRydWUsIE5vcm1hbCwgImFsbG93IHRoZSBhd2FpdCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2
ZWwgb2YgYSBtb2R1bGUuIikgXAogICAgIHYoQm9vbCwgdmVyYm9zZUV4ZWN1dGFibGVQb29sQWxs
b2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlRGF0YUlD
LCBpc0FSTTY0KCksIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlRGF0YUlDSW5P
cHRpbWl6aW5nSklULCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAKIAogZW51bSBPcHRpb25F
cXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJRFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmgKaW5kZXggOGQwN2EyNzU3ODMzNDBiZWE0ZTEwZGRhNDkxNjNkMTNiNDk4M2Yx
Mi4uYjhkZDRjYmQ1ZDI4MTAxNTdmOWE5OWJkOWNiMGYwNTUxYTM2ZDljNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaApAQCAtMzYsNyAr
MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cnVjdHVyZTsKIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi10eXBlZGVmIHVpbnQzMl90IFN0cnVjdHVyZUlEOwordXNpbmcgU3RydWN0dXJlSUQg
PSB1aW50MzJfdDsKIAogaW5saW5lIFN0cnVjdHVyZUlEIG51a2VkU3RydWN0dXJlSURCaXQoKQog
ewpAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgU3RydWN0dXJlSUQgZGVjb250YW1pbmF0ZShTdHJ1
Y3R1cmVJRCBpZCkKICAgICByZXR1cm4gaWQgJiB+bnVrZWRTdHJ1Y3R1cmVJREJpdCgpOwogfQog
I2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIFN0cnVjdHVyZSogU3RydWN0dXJl
SUQ7Cit1c2luZyBTdHJ1Y3R1cmVJRCA9IFN0cnVjdHVyZSo7CiAKIGlubGluZSBTdHJ1Y3R1cmVJ
RCBudWtlZFN0cnVjdHVyZUlEQml0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAppbmRleCBiZWFjODZlYjBlYjhjZjUxMzhlZmJmZGMzODIzNDc0MmI4Y2JkZTExLi40YzFiZTQx
ODFmZDI3OTgzNDgwZmJiOTViNzNlNTQxNWM3ZjRjNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVk0uaCIKIAorI2luY2x1ZGUgIkFjY2Vzc0Nhc2UuaCIKICNpbmNsdWRlICJBZ2dyZWdh
dGVFcnJvci5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJCaWdJbnRPYmplY3Qu
aCIKQEAgLTU2Nyw2ICs1NjgsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUsIFdURjo6UnVuTG9vcCogcnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICNlbmRpZiAvLyBF
TkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVG
b3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGlu
ZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgbV9zaGFyZWRKSVRTdHVicyA9IG1ha2VV
bmlxdWU8U2hhcmVkSklUU3R1YlNldD4oKTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
IApAQCAtNjU1LDYgKzY1NywxMCBAQCBWTTo6flZNKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zY3JhdGNoQnVmZmVycy5zaXplKCk7ICsraSkKICAgICAgICAgVk1NYWxsb2M6OmZy
ZWUobV9zY3JhdGNoQnVmZmVyc1tpXSk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShKSVQpCisgICAg
bV9zaGFyZWRKSVRTdHVicyA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9pZCBWTTo6cHJpbWl0
aXZlR2lnYWNhZ2VEaXNhYmxlZENhbGxiYWNrKHZvaWQqIGFyZ3VtZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggZTllMDZhNzY1YWM2YmIwY2RhMjNiNGU1ZmE2ZjY3ZDBmMmE2
MWQ1NS4uNDIwZGVjMGI4ZmU1ODJiZTc2NWQyYmFjNjI1ODczN2Y0M2JmNmU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xNzUsNiArMTc1LDcgQEAgY2xhc3MgUmVnaXN0ZXJB
dE9mZnNldExpc3Q7CiBjbGFzcyBTYW1wbGluZ1Byb2ZpbGVyOwogI2VuZGlmCiBjbGFzcyBTaGFk
b3dDaGlja2VuOworY2xhc3MgU2hhcmVkSklUU3R1YlNldDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGFi
bGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyQ2FjaGU7CkBA
IC04NDYsMTEgKzg0NywxMyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogI2lmIEVOQUJMRShKSVQp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpJVFRodW5rcz4gaml0U3R1YnM7CiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRDVElTdHViKFRodW5rR2VuZXJhdG9yKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcmVkSklUU3R1YlNldD4gbV9zaGFyZWRKSVRTdHViczsK
IAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZUTDo6VGh1bmtzPiBmdGxUaHVua3M7CiAjZW5kaWYKKwogICAgIE5hdGl2ZUV4
ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24g
Y29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSog
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA1Y2YwNjBhMWYzOWMyNzc3MGNkMjRiYzE0NDhkNDY5ZDAwYjkxOTVhLi4xMGE5YTFhMmMwMmE3
ZWZkNzM1YTljNjVmNTU3NzFiYjg0MTY5Njg1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDYtMDggIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlD
IGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjYwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMjEtMDYtMDcgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0g
V2ViS2l0IHN1cHBvcnQgZm9yIExpdmUgVGV4dApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMK
aW5kZXggZTYxNDFiNWU3MjQ5YTBkMzNjMDMyMjU5MjNjZWUwMTcyZGE1ZjBkMy4uOWNjZGExODMy
MmM3NmMyZGQ5Yjc3YTkyM2NlMmQxYzkzYzg4ZTA3MSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzCkBAIC01NTIsNyArNTUyLDcgQEAgQkFTRV9PUFRJT05TID0gWyItLXVzZUZUTEpJVD1m
YWxzZSIsICItLXVzZUZ1bmN0aW9uRG90QXJndW1lbnRzPXRydWUiLCAiLS12YWxpZGEKIEVBR0VS
X09QVElPTlMgPSBbIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAiLCAiLS10aHJlc2hv
bGRGb3JKSVRTb29uPTEwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcD0yMCIs
ICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwPTIwIiwgIi0tdGhyZXNob2xk
Rm9yT3B0aW1pemVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1V
cD0yMCIsICItLXRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9sZEZv
ck9NR09wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZVNv
b249MjAiLCAiLS1tYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aD0xNTAwMDAiLCAiLS11
c2VFYWdlckNvZGVCbG9ja0pldHRpc29uVGltaW5nPXRydWUiLCAiLS1yZXBhdGNoQnVmZmVyaW5n
Q291bnRkb3duPTAiXQogIyBOT1RFOiBUZXN0cyByZWx5IG9uIHRoaXMgdXNpbmcgc2NyaWJibGVG
cmVlQ2VsbHMuCiBOT19DSklUX09QVElPTlMgPSBbIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIs
ICItLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwMCIsICItLXNjcmliYmxlRnJlZUNlbGxz
PXRydWUiXQotQjNPMV9PUFRJT05TID0gWyItLWRlZmF1bHRCM09wdExldmVsPTEiXQorQjNPMV9P
UFRJT05TID0gWyItLWRlZmF1bHRCM09wdExldmVsPTEiLCAiLS11c2VEYXRhSUNJbk9wdGltaXpp
bmdKSVQ9MSJdCiBCM08wX09QVElPTlMgPSBbIi0tbWF4REZHTm9kZXNJbkJhc2ljQmxvY2tGb3JQ
cmVjaXNlQW5hbHlzaXM9MTAwIiwgIi0tZGVmYXVsdEIzT3B0TGV2ZWw9MCJdCiBGVExfT1BUSU9O
UyA9IFsiLS11c2VGVExKSVQ9dHJ1ZSJdCiBGT1JDRV9MTElOVF9FWElUX09QVElPTlMgPSBbIi0t
Zm9yY2VPU1JFeGl0VG9MTEludD10cnVlIl0KQEAgLTE2MTksNyArMTYxOSw3IEBAIGRlZiBydW5O
b2lzeVRlc3ROb0NKSVQKIGVuZAogCiBkZWYgcnVuTm9pc3lUZXN0Tm9DSklUQjNPMQotICAgIHJ1
bk5vaXN5VGVzdCgiZnRsLW5vLWNqaXQiLCAiLS12YWxpZGF0ZUJ5dGVjb2RlPXRydWUiLCAiLS12
YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2U9dHJ1ZSIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09Q
VElPTlMgKyBCM08xX09QVElPTlMpKQorICAgIHJ1bk5vaXN5VGVzdCgiZnRsLW5vLWNqaXQtYjNv
MSIsICItLXZhbGlkYXRlQnl0ZWNvZGU9dHJ1ZSIsICItLXZhbGlkYXRlR3JhcGhBdEVhY2hQaGFz
ZT10cnVlIiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIEIzTzFfT1BUSU9OUykp
CiBlbmQKIAogZGVmIHJ1bk5vaXN5VGVzdEVhZ2VyTm9DSklUCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430934</attachid>
            <date>2021-06-08 19:06:03 -0700</date>
            <delta_ts>2021-06-09 04:40:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226072-20210608190603.patch</filename>
            <type>text/plain</type>
            <size>451905</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MzY2NDliOWYwZjdhNDg5ZGVlNmFhMjdkYWUyNmE4YWFkNTNiMDRiLi40NzI4ZGM4OWU0NzliNjg5
MWRhNDIwODQ5Mzc5ODM3NTNiZTNiYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MDEgQEAKKzIwMjEtMDYtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgRGF0YUlDIGZvciBBY2Nlc3NDYXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBhbmQgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIG5vbi1yZXBhdGNoaW5nIElDIGZvciBCYXNlbGluZSBKSVQgaW4gQVJNNjQuCisg
ICAgICAgIFRoaXMgZG9lcyBub3Qgd29yayBpbiBub24tQVJNNjQgYXJjaGl0ZWN0dXJlcyAoaW5j
bHVkaW5nIFg2NCkgZHVlIHRvIHRoZSB1c2Ugb2YgbGluay1yZWdpc3Rlci4KKworICAgICAgICAx
LiBXZSBhZGQgbm9uLXJlcGF0Y2hpbmcgSUMsIHdoaWNoIGlzIGVuYWJsZWQgb25seSBpbiBCYXNl
bGluZSBkdWUgdG8gcGVyZm9ybWFuY2UgcmVhc29uLiBXZSBhcmUgdXNpbmcgdGhlCisgICAgICAg
ICAgIGV4aXN0aW5nIElDIGluIERGRyBhbmQgRlRMLiBOb24tcmVwYXRjaGluZyBpbmNsdWRlcyBm
YXN0LXBhdGgsIGFuZCBzbG93LXBhdGgncyBvcGVyYXRpb24gZnVuY3Rpb24uCisgICAgICAgIDIu
IFdlIHN0aWxsIGtlZXAgSW5saW5lQWNjZXNzIGluIGFsbCB0aWVycy4gUmVtb3ZpbmcgdGhhdCBj
YXVzZXMgMC4zIH4gMS4wJSByZWdyZXNzaW9uIGluIFNwZWVkb21ldGVyMi4gVGhpcworICAgICAg
ICAgICBtZWFucyB0aGF0IHdlIHN0aWxsIG5lZWQgc29tZSByZXBhdGNoaW5nIHdoZW4gd2UgZmly
c3QgaW50cm9kdWNlIHN0dWJzLgorICAgICAgICAzLiBXZSBhZGQgYSBtZWNoYW5pc20gdG8gc2hh
cmUgZ2VuZXJhdGVkIGNvZGUgc3R1YnMgaW4gbm9uLXJlcGF0Y2hpbmcgSUMuIEN1cnJlbnRseSwg
Z2V0dGVyIC8gc2V0dGVyIC8gY3VzdG9tCisgICAgICAgICAgIGFjY2Vzc29ycyBhcmUgZXhjbHVk
ZWQgc2luY2UgdGhlaXIgY29kZSByZWxpZXMgb24gSlNHbG9iYWxPYmplY3QsIENvZGVCbG9jayBl
dGMuIHdoaWNoIGFyZSBub3QgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgQWNjZXNzQ2FzZSdzIGRh
dGEgc3RydWN0dXJlLgorICAgICAgICA0LiBUaGlzIHBhdGNoIHN0aWxsIHJlbGllcyBvbiB0aGF0
IENvZGVCbG9jayB3aWxsIGJlIGRlc3Ryb3llZCBzeW5jaHJvbm91c2x5IHNpbmNlIHdlIG5lZWQg
dG8gZW5zdXJlIHRoYXQgc2hhcmluZy1oYXNoLXRhYmxlCisgICAgICAgICAgIGRvZXMgbm90IGlu
Y2x1ZGUgYWxyZWFkeS1kZWFkIEpJVCBjb2RlIHN0dWJzLiBXZSBjYW4gZml4IGl0IChlLmcuIGFu
bm90YXRpbmcgZXBvY2ggdG8gdGhlc2Ugc3R1YnMsIGJ1bXAgdGhlbSBpbgorICAgICAgICAgICBm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSksIGJ1dCB3ZSBhdm9pZCBkb2luZyB0aGF0IHRvIHByZXZl
bnQgZnJvbSBmdXJ0aGVyIGVubGFyZ2luZyB0aGlzIHBhdGNoLiBUaGlzIHBhdGNoIGlzIGFscmVh
ZHkKKyAgICAgICAgICAgc2lnbmlmaWNhbnQgaW4gaXRzIHNpemUuCisgICAgICAgIDUuIEFkZGVk
IGNhbGxPcGVyYXRpb24oQWRkcmVzcykgc3VwcG9ydCBpbiBDQ2FsbEhlbHBlcnMsIHdoaWNoIGNh
biBzYXZlIHRoZSB0YXJnZXQgaW4gbm9uQXJnR1BSMCwgYW5kIGNhbGwgaXQgc28gdGhhdCB3ZSBj
YW4gdXNlCisgICAgICAgICAgIEFkZHJlc3MgaW5jbHVkaW5nIEdQUiB3aGljaCBpcyBhbHNvIHVz
ZWQgZm9yIGFyZ3VtZW50cy4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIGluIEpl
dFN0cmVhbTIgYW5kIFNwZWVkb21ldGVyMi4gQnV0IGl0IG9mZmVycyB0aGUgd2F5IHRvIHJlbW92
ZSBzb21lIGNvZGUgZ2VuZXJhdGlvbiBpbiBCYXNlbGluZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0RTo6Y2FsbCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNy
ZWF0ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZCk6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmNsb25lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwp
OgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjYW5CZVNoYXJlZCk6CisgICAgICAgICogYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpoYXNoIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6QWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6
OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleTo6S2V5KToKKyAgICAgICAgKEpTQzo6U2hhcmVk
SklUU3R1YlNldDo6SGFzaDo6S2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChKU0M6OlNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6Omhhc2gpOgorICAgICAgICAoSlND
OjpTaGFyZWRKSVRTdHViU2V0OjpIYXNoOjplcXVhbCk6CisgICAgICAgIChKU0M6OlNoYXJlZEpJ
VFN0dWJTZXQ6OlNlYXJjaGVyOjpUcmFuc2xhdG9yOjpoYXNoKToKKyAgICAgICAgKEpTQzo6U2hh
cmVkSklUU3R1YlNldDo6U2VhcmNoZXI6OlRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAgKEpT
Qzo6U2hhcmVkSklUU3R1YlNldDo6UG9pbnRlclRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAo
SlNDOjpTaGFyZWRKSVRTdHViU2V0OjpQb2ludGVyVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAg
ICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjphZGQpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRT
dHViU2V0OjpyZW1vdmUpOgorICAgICAgICAoSlNDOjpTaGFyZWRKSVRTdHViU2V0OjpmaW5kKToK
KyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8uaDoKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZv
OjpzZXRVcCk6CisgICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KToKKyAgICAgICAgKEpTQzo6QnlWYWxJbmZvOjpvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCk6
CisgICAgICAgIChKU0M6OkJ5VmFsSW5mbzo6b2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjppbml0aWFsaXplRGlyZWN0Q2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5m
bzo6c2V0RGlyZWN0Q2FsbFRhcmdldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlRGF0YUlDIGNvbnN0KToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlOjplbWl0RE9NSklUR2V0dGVyKToKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2V0U2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyk6CisgICAgICAg
IChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKToKKyAgICAgICAg
KEpTQzo6SW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyk6CisgICAgICAgIChK
U0M6OklubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFj
Y2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmg6CisgICAgICAgICogYnl0
ZWNvZGUvSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9m
QWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZkFjY2Vzc0Nhc2U6
OmNsb25lIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlOjpjbG9uZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0Lmg6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpoYXNo
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6b3BlcmF0
b3IhPSk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Omluc3RhbGxXYXRjaHBvaW50KToKKyAgICAg
ICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bFdpdGhvdXRFeGNlcHRpb25zKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UpOgorICAg
ICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRXZWFrIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmg6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6QWNjZXNzR2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlv
blN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRp
b25zKToKKyAgICAgICAgKiBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHJv
eHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb3h5
YWJsZUFjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd1BhdGhTdGFydExvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZv
OjpwYXRjaGFibGVKdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YXBwZW5kQ2FsbCk6CisgICAgICAg
ICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xvd1Bh
dGhJQ0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRGbHVzaCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVC
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTZXRQcml2
YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZkZvckNlbGxzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlJZEZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZFB1dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxTZXRSZXN1bHQpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVQcml2YXRlQnJhbmRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZURlbEJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogZnRsL0ZUTFNsb3dQYXRoQ2FsbC5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxs
Q29udGV4dCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6a2V5V2l0
aFRhcmdldCBjb25zdCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xvd1BhdGhDYWxsQ29udGV4dDo6
bWFrZUNhbGwpOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsS2V5
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93UGF0aENhbGxLZXk6OmR1bXAgY29uc3QpOgor
ICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGxLZXkuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpT
bG93UGF0aENhbGxLZXk6OlNsb3dQYXRoQ2FsbEtleSk6CisgICAgICAgIChKU0M6OkZUTDo6U2xv
d1BhdGhDYWxsS2V5OjppbmRpcmVjdE9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkZUTDo6
U2xvd1BhdGhDYWxsS2V5Ojp3aXRoQ2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OkZUTDo6U2xv
d1BhdGhDYWxsS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpTbG93
UGF0aENhbGxLZXk6Omhhc2ggY29uc3QpOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBq
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpl
bWl0VmlydHVhbENhbGwpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3Zlcik6CisgICAgICAgICogaml0L0ND
YWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246
OkFyZ0NvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rp
b246OnB1c2hSZWdBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rp
b246OnB1c2hFeHRyYVJlZ0FyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6cHVzaE5vbkFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJnQ29s
bGVjdGlvbjo6YWRkR1BSQXJnKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xs
ZWN0aW9uOjphZGRHUFJFeHRyYUFyZyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6QXJn
Q29sbGVjdGlvbjo6YWRkU3RhY2tBcmcpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFy
Z0NvbGxlY3Rpb246OmFkZFBva2UpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmNhbGN1
bGF0ZVBva2VPZmZzZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1
bWVudCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RhY2tBbGlnbmVkKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjptYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2Fs
bEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUp
OgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FS
R1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBB
cmd1bWVudHNFbnRyeUltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0Zvcklu
ZGlyZWN0Q2FsbCk6CisgICAgICAgICogaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHA6Cisg
ICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6R0NBd2FyZUpJVFN0dWJSb3V0aW5l
KToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjptYWtlR0NBd2FyZSk6Cisg
ICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCk6
CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OlBvbHltb3Jw
aGljQWNjZXNzSklUU3R1YlJvdXRpbmUpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KToKKyAgICAgICAgKEpTQzo6UG9s
eW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAoSlND
OjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKToKKyAgICAgICAgKEpTQzo6R0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhh
bmRsZXI6OkdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyKToKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlSUNKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmg6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZTo6Y2FzZXMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjp3ZWFrU3Ry
dWN0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJv
dXRpbmU6Omhhc2ggY29uc3QpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJ
VC5oOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICog
aml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRv
cl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAg
ICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OnVzZURhdGFJQyk6
CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNhY2hlR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAg
KEpTQzo6SklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUQnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0Q29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVy
YXRvcjo6SklUR2V0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpKSVREZWxCeVZhbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVERlbEJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklURGVsQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklU
RGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VERlbEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRE
ZWxCeUlkR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5l
cmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVy
YXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVElu
QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJ
VEluc3RhbmNlT2ZHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVy
YXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklU
R2V0QnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJhdG9yOjpm
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcjo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAgICogaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRHZW5l
cmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OkpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5l
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVREZWxCeVZhbEdl
bmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklU
RGVsQnlJZEdlbmVyYXRvcjo6SklURGVsQnlJZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFu
Y2VPZkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdldEJ5VmFsR2VuZXJh
dG9yOjpKSVRHZXRCeVZhbEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVEdl
dEJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OkpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkRm9yQXJyYXlNb2RlKToK
KyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKToKKyAgICAg
ICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3Vs
dCk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHRXaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVIYXNJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFz
X2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaGFzX2VudW1lcmFibGVfaW5kZXhlZF9wcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3Bl
cnR5KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9w
cml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZh
dGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dl
dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfd2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdERvdWJsZUxvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRDb250aWd1b3VzTG9h
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV92YWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
cHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NldF9wcml2YXRlX2Jy
YW5kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3Qp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJ
VFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
LmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAg
IChKU0M6OnJlYWRQdXRJQ0NhbGxUYXJnZXQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoU2xvd1Bh
dGhDYWxsKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hHZXRCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQXJyYXlHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OnJlcGF0Y2hBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQ
dXRCeUlEKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaFB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaERlbGV0ZUJ5KToKKyAgICAg
ICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5KToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnkpOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVw
YXRjaENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVTZXRQcml2YXRl
QnJhbmQpOgorICAgICAgICAoSlNDOjpyZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6cmVwYXRjaEluc3RhbmNl
T2YpOgorICAgICAgICAoSlNDOjpsaW5rU2xvd0Zvcik6CisgICAgICAgIChKU0M6OmxpbmtWaXJ0
dWFsRm9yKToKKyAgICAgICAgKEpTQzo6cmVzZXRHZXRCeSk6CisgICAgICAgIChKU0M6OnJlc2V0
UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNl
dEluQnkpOgorICAgICAgICAoSlNDOjpyZXNldEluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpy
ZXNldENoZWNrUHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6cmVzZXRTZXRQcml2YXRlQnJh
bmQpOgorICAgICAgICAoSlNDOjpyZXNldFBhdGNoYWJsZUp1bXApOiBEZWxldGVkLgorICAgICAg
ICAqIGppdC9SZXBhdGNoLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjEt
MDYtMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc4MzcxIGFuZCByMjc4NDYzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCmlu
ZGV4IDYwODQ2NmQzMzYyMDgxNDcwNzUxYjg2ZGY4N2UwMjk1MzFmNDE2ZWEuLmQ2ZjNiN2FiOTcx
ODJlZTBkY2NiZTdkOTY4YzYwZDQwZWQ5OGQ2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTIyNSwxOSAr
MjI1LDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1i
bGVyQVJNNjQgewogICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBl
OjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lO
TElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CiAg
ICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklUQ2FnZSgpIHx8IGNhbGxlclR5cGUodGFnKSA9
PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIGNh
bGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICAgICAgY2FsbChkYXRhVGVtcFJlZ2lzdGVy
LCB0YWcpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGwoQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YWcgIT0g
ZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICByZXR1cm4gY2FsbChkYXRh
VGVtcFJlZ2lzdGVyLCB0YWcpOworICAgICAgICBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhbGxPcGVyYXRpb24oY29uc3QgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMTJhOTdhMmQyNWQ1ZWJkMWU5OWE1
ZTVhYzI5YzIyODkzYmE4MzhmOS4uMTNhYjAxY2E3MGViMTRkOGU2NTZhZjI1OTg3MDMyZGY5ZGZk
MGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cApAQCAtNjgsNyArNjgsNyBAQCBBY2Nlc3NDYXNlOjpBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaQogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fY29uZGl0aW9uU2V0LmlzVmFsaWQoKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHBy
b3RvdHlwZUFjY2Vzc0NoYWluKQorUmVmPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4pCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgY2FzZSBJbkhpdDoKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3Jl
YXRlVHJhbnNpdGlvbigKK1JlZlB0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFu
c2l0aW9uKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwKICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYgY29uZGl0aW9uU2V0LCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJv
dG90eXBlQWNjZXNzQ2hhaW4pCiB7CkBAIC0xMjIsMzQgKzEyMiwzNCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbigKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9m
ZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNz
Q2hhaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IFRyYW5zaXRpb24sIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25T
ZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCitSZWY8QWNjZXNzQ2FzZT4g
QWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwog
ICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdT
dHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBB
Y2Nlc3NDYXNlOjpjcmVhdGVDaGVja1ByaXZhdGVCcmFuZChWTSYgdm0sIEpTQ2VsbCogb3duZXIs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitS
ZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4o
bmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwg
aW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBDaGVja1ByaXZhdGVCcmFuZCwgaWRlbnRpZmll
ciwgaW52YWxpZE9mZnNldCwgc3RydWN0dXJlLCB7IH0sIHsgfSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKAorUmVm
PEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCgKICAgICBWTSYg
dm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwg
b3duZXIsIFNldFByaXZhdGVCcmFuZCwgaWRlbnRpZmllciwgaW52YWxpZE9mZnNldCwgbmV3U3Ry
dWN0dXJlLCB7IH0sIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc0Nhc2Uo
dm0sIG93bmVyLCBTZXRQcml2YXRlQnJhbmQsIGlkZW50aWZpZXIsIGludmFsaWRPZmZzZXQsIG5l
d1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIAogQWNjZXNzQ2FzZTo6fkFjY2Vzc0Nhc2UoKQog
ewogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVj
dHVyZVN0dWJJbmZvKAorUmVmUHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1
cmVTdHViSW5mbygKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewogICAgIHN3aXRj
aCAoc3R1YkluZm8uY2FjaGVUeXBlKCkpIHsKQEAgLTE4OCw5ICsxODgsOSBAQCBKU09iamVjdCog
QWNjZXNzQ2FzZTo6YWx0ZXJuYXRlQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbmRpdGlvblNl
dCgpLnNsb3RCYXNlQ29uZGl0aW9uKCkub2JqZWN0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CitSZWY8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNl
PiByZXN1bHQobmV3IEFjY2Vzc0Nhc2UoKnRoaXMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgQWNjZXNzQ2FzZSgqdGhpcykpOwogICAgIHJlc3VsdC0+cmVzZXRTdGF0ZSgpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC04MDcsNiArODA3LDcgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlID09IENvbW1p
dHRlZCk7CiAgICAgbV9zdGF0ZSA9IEdlbmVyYXRlZDsKIAorICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBzdGF0ZS5tX2dsb2JhbE9iamVjdDsKICAgICBDQ2FsbEhlbHBlcnMmIGpp
dCA9ICpzdGF0ZS5qaXQ7CiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0YXRl
LnN0dWJJbmZvOwogICAgIFZNJiB2bSA9IHN0YXRlLm1fdm07CkBAIC04NTMsNyArODU0LDcgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdpdGhHdWFyZCgKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmUtPmhhc01vbm9Qcm90bygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKHN0YXRlLm1fZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb3RvdHlwZS5pc09iamVjdCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihhc09i
amVjdChwcm90b3R5cGUpKSwgYmFzZUZvckFjY2Vzc0dQUik7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CkBAIC05NjQsNiArOTY1LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZVdp
dGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1Yklu
Zm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJ
bmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0
ZVNjcmF0Y2hHUFIoKTsKQEAgLTEwNjEsNiArMTA2NCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2Vu
ZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLmJhc2VSZWdz
KCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3MpOwogICAgICAgICBhbGxvY2F0
b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAgICAgIGlmIChzdHViSW5mby5t
X3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRj
aEdQUik7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNj
cmF0Y2hHUFIoKTsKIApAQCAtMTE0NCw2ICsxMTQ5LDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5l
cmF0ZVdpdGhHdWFyZCgKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3Mo
KSk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHN0dWJJbmZvLnByb3BlcnR5UmVncygpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1f
c3R1YkluZm9HUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLm1fc3R1YkluZm9HUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNo
R1BSKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2Ny
YXRjaEdQUigpOwogCkBAIC0xMjA1LDYgKzEyMTIsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlV2l0aEd1YXJkKAogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygp
KTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKICAgICAgICAgYWxsb2NhdG9y
LmxvY2soc3R1YkluZm8ucHJvcGVydHlSZWdzKCkpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9z
dHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2so
c3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hH
UFIpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3Jh
dGNoR1BSKCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEzMTcsNiArMTMyNiw4IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQoCiAgICAgICAgIGFsbG9jYXRvci5sb2Nr
KHN0dWJJbmZvLmJhc2VSZWdzKCkpOwogICAgICAgICBhbGxvY2F0b3IubG9jayh2YWx1ZVJlZ3Mp
OwogICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5wcm9wZXJ0eVJlZ3MoKSk7CisgICAg
ICAgIGlmIChzdHViSW5mby5tX3N0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
ICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CkBAIC0xNDE3LDcgKzE0Mjgs
NyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbik7
CiAKICAgICAgICAgaWYgKGNvbmRpdGlvbi5pc1dhdGNoYWJsZUFzc3VtaW5nSW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50KFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQ6OkVuc3Vy
ZVdhdGNoYWJpbGl0eSkpIHsKLSAgICAgICAgICAgIHN0YXRlLmluc3RhbGxXYXRjaHBvaW50KGNv
bmRpdGlvbik7CisgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsV2F0Y2hwb2ludChjb2RlQmxvY2ss
IGNvbmRpdGlvbik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xNDM1
LDcgKzE0NDYsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlKQogCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBjb2RlIHRoYXQgaGFz
IGEgd2VhayByZWZlcmVuY2UgdGhhdCBpc24ndCBvdGhlcndpc2UgbGlzdGVkIGFueXdoZXJlLgog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbmRpdGlvbi5vYmplY3QoKS0+c3RydWN0
dXJlKHZtKTsKLSAgICAgICAgc3RhdGUud2Vha1JlZmVyZW5jZXMuYXBwZW5kKFdyaXRlQmFycmll
cjxKU0NlbGw+KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpOworICAgICAgICBzdGF0ZS53ZWFr
U3RydWN0dXJlcy5hcHBlbmQoc3RydWN0dXJlLT5pZCgpKTsKIAogICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29uZGl0aW9uLm9iamVjdCgpKSwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgIHN0YXRlLmZhaWxBbmRSZXBhdGNoLmFwcGVuZCgKQEAgLTE1ODIsNyArMTU5
MywxMiBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlKQogCiAgICAgICAgIC8vIFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2Fs
Y3VsYXRpb25zIG9mIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlv
biBoYW5kbGluZyBjYWxsIHNpdGUuCi0gICAgICAgIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3Bp
bGxTdGF0ZSBzcGlsbFN0YXRlID0gc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0Zv
ckNhbGwoKTsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwor
I2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpCisgICAg
ICAgICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7
CisjZW5kaWYKKyAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxs
U3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJl
Z2lzdGVyc1RvUHJlc2VydmUpOwogCiAgICAgICAgIGF1dG8gcmVzdG9yZUxpdmVSZWdpc3RlcnNG
cm9tU3RhY2tGb3JDYWxsID0gWyZdKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6U3BpbGxTdGF0ZSYg
c3BpbGxTdGF0ZSwgYm9vbCBjYWxsSGFzUmV0dXJuVmFsdWUpIHsKICAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IGRvbnRSZXN0b3JlOwpAQCAtMTcxMiw2ICsxNzI4LDcgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICNlbmRpZgogICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVj
dCksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgIGFjY2Vzcy5jYWxsTGlua0luZm8oKS0+
ZW1pdFNsb3dQYXRoKHZtLCBqaXQpOworCiAgICAgICAgICAgICBpZiAobV90eXBlID09IEdldHRl
cikKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7CiAgICAgICAg
ICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKQEAgLTE3MjMsOCArMTc0MCw4IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAKLSAgICAgICAgICAg
IGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoKGNvZGVCbG9jay0+c3RhY2tQ
b2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSAtIHN0YXRlLnByZXNlcnZlZFJldXNl
ZFJlZ2lzdGVyU3RhdGUubnVtYmVyT2ZCeXRlc1ByZXNlcnZlZCAtIHNwaWxsU3RhdGUubnVtYmVy
T2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uKSwKLSAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgICAgICBpbnQgc3RhY2tQb2ludGVyT2Zmc2V0ID0gKGNvZGVCbG9j
ay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSAtIHN0YXRlLnByZXNl
cnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUubnVtYmVyT2ZCeXRlc1ByZXNlcnZlZCAtIHNwaWxsU3Rh
dGUubnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uOworICAgICAg
ICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJP
ZmZzZXQpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICBib29sIGNhbGxIYXNSZXR1cm5WYWx1ZSA9IGlz
R2V0dGVyKCk7CiAgICAgICAgICAgICByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwoc3BpbGxTdGF0ZSwgY2FsbEhhc1JldHVyblZhbHVlKTsKIApAQCAtMTg0NSw3ICsxODYyLDE0
IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUpCiAgICAgICAgICAgICBza2lwQmFycmllci5hcHBlbmQoaml0LmJhcnJpZXJCcmFuY2go
dm0sIHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTUHJveHk6OnRhcmdldE9mZnNldCgpKSwg
c2NyYXRjaEdQUik7Ci0gICAgICAgICAgICBhdXRvIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2
ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCk7CisKKyAgICAg
ICAgICAgIFJlZ2lzdGVyU2V0IGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZTsKKyNpZiBDUFUoQVJN
NjQpCisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgICAg
ICAgICBleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUuc2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7Cisj
ZW5kaWYKKyAgICAgICAgICAgIGF1dG8gc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJl
Z2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlKTsKKwogICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZ2
bSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0
clRhZyk7CkBAIC0xODc1LDYgKzE4OTksOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IgYWxsb2NhdG9yKHN0dWJJbmZvLnVzZWRSZWdpc3RlcnMpOwogICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlUmVncygpKTsKICAgICAgICAgYWxsb2NhdG9yLmxvY2so
dmFsdWVSZWdzKTsKKyAgICAgICAgaWYgKHN0dWJJbmZvLm1fc3R1YkluZm9HUFIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLm1fc3R1YkluZm9H
UFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUjIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMTkzMyw2ICsxOTU5LDEwIEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwog
ICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAg
ICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOwor
I2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMo
KSkKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldChBUk02
NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlv
blN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKApAQCAtMjAzMSw2ICsyMDYxLDggQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSkKICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VH
UFIpOworICAgICAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CiAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlv
bktpbmQ6OlByb3BlcnR5RGVsZXRpb24pOwpAQCAtMjIwMyw2ICsyMjM1LDEwMyBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQog
fQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKK2Jvb2wgQWNjZXNzQ2FzZTo6Y2FuQmVTaGFy
ZWQoY29uc3QgQWNjZXNzQ2FzZSYgbGhzLCBjb25zdCBBY2Nlc3NDYXNlJiByaHMpCit7CisgICAg
Ly8gV2UgZG8gbm90IGNhcmUgbV9zdGF0ZS4KKyAgICAvLyBBbmQgd2Ugc2F5ICJmYWxzZSIgaWYg
ZWl0aGVyIG9mIHRoZW0gaGF2ZSBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLgorICAgIGlmIChsaHMu
bV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiB8fCByaHMubV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMuYWRkaXRpb25hbFNldCgpIHx8IHJocy5h
ZGRpdGlvbmFsU2V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChsaHMubV90
eXBlICE9IHJocy5tX3R5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobGhzLm1f
b2Zmc2V0ICE9IHJocy5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChs
aHMubV92aWFQcm94eSAhPSByaHMubV92aWFQcm94eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChsaHMubV9zdHJ1Y3R1cmUuZ2V0KCkgIT0gcmhzLm1fc3RydWN0dXJlLmdldCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGxocy5tX2lkZW50aWZpZXIgIT0gcmhzLm1f
aWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChsaHMubV9jb25kaXRp
b25TZXQgIT0gcmhzLm1fY29uZGl0aW9uU2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBzd2l0Y2ggKGxocy5tX3R5cGUpIHsKKyAgICBjYXNlIExvYWQ6CisgICAgY2FzZSBUcmFuc2l0
aW9uOgorICAgIGNhc2UgRGVsZXRlOgorICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgor
ICAgIGNhc2UgRGVsZXRlTWlzczoKKyAgICBjYXNlIFJlcGxhY2U6CisgICAgY2FzZSBNaXNzOgor
ICAgIGNhc2UgR2V0R2V0dGVyOgorICAgIGNhc2UgSW5IaXQ6CisgICAgY2FzZSBJbk1pc3M6Cisg
ICAgY2FzZSBBcnJheUxlbmd0aDoKKyAgICBjYXNlIFN0cmluZ0xlbmd0aDoKKyAgICBjYXNlIERp
cmVjdEFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKKyAg
ICBjYXNlIENoZWNrUHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOgorICAg
IGNhc2UgSW5kZXhlZEludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgorICAg
IGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgorICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFn
ZUxvYWQ6CisgICAgY2FzZSBJbmRleGVkU2NvcGVkQXJndW1lbnRzTG9hZDoKKyAgICBjYXNlIElu
ZGV4ZWREaXJlY3RBcmd1bWVudHNMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJyYXlJbnQ4
TG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5VWludDhMb2FkOgorICAgIGNhc2UgSW5k
ZXhlZFR5cGVkQXJyYXlVaW50OENsYW1wZWRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFR5cGVkQXJy
YXlJbnQxNkxvYWQ6CisgICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheVVpbnQxNkxvYWQ6CisgICAg
Y2FzZSBJbmRleGVkVHlwZWRBcnJheUludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFy
cmF5VWludDMyTG9hZDoKKyAgICBjYXNlIEluZGV4ZWRUeXBlZEFycmF5RmxvYXQzMkxvYWQ6Cisg
ICAgY2FzZSBJbmRleGVkVHlwZWRBcnJheUZsb2F0NjRMb2FkOgorICAgIGNhc2UgSW5kZXhlZFN0
cmluZ0xvYWQ6CisgICAgY2FzZSBJbnN0YW5jZU9mR2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBjYXNlIEdldHRlcjoKKyAgICBjYXNlIFNldHRlcjogeworICAgICAgICAvLyBH
ZXR0ZXIgYW5kIFNldHRlciByZWxpZXMgb24gQ29kZUJsb2NrLCB3aGljaCBtYWtlcyBzaGFyaW5n
IGltcG9zc2libGUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjYXNlIEN1
c3RvbVZhbHVlR2V0dGVyOgorICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JHZXR0ZXI6CisgICAgY2Fz
ZSBDdXN0b21WYWx1ZVNldHRlcjoKKyAgICBjYXNlIEN1c3RvbUFjY2Vzc29yU2V0dGVyOiB7Cisg
ICAgICAgIC8vIFRoZXkgYXJlIGVtYmVkZGluZyBKU0dsb2JhbE9iamVjdCB0aGF0IGFyZSBub3Qg
dGllZCB0byBzaGFyaW5nIEpJVFN0dWJSb3V0aW5lLgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgY2FzZSBJbnRyaW5zaWNHZXR0ZXI6IHsKKyAgICAgICAgYXV0byYgbGhzZCA9
IGxocy5hczxJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNk
ID0gcmhzLmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIHJldHVybiBs
aHNkLm1faW50cmluc2ljRnVuY3Rpb24gPT0gcmhzZC5tX2ludHJpbnNpY0Z1bmN0aW9uOworICAg
IH0KKworICAgIGNhc2UgTW9kdWxlTmFtZXNwYWNlTG9hZDogeworICAgICAgICBhdXRvJiBsaHNk
ID0gbGhzLmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7CisgICAgICAgIGF1dG8mIHJo
c2QgPSByaHMuYXM8TW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZT4oKTsKKyAgICAgICAgcmV0dXJu
IGxoc2QubV9tb2R1bGVOYW1lc3BhY2VPYmplY3QgPT0gcmhzZC5tX21vZHVsZU5hbWVzcGFjZU9i
amVjdAorICAgICAgICAgICAgJiYgbGhzZC5tX21vZHVsZUVudmlyb25tZW50ID09IHJoc2QubV9t
b2R1bGVFbnZpcm9ubWVudAorICAgICAgICAgICAgJiYgbGhzZC5tX3Njb3BlT2Zmc2V0ID09IHJo
c2QubV9zY29wZU9mZnNldDsKKyAgICB9CisKKyAgICBjYXNlIEluc3RhbmNlT2ZIaXQ6CisgICAg
Y2FzZSBJbnN0YW5jZU9mTWlzczogeworICAgICAgICBhdXRvJiBsaHNkID0gbGhzLmFzPEluc3Rh
bmNlT2ZBY2Nlc3NDYXNlPigpOworICAgICAgICBhdXRvJiByaHNkID0gcmhzLmFzPEluc3RhbmNl
T2ZBY2Nlc3NDYXNlPigpOworICAgICAgICByZXR1cm4gbGhzZC5tX3Byb3RvdHlwZSA9PSByaHNk
Lm1fcHJvdG90eXBlOworICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmgKaW5kZXggYmRkMWIyMzdkNjE4YTJjY2U4MjcyMGY3MmNhNzUzN2RlM2Zh
NzA2OC4uOTUwOWRjNzgxNDI4NzIzODVmNDAyNzkzZDNhZDBkOTdhZmE1ODgyMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCkBAIC0yOCwxMCArMjgsMTMg
QEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgorI2luY2x1ZGUgIkpJVFN0dWJSb3V0
aW5lLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlBvbHlQcm90b0FjY2Vzc0NoYWluLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3JIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03OSw3ICs4Miw3IEBAIERFQ0xBUkVfQUxMT0NB
VE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwogLy8gV2Ugd2lsbCBzb21ldGlt
ZXMgYnVmZmVyIGNvbW1pdHRlZCBBY2Nlc3NDYXNlcyBpbiB0aGUgUG9seW1vcnBoaWNBY2Nlc3Mg
b2JqZWN0IGJlZm9yZSBnZW5lcmF0aW5nCiAvLyBjb2RlLiBUaGlzIGFsbG93cyB1cyB0byBvbmx5
IHJlZ2VuZXJhdGUgb25jZSB3ZSd2ZSBhY2N1bXVsYXRlZCAoaG9wZWZ1bGx5KSBtb3JlIHRoYW4g
b25lIG5ldwogLy8gQWNjZXNzQ2FzZS4KLWNsYXNzIEFjY2Vzc0Nhc2UgeworY2xhc3MgQWNjZXNz
Q2FzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBY2Nlc3NDYXNlPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoQWNjZXNzQ2FzZSk7CiBw
dWJsaWM6CiAgICAgZW51bSBBY2Nlc3NUeXBlIDogdWludDhfdCB7CkBAIC0xNDcsMTkgKzE1MCwx
OSBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlVHlwZT4obmV3IEFjY2Vzc0Nhc2VUeXBlKGFyZ3VtZW50cy4uLikpOwogICAgIH0K
IAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgPSBpbnZhbGlkT2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKFZN
JiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVy
dHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAogICAgICAgICBTdHJ1Y3R1cmUqID0gbnVsbHB0ciwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQoKSwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmID0gbnVsbHB0cik7CiAKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVRyYW5zaXRpb24oVk0m
LCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3RhdGljIFJlZlB0cjxBY2Nlc3NDYXNlPiBjcmVh
dGVUcmFuc2l0aW9uKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLAogICAgICAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBSZWZQdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsCisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGVEZWxldGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
CiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQoVk0mLCBKU0NlbGwq
IG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZVNldFByaXZhdGVCcmFuZChWTSYsIEpTQ2Vs
bCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSk7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVh
dGVDaGVja1ByaXZhdGVCcmFuZChWTSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlU2V0UHJp
dmF0ZUJyYW5kKFZNJiwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKTsKICAgICAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGZyb21TdHJ1Y3R1cmVTdHViSW5mbyhW
TSYsIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CisgICAgc3RhdGljIFJlZlB0cjxBY2Nlc3NDYXNlPiBmcm9tU3RydWN0dXJlU3R1YkluZm8o
Vk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogCiAgICAgQWNjZXNzVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CkBAIC0yNTMsMTEgKzI1
NiwzNyBAQCBjbGFzcyBBY2Nlc3NDYXNlIHsKICNlbHNlCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mKSB7IH0KICNlbmRpZgotICAgIAor
CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0
ZUhhc2gobV9jb25kaXRpb25TZXQuaGFzaCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90eXBl
KSwgbV92aWFQcm94eSwgbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKSwgbV9vZmZzZXQpOwor
ICAgIH0KKworICAgIHN0YXRpYyBib29sIGNhbkJlU2hhcmVkKGNvbnN0IEFjY2Vzc0Nhc2UmLCBj
b25zdCBBY2Nlc3NDYXNlJik7CisKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NDYXNlKFZNJiwgSlND
ZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKLSAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJikg
PSBkZWZhdWx0OwotICAgIEFjY2Vzc0Nhc2UoY29uc3QgQWNjZXNzQ2FzZSYgb3RoZXIpID0gZGVm
YXVsdDsKKyAgICBBY2Nlc3NDYXNlKEFjY2Vzc0Nhc2UmJiBvdGhlcikKKyAgICAgICAgOiBtX3R5
cGUoV1RGTW92ZShvdGhlci5tX3R5cGUpKQorICAgICAgICAsIG1fc3RhdGUoV1RGTW92ZShvdGhl
ci5tX3N0YXRlKSkKKyAgICAgICAgLCBtX3ZpYVByb3h5KFdURk1vdmUob3RoZXIubV92aWFQcm94
eSkpCisgICAgICAgICwgbV9vZmZzZXQoV1RGTW92ZShvdGhlci5tX29mZnNldCkpCisgICAgICAg
ICwgbV9zdHJ1Y3R1cmUoV1RGTW92ZShvdGhlci5tX3N0cnVjdHVyZSkpCisgICAgICAgICwgbV9j
b25kaXRpb25TZXQoV1RGTW92ZShvdGhlci5tX2NvbmRpdGlvblNldCkpCisgICAgICAgICwgbV9w
b2x5UHJvdG9BY2Nlc3NDaGFpbihXVEZNb3ZlKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hhaW4p
KQorICAgICAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKG90aGVyLm1faWRlbnRpZmllcikpCisg
ICAgeyB9CisKKyAgICBBY2Nlc3NDYXNlKGNvbnN0IEFjY2Vzc0Nhc2UmIG90aGVyKQorICAgICAg
ICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9zdGF0ZShvdGhlci5tX3N0YXRl
KQorICAgICAgICAsIG1fdmlhUHJveHkob3RoZXIubV92aWFQcm94eSkKKyAgICAgICAgLCBtX29m
ZnNldChvdGhlci5tX29mZnNldCkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShvdGhlci5tX3N0cnVj
dHVyZSkKKyAgICAgICAgLCBtX2NvbmRpdGlvblNldChvdGhlci5tX2NvbmRpdGlvblNldCkKKyAg
ICAgICAgLCBtX3BvbHlQcm90b0FjY2Vzc0NoYWluKG90aGVyLm1fcG9seVByb3RvQWNjZXNzQ2hh
aW4pCisgICAgICAgICwgbV9pZGVudGlmaWVyKG90aGVyLm1faWRlbnRpZmllcikKKyAgICB7IH0K
IAogICAgIEFjY2Vzc0Nhc2UmIG9wZXJhdG9yPShjb25zdCBBY2Nlc3NDYXNlJikgPSBkZWxldGU7
CiAgICAgdm9pZCByZXNldFN0YXRlKCkgeyBtX3N0YXRlID0gUHJpbW9yZGlhbDsgfQpAQCAtMjc1
LDcgKzMwNCw3IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogCiAgICAgLy8gRklYTUU6IFRoaXMgb25s
eSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNjZXNzQ2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0
aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NjQ1NgotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IGNsb25lKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25z
dDsKIAogICAgIC8vIFBlcmZvcm0gYW55IGFjdGlvbiB0aGF0IG11c3QgYmUgcGVyZm9ybWVkIGJl
Zm9yZSB0aGUgZW5kIG9mIHRoZSBlcG9jaCBpbiB3aGljaCB0aGUgY2FzZQogICAgIC8vIHdhcyBj
cmVhdGVkLiBSZXR1cm5zIGEgc2V0IG9mIHdhdGNocG9pbnQgc2V0cyB0aGF0IHdpbGwgbmVlZCB0
byBiZSB3YXRjaGVkLgpAQCAtMzE1LDYgKzM0NCwxNDggQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCitjbGFzcyBTaGFyZWRK
SVRTdHViU2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChTaGFyZWRKSVRTdHViU2V0
KTsKK3B1YmxpYzoKKyAgICBTaGFyZWRKSVRTdHViU2V0KCkgPSBkZWZhdWx0OworCisgICAgc3Ry
dWN0IEhhc2ggeworICAgICAgICBzdHJ1Y3QgS2V5IHsKKyAgICAgICAgICAgIEtleSgpID0gZGVm
YXVsdDsKKworICAgICAgICAgICAgS2V5KEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIs
IEdQUlJlZyBleHRyYUdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBSZWdpc3RlclNldCB1c2VkUmVn
aXN0ZXJzLCBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKiB3cmFwcGVkKQorICAgICAg
ICAgICAgICAgIDogbV93cmFwcGVkKHdyYXBwZWQpCisgICAgICAgICAgICAgICAgLCBtX2Jhc2VH
UFIoYmFzZUdQUikKKyAgICAgICAgICAgICAgICAsIG1fdmFsdWVHUFIodmFsdWVHUFIpCisgICAg
ICAgICAgICAgICAgLCBtX2V4dHJhR1BSKGV4dHJhR1BSKQorICAgICAgICAgICAgICAgICwgbV9z
dHViSW5mb0dQUihzdHViSW5mb0dQUikKKyAgICAgICAgICAgICAgICAsIG1fdXNlZFJlZ2lzdGVy
cyh1c2VkUmVnaXN0ZXJzKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAgICAgIEtleShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgICAgICAgICAgOiBtX3dyYXBwZWQo
Yml0d2lzZV9jYXN0PFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KDEpKSkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBib29sIGlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV93cmFwcGVkID09IGJpdHdp
c2VfY2FzdDxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5lKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSk7IH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gYS5tX3dyYXBwZWQgPT0gYi5tX3dyYXBwZWQKKyAgICAgICAgICAgICAgICAgICAgJiYg
YS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3Zh
bHVlR1BSID09IGIubV92YWx1ZUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fZXh0cmFH
UFIgPT0gYi5tX2V4dHJhR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV9zdHViSW5mb0dQ
UiA9PSBiLm1fc3R1YkluZm9HUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX3VzZWRSZWdp
c3RlcnMgPT0gYi5tX3VzZWRSZWdpc3RlcnM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxwdHIgfTsK
KyAgICAgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CisgICAgICAgICAgICBHUFJSZWcgbV92YWx1
ZUdQUjsKKyAgICAgICAgICAgIEdQUlJlZyBtX2V4dHJhR1BSOworICAgICAgICAgICAgR1BSUmVn
IG1fc3R1YkluZm9HUFI7CisgICAgICAgICAgICBSZWdpc3RlclNldCBtX3VzZWRSZWdpc3RlcnM7
CisgICAgICAgIH07CisKKyAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPEtleT47CisKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBw
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXAubV93cmFwcGVkKQorICAgICAgICAgICAg
ICAgIHJldHVybiAxOworICAgICAgICAgICAgcmV0dXJuIHAubV93cmFwcGVkLT5oYXNoKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBLZXkmIGEsIGNvbnN0
IEtleSYgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAg
fQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAgICBzdHJ1Y3QgU2VhcmNoZXIgeworICAgICAg
ICBzdHJ1Y3QgVHJhbnNsYXRvciB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBTZWFyY2hlciYgc2VhcmNoZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OmNvbXB1dGVIYXNoKHNlYXJj
aGVyLm1fY2FzZXMsIHNlYXJjaGVyLm1fd2Vha1N0cnVjdHVyZXMpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIYXNoOjpLZXkgYSwgY29uc3Qg
U2VhcmNoZXImIGIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGEubV9iYXNl
R1BSID09IGIubV9iYXNlR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQUiA9
PSBiLm1fdmFsdWVHUFIKKyAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09IGIu
bV9leHRyYUdQUgorICAgICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0gYi5t
X3N0dWJJbmZvR1BSCisgICAgICAgICAgICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09
IGIubV91c2VkUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUg
b3JkZXJpbmcgb2YgY2FzZXMgZG9lcyBub3QgbWF0dGVyIGZvciBzaGFyaW5nIGNhcGFiaWxpdGll
cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuIHBvdGVudGlhbGx5IGluY3JlYXNlIHN1
Y2Nlc3MgcmF0ZSBieSBtYWtpbmcgdGhpcyBjb21wYXJpc29uIC8gaGFzaGluZyBub24gb3JkZXJp
bmcgc2Vuc2l0aXZlLgorICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBhQ2FzZXMgPSBh
Lm1fd3JhcHBlZC0+Y2FzZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgYkNh
c2VzID0gYi5tX2Nhc2VzOworICAgICAgICAgICAgICAgICAgICBpZiAoYUNhc2VzLnNpemUoKSAh
PSBiQ2FzZXMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBiQ2Fz
ZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUFjY2Vz
c0Nhc2U6OmNhbkJlU2hhcmVkKCphQ2FzZXNbaW5kZXhdLCAqYkNhc2VzW2luZGV4XSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGFXZWFrID0gYS5tX3dyYXBwZWQt
PndlYWtTdHJ1Y3R1cmVzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGJXZWFr
ID0gYi5tX3dlYWtTdHJ1Y3R1cmVzOworICAgICAgICAgICAgICAgICAgICBpZiAoYVdlYWsuc2l6
ZSgpICE9IGJXZWFrLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IGFXZWFr
LnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFX
ZWFrW2ldICE9IGJXZWFrW2ldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7Cisg
ICAgICAgIEdQUlJlZyBtX3ZhbHVlR1BSOworICAgICAgICBHUFJSZWcgbV9leHRyYUdQUjsKKyAg
ICAgICAgR1BSUmVnIG1fc3R1YkluZm9HUFI7CisgICAgICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJl
Z2lzdGVyczsKKyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYg
bV9jYXNlczsKKyAgICAgICAgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiBtX3dlYWtT
dHJ1Y3R1cmVzOworICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlclRyYW5zbGF0b3IgeworICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5l
KiBzdHViKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3R1Yi0+aGFzaCgpOworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSGFzaDo6S2V5JiBrZXks
IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqIHN0dWIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBrZXkubV93cmFwcGVkID09IHN0dWI7CisgICAgICAgIH0KKyAgICB9Owor
CisgICAgdm9pZCBhZGQoSGFzaDo6S2V5JiYga2V5KQorICAgIHsKKyAgICAgICAgbV9zdHVicy5h
ZGQoV1RGTW92ZShrZXkpKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZShQb2x5bW9ycGhpY0Fj
Y2Vzc0pJVFN0dWJSb3V0aW5lKiBzdHViKQorICAgIHsKKyAgICAgICAgYXV0byBpdGVyID0gbV9z
dHVicy5maW5kPFBvaW50ZXJUcmFuc2xhdG9yPihzdHViKTsKKyAgICAgICAgaWYgKGl0ZXIgIT0g
bV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIG1fc3R1YnMucmVtb3ZlKGl0ZXIpOworICAgIH0K
KworICAgIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqIGZpbmQoY29uc3QgU2VhcmNo
ZXImIHNlYXJjaGVyKQorICAgIHsKKyAgICAgICAgYXV0byBlbnRyeSA9IG1fc3R1YnMuZmluZDxT
aGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlcjo6VHJhbnNsYXRvcj4oc2VhcmNoZXIpOworICAgICAg
ICBpZiAoZW50cnkgIT0gbV9zdHVicy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeS0+
bV93cmFwcGVkOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgSGFzaFNldDxIYXNoOjpLZXksIEhhc2gsIEhhc2g6OktleVRyYWl0cz4gbV9zdHViczsKK307
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeVZhbEluZm8uaAppbmRleCBmYzk4ZjRlNDAwYjhmYzZjY2I4OGRmMGNhYTRjNWE1
NTUzNjc5Yzg0Li5iMjI2ZmIxNmY1ZGI3NDRmN2ZlNTU2YmVjNzU4ZDdjZWEwNGU0YWExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCkBAIC0yNDQsMTAgKzI0
NCw4IEBAIHN0cnVjdCBCeVZhbEluZm8gewogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldFVw
KENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbm90SW5kZXhKdW1wLCBDb2RlTG9j
YXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJl
bDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJheU1vZGUg
YXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKKyAgICB2b2lkIHNldFVwKENvZGVMb2NhdGlv
bkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXIsIEpJVEFycmF5
TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVs
PEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQogICAgIHsKLSAgICAgICAgdGhpcy0+
bm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOwotICAgICAgICB0aGlzLT5iYWRUeXBlSnVtcCA9
IGJhZFR5cGVKdW1wOwogICAgICAgICB0aGlzLT5leGNlcHRpb25IYW5kbGVyID0gZXhjZXB0aW9u
SGFuZGxlcjsKICAgICAgICAgdGhpcy0+ZG9uZVRhcmdldCA9IGRvbmVUYXJnZXQ7CiAgICAgICAg
IHRoaXMtPmJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCA9IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdl
dDsKQEAgLTI2Miw4ICsyNjAsMjEgQEAgc3RydWN0IEJ5VmFsSW5mbyB7CiAKICAgICBERUNMQVJF
X1ZJU0lUX0FHR1JFR0FURTsKIAotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gbm90SW5kZXhKdW1wOwotICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4g
YmFkVHlwZUp1bXA7CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX3Nsb3dPcGVyYXRpb24pOyB9
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5vdEluZGV4SnVtcFRhcmdldCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fbm90SW5kZXhKdW1wVGFyZ2V0KTsgfQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCYWRUeXBlSnVtcFRhcmdldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihCeVZhbEluZm8sIG1fYmFkVHlwZUp1bXBUYXJnZXQpOyB9CisKKyAg
ICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlvbjsKKworICAgIHVu
aW9uIHsKKyAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1f
bm90SW5kZXhKdW1wVGFyZ2V0OworICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+IG1fbm90SW5kZXhKdW1wOworICAgIH07CisgICAgdW5pb24geworICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gbV9iYWRUeXBlSnVtcFRhcmdldDsK
KyAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX2JhZFR5cGVKdW1w
OworICAgIH07CisKICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFn
PiBleGNlcHRpb25IYW5kbGVyOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJU
YWc+IGRvbmVUYXJnZXQ7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4g
YmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBmY2YxNGZkZDNhMjA1MTM4OTE2YzcwZjg4NWE4
MWVkYTBiMDM3MDkwLi44MGY0MDQ1YTMzMTRjMjY1NTQyMTQ3ODVjZTE2MDMwNWRiZjc3ZTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApA
QCAtNDIwLDEyICs0MjAsMTIgQEAgdm9pZCBDYWxsTGlua0luZm86OmluaXRpYWxpemVEaXJlY3RD
YWxsKCkKICAgICBBU1NFUlQodS5jb2RlSUMubV9jYWxsTG9jYXRpb24pOwogICAgIGlmIChpc1Rh
aWxDYWxsKCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKLSAg
ICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBbJl0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVP
dmVyKGZhc3RQYXRoU3RhcnQoKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsm
XShDQ2FsbEhlbHBlcnMmIGppdCkgewogICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAo
KTsKICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgc2xvd1BhdGhTdGFy
dCgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiaW5pdGlhbGl6ZSBkaXJlY3QgY2Fs
bCIpOworICAgICAgICB9KSwgImluaXRpYWxpemUgZGlyZWN0IGNhbGwiKTsKICAgICB9IGVsc2UK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbCh1LmNvZGVJQy5tX2NhbGxM
b2NhdGlvbiwgc2xvd1BhdGhTdGFydCgpKTsKIH0KQEAgLTQzNiwxMSArNDM2LDExIEBAIHZvaWQg
Q2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsVGFyZ2V0KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50
cnlQdHJUYWc+IHRhcmdldCkKIAogICAgIGlmIChpc1RhaWxDYWxsKCkpIHsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZmFzdFBhdGhTdGFydCgpKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0
SklUQ29kZU92ZXIoZmFzdFBhdGhTdGFydCgpLCBbJl0gKENDYWxsSGVscGVycyYgaml0KSB7Cisg
ICAgICAgIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKGZhc3RQYXRoU3RhcnQoKSwgc2Nv
cGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhlbHBlcnMmIGppdCkgewog
ICAgICAgICAgICAgLy8gV2UgcmVzZXJ2ZWQgdGhpcyBtYW55IGJ5dGVzIGZvciB0aGUganVtcCBh
dCBmYXN0UGF0aFN0YXJ0KCkuIE1ha2UgdGhhdAogICAgICAgICAgICAgLy8gY29kZSBub3BzIG5v
dyBzbyB3ZSBmYWxsIHRocm91Z2ggdG8gdGhlIGp1bXAgdG8gdGhlIGZhc3QgcGF0aC4KLSAgICAg
ICAgICAgIGppdC5lbWl0Tm9wcyhDQ2FsbEhlbHBlcnM6OnBhdGNoYWJsZUp1bXBTaXplKCkpOyAK
LSAgICAgICAgfSwgIlNldHRpbmcgZGlyZWN0IGNhbGwgdGFyZ2V0Iik7CisgICAgICAgICAgICBq
aXQuZW1pdE5vcHMoQ0NhbGxIZWxwZXJzOjpwYXRjaGFibGVKdW1wU2l6ZSgpKTsKKyAgICAgICAg
fSksICJTZXR0aW5nIGRpcmVjdCBjYWxsIHRhcmdldCIpOwogICAgIH0KIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwodS5jb2RlSUMubV9jYWxsTG9jYXRpb24sIHRhcmdldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYjEwOTBi
NWQ0MThlODM5YWU2YzgyN2E2MmYwY2ZkMTNkOTM3MTdkNi4uZDNkMTA2ZmQ1NDUwNDNhZTU0MWQw
ZDYxMTg1M2RlZWU1YjdiMDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaApAQCAtNDIzLDYgKzQyMywxMSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB7CiAgICAgICAgIHJldHVybiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFz
ZWxpbmVKSVQ7CiAgICAgfQorCisgICAgYm9vbCB1c2VEYXRhSUMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEpJVENvZGU6OnVzZURhdGFJQyhqaXRUeXBlKCkpOworICAgIH0KICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcAppbmRleCAwYzNjNDEyMWQ1ODY2MjdlYTk1MDQxYmY3MTcwZGM3YzlkNTBhYmJhLi43
NjcxZDg3YjFlYTc0OWRjMzQ1NmY3NzY1YWMwNmM0YThiY2ZiMmIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2Uu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRl
ckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAgICAgbV9jdXN0
b21TbG90QmFzZS5zZXRNYXlCZU51bGwodm0sIG93bmVyLCBjdXN0b21TbG90QmFzZSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVh
dGUoCitSZWY8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAg
IFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsCiAgICAg
Ym9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RC
YXNlLAogICAgIHN0ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmli
dXRlLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJvdG90eXBlQWNjZXNzQ2hhaW4p
CkBAIC02MSwxOCArNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNl
dHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1
bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVy
LCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNl
dCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CisgICAg
YXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2
aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2RvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0
ZTsKICAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlv
blB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51bGxwdHI7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNl
dHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUg
dHlwZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LAorUmVmPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U6OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiBjb25kaXRpb25TZXQsIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVB
Y2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwgCiAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlKQogewogICAg
IEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZhbHVlU2V0dGVyIHx8IHR5
cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93
bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2
aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNz
Q2hhaW4pKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEdldHRlclNldHRlckFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0g
Y3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+KGN1c3RvbVNl
dHRlcikgOiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05MSw5ICs5MSw5IEBA
IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNldHRlckFjY2Vzc0Nhc2UoY29uc3QgR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZSYgb3RoCiAgICAgbV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2Rv
bUF0dHJpYnV0ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNl
dHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykp
OworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
KCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTEzOSw2ICsxMzksOCBAQCB2b2lkIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmVtaXRE
T01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29ucwogICAgIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1YkluZm8udXNlZFJlZ2lzdGVycyk7CiAg
ICAgYWxsb2NhdG9yLmxvY2soc3R1YkluZm8uYmFzZVJlZ3MoKSk7CiAgICAgYWxsb2NhdG9yLmxv
Y2sodmFsdWVSZWdzKTsKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsK
ICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKIAogICAgIEdQUlJlZyBwYXJhbUJhc2VH
UFIgPSBJbnZhbGlkR1BSUmVnOwpAQCAtMjIzLDYgKzIyNSwxMSBAQCB2b2lkIEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgY29ucwogICAgIGZvciAoRlBSUmVnIHJlZyA6IGZwU2NyYXRjaCkKICAgICAgICAgcmVnaXN0
ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOwogICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2Fs
bC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqaXQuY29kZUJsb2NrKCk7
CisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpCisgICAgICAgIHJlZ2lzdGVyc1RvU3Bp
bGxGb3JDQ2FsbC5zZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogCiAgICAgQWNjZXNz
Q2FzZVNuaXBwZXRQYXJhbXMgcGFyYW1zKHN0YXRlLm1fdm0sIFdURk1vdmUocmVncyksIFdURk1v
dmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKICAgICBzbmlwcGV0LT5nZW5lcmF0
b3IoKS0+cnVuKGppdCwgcGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IGE4NDg4NDU4ZjRhYmQy
YWFkMmViYWY2MmIyOGEzM2M0MTg2MDQwODcuLmMzNjczYTRmMTRiZjA3ODU2NjBjNTY0Yjc4MzJh
NWRiNDQ2YjcyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaApAQCAtNTMsMTcgKzUzLDE3IEBAIGNsYXNzIEdl
dHRlclNldHRlckFjY2Vzc0Nhc2UgZmluYWwgOiBwdWJsaWMgUHJveHlhYmxlQWNjZXNzQ2FzZSB7
CiAKICAgICB2b2lkIGVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29u
c3QgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKKyAgICBzdGF0aWMgUmVm
PEFjY2Vzc0Nhc2U+IGNyZWF0ZSgKICAgICAgICAgVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NU
eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwKICAg
ICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBib29sIHZpYVByb3h5LCBX
YXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0
clRhZz4gY3VzdG9tR2V0dGVyLAogICAgICAgICBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsIHN0
ZDo6b3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIFJlZlB0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4mJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNy
ZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJs
ZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0LAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4g
Y3JlYXRlKFZNJiwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSwgU3RydWN0dXJlKiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsCiAgICAgICAgIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmLCBib29sIHZp
YVByb3h5ID0gZmFsc2UsCiAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFn
PiBjdXN0b21TZXR0ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxs
cHRyKTsKIAogICAgIHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBj
b25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25z
dCBmaW5hbDsKKyAgICBSZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAg
IH5HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKaW5kZXggODMyY2QwYjhmYWZkOThkMGIy
ODU5M2NiYmIwNTdiYWU5NmZiMzIxYS4uNDg0MTAxMzlkYzJmOGMwZDVjODBhMmZmOTA1YzNhYTZh
MTM1ZGZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5jcHAKQEAgLTIxNiw2ICsyMTYsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBHUFJSZWcg
Z2V0U2NyYXRjaFJlZ2lzdGVyKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBhbGxv
Y2F0b3IubG9jayhzdHViSW5mby5iYXNlVGFnR1BSKTsKICAgICBhbGxvY2F0b3IubG9jayhzdHVi
SW5mby52YWx1ZVRhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAoc3R1YkluZm8ubV9zdHViSW5mb0dQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0b3IubG9jayhzdHViSW5mby5tX3N0
dWJJbmZvR1BSKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0
Y2hHUFIoKTsKICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkpCiAgICAgICAg
IHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMzc5LDE5ICszODEsNzAgQEAgYm9vbCBJbmxpbmVB
Y2Nlc3M6OmdlbmVyYXRlU2VsZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywg
U3RydWN0dXJlKgogICAgIHJldHVybiBsaW5rZWRDb2RlSW5saW5lOwogfQogCi12b2lkIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiB0YXJnZXQpCit2b2lkIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKIHsKLSAgICBDQ2FsbEhlbHBl
cnMgaml0OworICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKSB7CisgICAgICAgIHN0dWJJ
bmZvLm1fY29kZVB0ciA9IHRhcmdldDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGF1
dG8ganVtcCA9IGppdC5qdW1wKCk7CisgICAgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIo
c3R1YkluZm8uc3RhcnQucmV0YWdnZWQ8SlNJbnRlcm5hbFB0clRhZz4oKSwgc2NvcGVkTGFtYmRh
PHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAv
LyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9keSBzaG91bGQgYmUg
anVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCisgICAgICAgIGF1dG8ganVtcCA9IGpp
dC5qdW1wKCk7CisgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCB0YXJnZXQpOworICAg
ICAgICB9KTsKKyAgICB9KSwgIklubGluZUFjY2VzczogbGlua2luZyBjb25zdGFudCBqdW1wIik7
Cit9CiAKLSAgICAvLyBXZSBkb24ndCBuZWVkIGEgbm9wIHNsZWQgaGVyZSBiZWNhdXNlIG5vYm9k
eSBzaG91bGQgYmUganVtcGluZyBpbnRvIHRoZSBtaWRkbGUgb2YgYW4gSUMuCi0gICAgYm9vbCBu
ZWVkc0JyYW5jaENvbXBhY3Rpb24gPSBmYWxzZTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIo
aml0LCBzdHViSW5mby5zdGFydCwgaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCks
IExpbmtCdWZmZXI6OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbk11c3RTdWNj
ZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOwotICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZm
ZXIuaXNWYWxpZCgpKTsKLSAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgdGFyZ2V0KTsKK3ZvaWQg
SW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+IHRhcmdldCkKK3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMo
KSkgeworICAgICAgICAvLyBJZiBpdCBpcyBub3QgR2V0QnlJZC1saWtlLXRoaW5nLCB3ZSBkbyBu
b3QgZW1pdCBub3Agc2xlZCAoZS5nLiBHZXRCeVZhbCkuCisgICAgICAgIC8vIFRoZSBjb2RlIGlz
IGFscmVhZHkgYW4gaW5kaXJlY3QganVtcCwgYW5kIG9ubHkgdGhpbmcgd2Ugc2hvdWxkIGRvIGlz
IHJlcGxhY2luZyBtX2NvZGVQdHIuCisgICAgICAgIGlmIChzdHViSW5mby5oYXNDb25zdGFudElk
ZW50aWZpZXIpIHsKKyAgICAgICAgICAgIC8vIElmIG1fY29kZVB0ciBpcyBwb2ludGluZyB0byBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24sIHRoaXMgbWVhbnMgdGhhdCBJbmxpbmVBY2Nl
c3MgY29kZSBpcyBub3QgYSBzdHViIG9uZS4KKyAgICAgICAgICAgIC8vIFdlIHJld3JpdGUgdGhp
cyB3aXRoIHRoZSBzdHViLWJhc2VkIGRpc3BhdGNoaW5nIGNvZGUgb25jZSwgYW5kIGNvbnRpbnVl
IHVzaW5nIGl0IHVudGlsIHdlIHJlc2V0IHRoZSBjb2RlLgorICAgICAgICAgICAgaWYgKHN0dWJJ
bmZvLm1fY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpID09IHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSB7CisgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjplbWl0SklUQ29kZU92ZXIoc3R1YkluZm8uc3RhcnQucmV0YWdnZWQ8SlNJbnRlcm5h
bFB0clRhZz4oKSwgc2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+KFsmXShDQ2FsbEhl
bHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJnN0dWJJbmZvKSwgc3R1YkluZm8ubV9zdHViSW5mb0dQUik7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mby5t
X3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRT
dHViUm91dGluZVB0clRhZyk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5q
dW1wKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gc3R1YkluZm8u
ZG9uZUxvY2F0aW9uOworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhqdW1wLCBkb25lTG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICB9KSwgIklubGluZUFjY2VzczogbGlua2luZyBzdHViIGNhbGwiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdHViSW5mby5tX2NvZGVQdHIgPSB0YXJn
ZXQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsIE5vUHRyVGFnLCAiSW5saW5lQWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKKyAg
ICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihzdHViSW5mby5zdGFydC5yZXRhZ2dlZDxK
U0ludGVybmFsUHRyVGFnPigpLCBzY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4oWyZd
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYSBub3Agc2xl
ZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBiZSBqdW1waW5nIGludG8gdGhlIG1pZGRsZSBv
ZiBhbiBJQy4KKyAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKKyAgICAgICAgaml0LmFk
ZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgbGlu
a0J1ZmZlci5saW5rKGp1bXAsIHRhcmdldCk7CisgICAgICAgIH0pOworICAgIH0pLCAiSW5saW5l
QWNjZXNzOiBsaW5raW5nIGNvbnN0YW50IGp1bXAiKTsKK30KKwordm9pZCBJbmxpbmVBY2Nlc3M6
OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKK3sKKyAgICBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihzdHViSW5mby5z
dGFydC5yZXRhZ2dlZDxKU0ludGVybmFsUHRyVGFnPigpLCBzY29wZWRMYW1iZGE8dm9pZChDQ2Fs
bEhlbHBlcnMmKT4oWyZdKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgYSBub3Agc2xlZCBoZXJlIGJlY2F1c2Ugbm9ib2R5IHNob3VsZCBiZSBqdW1waW5nIGlu
dG8gdGhlIG1pZGRsZSBvZiBhbiBJQy4KKyAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsK
KyAgICAgICAgYXV0byBzbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBzdHViSW5mby5zbG93UGF0aFN0
YXJ0TG9jYXRpb247CisgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBzbG93UGF0aFN0
YXJ0TG9jYXRpb24pOworICAgICAgICB9KTsKKyAgICB9KSwgIklubGluZUFjY2VzczogbGlua2lu
ZyBjb25zdGFudCBqdW1wIik7Cit9CisKK3ZvaWQgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNz
Tm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgc3R1YkluZm8uc2xvd1Bh
dGhTdGFydExvY2F0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKaW5kZXggZjQ5YjM1YjhmMjI2NDA2
YzdmYjI2ZmZiYjQ4ODZiMmI4NDcxZDEyZC4uYjEwMmFlMDIzNjU5MzYwZTFkMzZkZTkyZGRkMTQ0
Y2QyZDIyMjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUFjY2Vzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVB
Y2Nlc3MuaApAQCAtMTA0LDEwICsxMDQsMTQgQEAgY2xhc3MgSW5saW5lQWNjZXNzIHsKICAgICBz
dGF0aWMgYm9vbCBpc0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNB
cnJheSopOwogICAgIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKFN0cnVjdHVy
ZVN0dWJJbmZvJik7CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxlbmd0aChTdHJ1Y3R1
cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKLSAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1w
KFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHVi
SW5mbyYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU3RyaW5nTGVuZ3Ro
KFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKKyAgICBzdGF0aWMgdm9pZCByZXdpcmVTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2VzcyhDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPik7CisgICAgc3RhdGlj
IHZvaWQgcmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJ
bmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KTsKKyAgICBzdGF0
aWMgdm9pZCByZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRTdHViQXNK
dW1wSW5BY2Nlc3MoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKKwogICAgIC8vIFRo
aXMgaXMgaGVscGZ1bCB3aGVuIGRldGVybWluaW5nIHRoZSBzaXplIG9mIGFuIElDIG9uCiAgICAg
Ly8gdmFyaW91cyBwbGF0Zm9ybXMuIFdoZW4gYWRkaW5nIGEgbmV3IHR5cGUgb2YgSUMsIGltcGxl
bWVudAogICAgIC8vIGl0cyBwbGFjZWhvbGRlciBjb2RlIGhlcmUsIGFuZCBsb2cgdGhlIHNpemUu
IFRoYXQgd2F5IHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcAppbmRleCAyMWYyNDUzYmFjN2FmYWU3NzI0MWNiMDRh
MjVkMjBmZGQ5OTNiYzM0Li45OTQ5MDhkNjhiNjJiYmUwNmUwOWFhMGIzN2U3N2MxMTBjNjY5MmQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZkFj
Y2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5j
ZU9mQWNjZXNzQ2FzZS5jcHAKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjcmVh
dGUoCitSZWY8QWNjZXNzQ2FzZT4gSW5zdGFuY2VPZkFjY2Vzc0Nhc2U6OmNyZWF0ZSgKICAgICBW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsCiAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlv
blNldCwgSlNPYmplY3QqIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+KG5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGFjY2Vzc1R5
cGUsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBwcm90b3R5cGUpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbnN0YW5jZU9mQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGFjY2Vzc1R5cGUsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBwcm90b3R5cGUpKTsKIH0KIAogdm9pZCBJbnN0YW5jZU9m
QWNjZXNzQ2FzZTo6ZHVtcEltcGwoUHJpbnRTdHJlYW0mIG91dCwgQ29tbWFQcmludGVyJiBjb21t
YSkgY29uc3QKQEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6ZHVt
cEltcGwoUHJpbnRTdHJlYW0mIG91dCwgQ29tbWFQcmludGVyJiBjb21tYSkgY29uc3QKICAgICBv
dXQucHJpbnQoY29tbWEsICJwcm90b3R5cGUgPSAiLCBKU1ZhbHVlKHByb3RvdHlwZSgpKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnN0YW5jZU9mQWNjZXNzQ2FzZTo6Y2xv
bmUoKSBjb25zdAorUmVmPEFjY2Vzc0Nhc2U+IEluc3RhbmNlT2ZBY2Nlc3NDYXNlOjpjbG9uZSgp
IGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPiByZXN1
bHQobmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IEluc3RhbmNlT2ZBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5y
ZXNldFN0YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mQWNjZXNzQ2FzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKaW5kZXggNjllMmIz
MWFhOTRhNTlkMzBkZmI0Y2FmMjI0NDk5ZDYwMjc3ODQ3Yy4uYWQ3MWU2OTQyZjQ0OTJmYThhYmRl
YWFjN2VhMGZjNDZiNzA3OWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RhbmNlT2ZBY2Nlc3NDYXNlLmgKQEAgLTM0LDE1ICszNCwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEluc3RhbmNlT2ZBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFj
Y2Vzc0Nhc2UgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBBY2Nlc3NDYXNlOworICAgIGZy
aWVuZCBjbGFzcyBBY2Nlc3NDYXNlOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZXNzQ2FzZT4gY3JlYXRlKAorICAgIHN0YXRpYyBSZWY8QWNjZXNzQ2FzZT4gY3JlYXRlKAog
ICAgICAgICBWTSYsIEpTQ2VsbCosIEFjY2Vzc1R5cGUsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSk7CiAg
ICAgCiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBl
LmdldCgpOyB9CiAgICAgCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0cmVhbSYsIENvbW1hUHJp
bnRlciYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjbG9u
ZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFs
OwogICAgIAogICAgIH5JbnN0YW5jZU9mQWNjZXNzQ2FzZSgpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNj
ZXNzQ2FzZS5jcHAKaW5kZXggNjMwMWRjMjMzNjkzM2Q2NzZjM2JlOWU5MGM2MDE4OWExMzE3Mzgx
Ny4uMzRiMWE4MDI3ODg5NWY3MWFiZmU2ODI5NjljZGU0MzBmMzJlN2Q2MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJB
Y2Nlc3NDYXNlLmNwcApAQCAtMzksMTggKzM5LDE4IEBAIEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNo
CiAgICAgbV9pbnRyaW5zaWNGdW5jdGlvbi5zZXQodm0sIG93bmVyLCBpbnRyaW5zaWNGdW5jdGlv
bik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQsIEpTRnVuY3Rp
b24qIGludHJpbnNpY0Z1bmN0aW9uLCBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+JiYgcHJv
dG90eXBlQWNjZXNzQ2hhaW4pCitSZWY8QWNjZXNzQ2FzZT4gSW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBKU0Z1bmN0aW9u
KiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3Rv
dHlwZUFjY2Vzc0NoYWluKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4obmV3IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCBpZGVudGlmaWVyLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBpbnRyaW5zaWNGdW5jdGlvbiwgV1RGTW92
ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRy
aW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25lciwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1
Y3R1cmUsIGNvbmRpdGlvblNldCwgaW50cmluc2ljRnVuY3Rpb24sIFdURk1vdmUocHJvdG90eXBl
QWNjZXNzQ2hhaW4pKSk7CiB9CiAKIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6On5JbnRyaW5z
aWNHZXR0ZXJBY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNl
PiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgSW50cmluc2lj
R2V0dGVyQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5l
dyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0
YXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oCmluZGV4IDYy
ODcwMDQxNTg3MzFkNWI4ZmViNTA2MzUzZGU1NTliNjQ0NzY0NDYuLjQ3YWYxYTJiZjFkZDZjYjkx
MzYyNjMyMTAxOTNiNDdhM2ZmMmFiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaApAQCAtNDIsOSAr
NDIsOSBAQCBjbGFzcyBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFj
Y2Vzc0Nhc2UgewogICAgIHN0YXRpYyBib29sIGNhbkVtaXRJbnRyaW5zaWNHZXR0ZXIoSlNGdW5j
dGlvbiosIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgSlNGdW5j
dGlvbiogaW50cmluc2ljRnVuY3Rpb24sIFJlZlB0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4mJik7
CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmLCBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwgUmVmUHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOworICAgIFJlZjxBY2Nlc3NDYXNlPiBjbG9uZSgpIGNv
bnN0IGZpbmFsOwogCiAgICAgfkludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UoKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFj
ZUFjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01vZHVsZU5h
bWVzcGFjZUFjY2Vzc0Nhc2UuY3BwCmluZGV4IDI5NTZkZDBjZDVkMGVhZTYxYTA4ZTNkYzc2NWJm
NzQzNDQxYzVmOGQuLmMyOWMxZGRmYWY0ODE1NTY2MTUxNzA4NWE4OGUxOWEwNzNhYmU3ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZS5jcHAKQEAgLTQ1LDE4ICs0NSwxOCBAQCBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOjpNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaAogICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KHZtLCBvd25lciwgbW9kdWxl
RW52aXJvbm1lbnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCwgU2Nv
cGVPZmZzZXQgc2NvcGVPZmZzZXQpCitSZWY8QWNjZXNzQ2FzZT4gTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCwgU2NvcGVPZmZzZXQg
c2NvcGVPZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihu
ZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIGlkZW50aWZpZXIsIG1vZHVs
ZU5hbWVzcGFjZU9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQsIHNjb3BlT2Zmc2V0KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IGlkZW50aWZpZXIsIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQsIHNj
b3BlT2Zmc2V0KSk7CiB9CiAKIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6On5Nb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlKCkKIHsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKK1JlZjxBY2Nlc3NDYXNlPiBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+IHJlc3VsdChuZXcgTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZSgqdGhpcykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlKCp0aGlzKSk7CiAgICAgcmVzdWx0LT5yZXNldFN0YXRl
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oCmluZGV4IDkyYTBi
OGEzNWI1NDcxNjI0MTMwZDY1MDY1M2QwNWJmNWQ3OTMzNzcuLmQ0Mzk1MGJmMDYzMTM3Y2Y3NzNi
ODRjNGFhZTQ5NDRiMDRjOWEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Nb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaApAQCAtNDQsOSArNDQs
OSBAQCBjbGFzcyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGljIEFjY2Vz
c0Nhc2UgewogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkgY29u
c3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsgfQogICAgIFNjb3BlT2Zmc2V0
IHNjb3BlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU9mZnNldDsgfQogCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCosIEpTTW9kdWxl
RW52aXJvbm1lbnQqLCBTY29wZU9mZnNldCk7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBj
cmVhdGUoVk0mLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBTY29wZU9mZnNldCk7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWY8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZW1pdChBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGZhbGxUaHJvdWdo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAppbmRleCAzZDIzM2ZhZDEzMzkyZGUwMmJmM2IzYzk3
ZmQwNjQ3ZjBkMWFhZmYzLi5iZTczZmRiNWU1YTdhOWZmMWI3NTI3MjAyNTI5M2NiNjJhNTg0NGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk9i
amVjdFByb3BlcnR5Q29uZGl0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg5LDYgKzkwLDMyIEBA
IGNsYXNzIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICByZXR1cm4gbV9kYXRhLT5tX3ZlY3Rvci5lbmQoKTsKICAgICB9CisK
KyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIEhhc2hlciBoYXNoZXI7
CisgICAgICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogKnRoaXMpCisgICAgICAgICAgICBhZGQo
aGFzaGVyLCBjb25kaXRpb24uaGFzaCgpKTsKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7
CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgbGhzLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhz
KQorICAgIHsKKyAgICAgICAgaWYgKGxocy5zaXplKCkgIT0gcmhzLnNpemUoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byBsaXRlciA9IGxocy5iZWdpbigpOworICAg
ICAgICBhdXRvIHJpdGVyID0gcmhzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBsaXRlciAhPSBs
aHMuZW5kKCk7ICsrbGl0ZXIsICsrcml0ZXIpIHsKKyAgICAgICAgICAgIGlmICghKCpsaXRlciA9
PSAqcml0ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBsaHMsIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0JiByaHMpCisgICAgeworICAgICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsK
KyAgICB9CiAgICAgCiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yT2JqZWN0KEpTT2Jq
ZWN0KikgY29uc3Q7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yQ29uZGl0aW9uS2lu
ZChQcm9wZXJ0eUNvbmRpdGlvbjo6S2luZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAwM2EyZjY3MWY3
NDQ2ZTRhY2FkY2Q3NGI5Yzg3ZTg5YTdkMDlhMDE1Li5jNTc1MWE4OTNkOWY1Yzk0MTJjNDY0YjFl
ZThkMGNkNDY3ODhlZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICBv
dXQucHJpbnQoIjoiLCBtX2NvZGUpOwogfQogCi12b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
aW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlv
bikKK3ZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjppbnN0YWxsV2F0Y2hwb2ludChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGNvbmRpdGlvbikK
IHsKLSAgICBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFu
ZEluc3RhbGxXYXRjaHBvaW50KAotICAgICAgICB3YXRjaHBvaW50cywgaml0LT5jb2RlQmxvY2so
KSwgc3R1YkluZm8sIGNvbmRpdGlvbik7CisgICAgV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2ludCh3YXRjaHBvaW50cywgY29k
ZUJsb2NrLCBzdHViSW5mbywgY29uZGl0aW9uKTsKIH0KIAogdm9pZCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OnJlc3RvcmVTY3JhdGNoKCkKQEAgLTczLDcgKzcyLDEwIEBAIHZvaWQgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpyZXN0b3JlU2NyYXRjaCgpCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6c3VjY2VlZCgpCiB7CiAgICAgcmVzdG9yZVNjcmF0Y2goKTsKLSAgICBzdWNjZXNzLmFwcGVu
ZChqaXQtPmp1bXAoKSk7CisgICAgaWYgKGppdC0+Y29kZUJsb2NrKCktPnVzZURhdGFJQygpKQor
ICAgICAgICBqaXQtPnJldCgpOworICAgIGVsc2UKKyAgICAgICAgc3VjY2Vzcy5hcHBlbmQoaml0
LT5qdW1wKCkpOwogfQogCiBjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpsaXZlUmVnaXN0ZXJzRm9yQ2FsbCgpCkBAIC0xMjYsMTAgKzEyOCwxMSBAQCBhdXRvIEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6cHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29u
c3QgUmVnaXN0ZXJTZQogICAgIH07CiB9CiAKLWF1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpw
cmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbFdpdGhvdXRFeGNlcHRpb25zKCkgLT4g
U3BpbGxTdGF0ZQorYXV0byBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lz
dGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVnaXN0ZXJTZXQmIGV4
dHJhKSAtPiBTcGlsbFN0YXRlCiB7CiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVycyA9IGFs
bG9jYXRvci0+dXNlZFJlZ2lzdGVycygpOwogICAgIGxpdmVSZWdpc3RlcnMuZXhjbHVkZShjYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGxpdmVSZWdpc3RlcnMubWVyZ2UoZXh0cmEpOwogCiAg
ICAgY29uc3RleHByIHVuc2lnbmVkIGV4dHJhU3RhY2tQYWRkaW5nID0gMDsKICAgICB1bnNpZ25l
ZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gPSBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKmppdCwg
bGl2ZVJlZ2lzdGVycywgZXh0cmFTdGFja1BhZGRpbmcpOwpAQCAtMjUyLDcgKzI1NSw3IEBAIFBv
bHltb3JwaGljQWNjZXNzOjp+UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIAogQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6YWRkQ2FzZXMoCiAgICAgY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+LCAyPiBvcmlnaW5hbENhc2VzVG9BZGQpCisgICAgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NDYXNlPiwgMj4gb3JpZ2luYWxDYXNlc1RvQWRkKQogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKQEAgLTI2OCw5ICsyNzEsOSBAQCBB
Y2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAv
LyAgIGFkZCBtb3JlIHRoaW5ncyBhZnRlciBmYWlsdXJlLgogICAgIAogICAgIC8vIEZpcnN0IGVu
c3VyZSB0aGF0IHRoZSBvcmlnaW5hbENhc2VzVG9BZGQgZG9lc24ndCBjb250YWluIGR1cGxpY2F0
ZXMuCi0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPj4gY2FzZXNUb0FkZDsK
KyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBjYXNlc1RvQWRkOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBvcmlnaW5hbENhc2VzVG9BZGQuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG15Q2FzZSA9IFdURk1vdmUob3JpZ2luYWxD
YXNlc1RvQWRkW2ldKTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG15Q2FzZSA9IFdURk1v
dmUob3JpZ2luYWxDYXNlc1RvQWRkW2ldKTsKIAogICAgICAgICAvLyBBZGQgaXQgb25seSBpZiBp
dCBpcyBub3QgcmVwbGFjZWQgYnkgdGhlIHN1YnNlcXVlbnQgY2FzZXMgaW4gdGhlIGxpc3QuCiAg
ICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTI4Nyw4ICsyOTAsNyBAQCBBY2Nlc3NHZW5l
cmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjphZGRDYXNlcygKICAgICAgICAgY2FzZXNU
b0FkZC5hcHBlbmQoV1RGTW92ZShteUNhc2UpKTsKICAgICB9CiAKLSAgICBpZiAoUG9seW1vcnBo
aWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiY2FzZXNUb0FkZDog
IiwgbGlzdER1bXAoY2FzZXNUb0FkZCksICJcbiIpOworICAgIGRhdGFMb2dMbklmKFBvbHltb3Jw
aGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UsICJjYXNlc1RvQWRkOiAiLCBsaXN0RHVtcChjYXNl
c1RvQWRkKSk7CiAKICAgICAvLyBJZiB0aGVyZSBhcmVuJ3QgYW55IGNhc2VzIHRvIGFkZCwgdGhl
biBmYWlsIG9uIHRoZSBncm91bmRzIHRoYXQgdGhlcmUncyBubyBwb2ludCB0byBnZW5lcmF0aW5n
IGEKICAgICAvLyBuZXcgc3R1YiB0aGF0IHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbGQgb25l
LiBSZXR1cm5pbmcgbnVsbCBzaG91bGQgdGVsbCB0aGUgY2FsbGVyIHRvIGp1c3QKQEAgLTMzOSwx
NiArMzQxLDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFk
ZENhc2VzKAogICAgICAgICBtX2xpc3QuYXBwZW5kKFdURk1vdmUoY2FzZVRvQWRkKSk7CiAgICAg
fQogICAgIAotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAg
ICAgICBkYXRhTG9nKCJBZnRlciBhZGRDYXNlczogbV9saXN0OiAiLCBsaXN0RHVtcChtX2xpc3Qp
LCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJi
b3NlLCAiQWZ0ZXIgYWRkQ2FzZXM6IG1fbGlzdDogIiwgbGlzdER1bXAobV9saXN0KSk7CiAKICAg
ICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6QnVmZmVyZWQ7CiB9CiAKIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OmFkZENhc2UoCi0gICAgY29uc3QgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IG5ld0FjY2VzcykKKyAgICBjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBSZWY8QWNjZXNzQ2FzZT4gbmV3QWNjZXNzKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IG5ld0FjY2Vzc2VzOworICAgIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzQ2FzZT4sIDI+IG5ld0FjY2Vzc2VzOwogICAgIG5ld0FjY2Vzc2VzLmFwcGVuZChXVEZNb3Zl
KG5ld0FjY2VzcykpOwogICAgIHJldHVybiBhZGRDYXNlcyhsb2NrZXIsIHZtLCBjb2RlQmxvY2ss
IHN0dWJJbmZvLCBXVEZNb3ZlKG5ld0FjY2Vzc2VzKSk7CiB9CkBAIC0zNTksOSArMzYwLDEyIEBA
IGJvb2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CiAgICAgICAg
IGlmICghYXQoaSkudmlzaXRXZWFrKHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgd2Vha1JlZmVyZW5jZSA6
IG1fd2Vha1JlZmVyZW5jZXMpIHsKLSAgICAgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHdlYWtS
ZWZlcmVuY2UuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3N0
dWJSb3V0aW5lKSB7CisgICAgICAgIGZvciAoU3RydWN0dXJlSUQgd2Vha1JlZmVyZW5jZSA6IG1f
c3R1YlJvdXRpbmUtPndlYWtTdHJ1Y3R1cmVzKCkpIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKHdlYWtSZWZlcmVuY2UpOworICAgICAgICAgICAg
aWYgKCF2bS5oZWFwLmlzTWFya2VkKHN0cnVjdHVyZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDE5LDgg
KzQyMyw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2Vu
ZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAgIGlmIChQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJSZWdlbmVyYXRlIHdpdGgg
bV9saXN0OiAiLCBsaXN0RHVtcChtX2xpc3QpLCAiXG4iKTsKKyAgICBkYXRhTG9nTG5JZihQb2x5
bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlLCAiUmVnZW5lcmF0ZSB3aXRoIG1fbGlzdDog
IiwgbGlzdER1bXAobV9saXN0KSk7CiAKICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgc3RhdGUo
dm0sIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpOwogCkBAIC00NDAsNyArNDQzLDcgQEAgQWNjZXNz
R2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2MKICAgICB1bnNpZ25lZCBzcmNJbmRleCA9IDA7CiAgICAgdW5zaWdu
ZWQgZHN0SW5kZXggPSAwOwogICAgIHdoaWxlIChzcmNJbmRleCA8IG1fbGlzdC5zaXplKCkpIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHNvbWVDYXNlID0gV1RGTW92ZSht
X2xpc3Rbc3JjSW5kZXgrK10pOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gc29tZUNhc2Ug
PSBXVEZNb3ZlKG1fbGlzdFtzcmNJbmRleCsrXSk7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0
aGUgY2FzZSBoYWQgYmVlbiBnZW5lcmF0ZWQsIHRoZW4gd2UgaGF2ZSB0byBrZWVwIHRoZSBvcmln
aW5hbCBpbiBtX2xpc3QgaW4gY2FzZSB3ZQogICAgICAgICAvLyBmYWlsIHRvIHJlZ2VuZXJhdGUu
IFRoYXQgY2FzZSBtYXkgaGF2ZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBieSB0aGUg
Y29kZSB0aGF0IGl0CkBAIC00OTEsNiArNDk0LDggQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQ
b2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MK
ICAgICBpZiAoc3R1YkluZm8udi50aGlzVGFnR1BSICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAg
IGFsbG9jYXRvci5sb2NrKHN0dWJJbmZvLnYudGhpc1RhZ0dQUik7CiAjZW5kaWYKKyAgICBpZiAo
c3R1YkluZm8ubV9zdHViSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBhbGxvY2F0
b3IubG9jayhzdHViSW5mby5tX3N0dWJJbmZvR1BSKTsKIAogICAgIHN0YXRlLnNjcmF0Y2hHUFIg
PSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7CiAKQEAgLTUwMCwxMiArNTA1LDYgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZShjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQotICAgIAotICAgIENDYWxsSGVscGVycyBqaXQoY29kZUJsb2NrKTsKLSAgICBzdGF0ZS5q
aXQgPSAmaml0OwotCi0gICAgc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZSA9Ci0g
ICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwog
CiAgICAgYm9vbCBnZW5lcmF0ZWRGaW5hbENvZGUgPSBmYWxzZTsKIApAQCAtNTE5LDE0ICs1MTgs
NDMgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0
ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2MKICAgICAgICAgZ2VuZXJhdGVkRmluYWxDb2Rl
ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVy
Ym9zZSkKLSAgICAgICAgZGF0YUxvZygiT3B0aW1pemVkIGNhc2VzOiAiLCBsaXN0RHVtcChjYXNl
cyksICJcbiIpOwotICAgIAorICAgIGRhdGFMb2dMbklmKFBvbHltb3JwaGljQWNjZXNzSW50ZXJu
YWw6OnZlcmJvc2UsICJPcHRpbWl6ZWQgY2FzZXM6ICIsIGxpc3REdW1wKGNhc2VzKSk7CisKKyAg
ICBib29sIGRvZXNDYWxscyA9IGZhbHNlOworICAgIGJvb2wgZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHMgPSBmYWxzZTsKKyAgICBib29sIGNhbkJlU2hhcmVkID0gdHJ1ZTsKKyAgICBWZWN0b3I8SlND
ZWxsKj4gY2VsbHNUb01hcms7CisgICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiBr
ZXlzKGNhc2VzLnNpemUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0
byYgZW50cnkgOiBjYXNlcykgeworICAgICAgICBkb2VzQ2FsbHMgfD0gZW50cnktPmRvZXNDYWxs
cyh2bSwgJmNlbGxzVG9NYXJrKTsKKyAgICAgICAgc3dpdGNoIChlbnRyeS0+dHlwZSgpKSB7Cisg
ICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6R2V0dGVyOgorICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6
OlNldHRlcjoKKyAgICAgICAgICAgIC8vIEdldHRlciAvIFNldHRlciByZWxpZXMgb24gc3RhY2st
cG9pbnRlciBhZGp1c3RtZW50LCB3aGljaCBpcyB0aWVkIHRvIHRoZSBsaW5rZWQgQ29kZUJsb2Nr
LCB3aGljaCBtYWtlcyB0aGlzIGNvZGUgdW5zaGFyZWFibGUuCisgICAgICAgICAgICBjYW5CZVNo
YXJlZCA9IGZhbHNlOworICAgICAgICAgICAgZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6Q3VzdG9tVmFs
dWVHZXR0ZXI6CisgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6Q3VzdG9tQWNjZXNzb3JHZXR0ZXI6
CisgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6Q3VzdG9tVmFsdWVTZXR0ZXI6CisgICAgICAgIGNh
c2UgQWNjZXNzQ2FzZTo6Q3VzdG9tQWNjZXNzb3JTZXR0ZXI6CisgICAgICAgICAgICAvLyBDdXN0
b20gZ2V0dGVyIC8gc2V0dGVyIGVtaXRzIEpTR2xvYmFsT2JqZWN0IHBvaW50ZXIsIHdoaWNoIGlz
IHRpZWQgdG8gdGhlIGxpbmtlZCBDb2RlQmxvY2suCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9
IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBrZXlzW2luZGV4XSA9IGVudHJ5OworICAgICAg
ICArK2luZGV4OworICAgIH0KKyAgICBzdGF0ZS5tX2RvZXNDYWxscyA9IGRvZXNDYWxsczsKKyAg
ICBzdGF0ZS5tX2RvZXNKU0dldHRlclNldHRlckNhbGxzID0gZG9lc0pTR2V0dGVyU2V0dGVyQ2Fs
bHM7CisKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlJ3JlIGNvbnZpbmNlZCB0aGF0ICdjYXNlcycg
Y29udGFpbnMgdGhlIGNhc2VzIHRoYXQgd2Ugd2FudCB0byBKSVQgbm93IGFuZCB3ZQogICAgIC8v
IHdvbid0IGNoYW5nZSB0aGF0IHNldCBhbnltb3JlLgogICAgIAogICAgIGJvb2wgYWxsR3VhcmRl
ZEJ5U3RydWN0dXJlQ2hlY2sgPSB0cnVlOwotICAgIGJvb2wgaGFzSlNHZXR0ZXJTZXR0ZXJDYWxs
ID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc0ludDMyUHJvcGVydHlDaGVjayA9IGZhbHNlOwogICAg
IGJvb2wgbmVlZHNTdHJpbmdQcm9wZXJ0eUNoZWNrID0gZmFsc2U7CiAgICAgYm9vbCBuZWVkc1N5
bWJvbFByb3BlcnR5Q2hlY2sgPSBmYWxzZTsKQEAgLTU0MiwxMCArNTcwLDQ3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9jCiAgICAgICAgIH0KICAgICAgICAgY29tbWl0KGxvY2tlciwgdm0sIHN0
YXRlLndhdGNocG9pbnRzLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCAqbmV3Q2FzZSk7CiAgICAgICAg
IGFsbEd1YXJkZWRCeVN0cnVjdHVyZUNoZWNrICY9IG5ld0Nhc2UtPmd1YXJkZWRCeVN0cnVjdHVy
ZUNoZWNrKHN0dWJJbmZvKTsKLSAgICAgICAgaWYgKG5ld0Nhc2UtPnR5cGUoKSA9PSBBY2Nlc3ND
YXNlOjpHZXR0ZXIgfHwgbmV3Q2FzZS0+dHlwZSgpID09IEFjY2Vzc0Nhc2U6OlNldHRlcikKLSAg
ICAgICAgICAgIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCA9IHRydWU7CisgICAgICAgIGlmIChuZXdD
YXNlLT51c2VzUG9seVByb3RvKCkpCisgICAgICAgICAgICBjYW5CZVNoYXJlZCA9IGZhbHNlOwor
ICAgIH0KKyAgICBpZiAobmVlZHNTeW1ib2xQcm9wZXJ0eUNoZWNrIHx8IG5lZWRzU3RyaW5nUHJv
cGVydHlDaGVjayB8fCBuZWVkc0ludDMyUHJvcGVydHlDaGVjaykKKyAgICAgICAgY2FuQmVTaGFy
ZWQgPSBmYWxzZTsKKworICAgIGF1dG8gZmluaXNoQ29kZUdlbmVyYXRpb24gPSBbJl0oUmVmUHRy
PFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU+JiYgc3R1YikgeworICAgICAgICBtX3N0
dWJSb3V0aW5lID0gV1RGTW92ZShzdHViKTsKKyAgICAgICAgbV93YXRjaHBvaW50cyA9IFdURk1v
dmUoc3RhdGUud2F0Y2hwb2ludHMpOworICAgICAgICBkYXRhTG9nTG5JZihQb2x5bW9ycGhpY0Fj
Y2Vzc0ludGVybmFsOjp2ZXJib3NlLCAiUmV0dXJuaW5nOiAiLCBtX3N0dWJSb3V0aW5lLT5jb2Rl
KCkpOworCisgICAgICAgIG1fbGlzdCA9IFdURk1vdmUoY2FzZXMpOworICAgICAgICBtX2xpc3Qu
c2hyaW5rVG9GaXQoKTsKKworICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpLaW5kIHJl
c3VsdEtpbmQ7CisgICAgICAgIGlmIChtX2xpc3Quc2l6ZSgpID49IE9wdGlvbnM6Om1heEFjY2Vz
c1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkKKyAgICAgICAgICAgIHJl
c3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0OjpHZW5lcmF0ZWRGaW5hbENvZGU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0OjpHZW5lcmF0ZWROZXdDb2RlOworCisgICAgICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0KHJlc3VsdEtpbmQsIG1fc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgIH07
CisKKyAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7CisgICAgc3RhdGUuaml0ID0gJmpp
dDsKKworICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKSB7CisgICAgICAgIGlmIChzdGF0
ZS5tX2RvZXNKU0dldHRlclNldHRlckNhbGxzKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIG5v
IGd1YXJhbnRlZSB0aGF0IHN0YWNrLXBvaW50ZXIgaXMgdGhlIGV4cGVjdGVkIG9uZS4gVGhpcyBp
cyBub3QgYSBwcm9ibGVtIGlmIHdlIGRvIG5vdCBoYXZlIEpTIGdldHRlciAvIHNldHRlciBjYWxs
cyBzaW5jZSBzdGFjay1wb2ludGVyIGlzCisgICAgICAgICAgICAvLyBhIGNhbGxlZS1zYXZlIHJl
Z2lzdGVyIGluIHRoZSBDIGNhbGxpbmcgY29udmVuc2lvbi4gSG93ZXZlciwgb3VyIEpTIGV4ZWN1
dGFibGUgY2FsbCBkb2VzIG5vdCBzYXZlIHN0YWNrLXBvaW50ZXIuIFNvIHdlIGFyZSBhZGp1c3Rp
bmcgc3RhY2stcG9pbnRlciBhZnRlcgorICAgICAgICAgICAgLy8gSlMgZ2V0dGVyIC8gc2V0dGVy
IGNhbGxzLiBCdXQgdGhpcyBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5pdGlhbCBzdGFj
ay1wb2ludGVyLCBhbmQgbWFrZXMgUEFDIHRhZ2dpbmcgYnJva2VuLgorICAgICAgICAgICAgLy8g
VG8gZW5zdXJlIFBBQy10YWdnaW5nIHdvcmssIHdlIGZpcnN0IGFkanVzdCBzdGFjay1wb2ludGVy
IHRvIHRoZSBhcHByb3ByaWF0ZSBvbmUuCisgICAgICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwog
ICAgIH0KIAorICAgIHN0YXRlLnByZXNlcnZlZFJldXNlZFJlZ2lzdGVyU3RhdGUgPQorICAgICAg
ICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKKyAgICAK
ICAgICBpZiAoY2FzZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgdW5s
aWtlbHksIGJ1dCB3ZSBtYWtlIGl0IGxlZ2FsIGFueXdheS4KICAgICAgICAgc3RhdGUuZmFpbEFu
ZFJlcGF0Y2guYXBwZW5kKGppdC5qdW1wKCkpOwpAQCAtNjkwLDcgKzc1NSw3IEBAIEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoY29uc3QgR0NTYWZl
Q29uY3VycmVudEpTTG9jCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0
aW9uSGFuZGxlcnMgPSBudWxscHRyOwogICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZzsKLSAgICBpZiAoc3RhdGUubmVlZHNUb1Jlc3Rv
cmVSZWdpc3RlcnNJZkV4Y2VwdGlvbigpICYmIGhhc0pTR2V0dGVyU2V0dGVyQ2FsbCkgeworICAg
IGlmIChzdGF0ZS5uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uKCkgJiYgZG9lc0pT
R2V0dGVyU2V0dGVyQ2FsbHMpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuCiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgd2hl
biBkb2luZyBnZW5lcmljVW53aW5kIGZyb20gYSBwdXJlIEpTIGdldHRlci9zZXR0ZXIgLgogICAg
ICAgICAvLyBOb3RlIGFsc28gdGhhdCB0aGlzIGlzIG5vdCByZWFjaGFibGUgZnJvbSBjdXN0b20g
Z2V0dGVyL3NldHRlci4gQ3VzdG9tIGdldHRlci9zZXR0ZXJzIHdpbGwgaGF2ZSAKQEAgLTczMCw0
OCArNzk1LDYzIEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9jCiAgICAgICAgIGNhbGxTaXRlSW5k
ZXhGb3JFeGNlcHRpb25IYW5kbGluZyA9IHN0YXRlLmNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25I
YW5kbGluZygpOwogICAgIH0KIAorICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKSB7Cisg
ICAgICAgIGZhaWx1cmUubGluaygmaml0KTsKKyAgICAgICAgLy8gSW4gQVJNNjQsIHdlIGRvIG5v
dCBwdXNoIGFueXRoaW5nIG9uIHN0YWNrIHNwZWNpYWxseS4KKyAgICAgICAgLy8gU28gd2UgY2Fu
IGp1c3QganVtcCB0byB0aGUgc2xvdy1wYXRoIGV2ZW4gdGhvdWdoIHRoaXMgdGh1bmsgaXMgY2Fs
bGVkIChub3QganVtcGVkKS4KKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0YWlsIGNhbGwg
dG8gdGhlIHRodW5rIHdoaWNoIGNhbGxzIHRoZSBzbG93IHBhdGggZnVuY3Rpb24uCisgICAgICAg
IC8vIEFuZCB3ZSBzaG91bGQgZWxpbWluYXRlIElDIHNsb3ctcGF0aCBnZW5lcmF0aW9uIGluIEJh
c2VsaW5lSklULgorICAgICAgICBqaXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm8ubV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd1BhdGhT
dGFydExvY2F0aW9uKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfQorCisgICAgUmVm
UHRyPFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU+IHN0dWI7CisgICAgRml4ZWRWZWN0
b3I8U3RydWN0dXJlSUQ+IHdlYWtTdHJ1Y3R1cmVzKFdURk1vdmUoc3RhdGUud2Vha1N0cnVjdHVy
ZXMpKTsKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSAmJiBjYW5CZVNoYXJlZCkgewor
ICAgICAgICBTaGFyZWRKSVRTdHViU2V0OjpTZWFyY2hlciBzZWFyY2hlciB7CisgICAgICAgICAg
ICBzdHViSW5mby5iYXNlR1BSLAorICAgICAgICAgICAgc3R1YkluZm8udmFsdWVHUFIsCisgICAg
ICAgICAgICBzdHViSW5mby5yZWdzLnRoaXNHUFIsCisgICAgICAgICAgICBzdHViSW5mby5tX3N0
dWJJbmZvR1BSLAorICAgICAgICAgICAgc3R1YkluZm8udXNlZFJlZ2lzdGVycywKKyAgICAgICAg
ICAgIGtleXMsCisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlcywKKyAgICAgICAgfTsKKyAgICAg
ICAgc3R1YiA9IHZtLm1fc2hhcmVkSklUU3R1YnMtPmZpbmQoc2VhcmNoZXIpOworICAgICAgICBp
ZiAoc3R1YikgeworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBoaWNBY2Nlc3NJbnRl
cm5hbDo6dmVyYm9zZSwgIkZvdW5kIGV4aXN0aW5nIGNvZGUgc3R1YiAiLCBzdHViLT5jb2RlKCkp
OworICAgICAgICAgICAgcmV0dXJuIGZpbmlzaENvZGVHZW5lcmF0aW9uKFdURk1vdmUoc3R1Yikp
OworICAgICAgICB9CisgICAgfQorCiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgY29k
ZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAg
ICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQotICAgICAgICAgICAg
ZGF0YUxvZygiRGlkIGZhaWwgdG8gYWxsb2NhdGUuXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYo
UG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgIkRpZCBmYWlsIHRvIGFsbG9jYXRl
LiIpOwogICAgICAgICByZXR1cm4gQWNjZXNzR2VuZXJhdGlvblJlc3VsdDo6R2F2ZVVwOwogICAg
IH0KIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHN1Y2Nlc3NMYWJl
bCA9IHN0dWJJbmZvLmRvbmVMb2NhdGlvbjsKIAotICAgIGxpbmtCdWZmZXIubGluayhzdGF0ZS5z
dWNjZXNzLCBzdWNjZXNzTGFiZWwpOwotCi0gICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0
dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0
YUlDKCkpCisgICAgICAgIEFTU0VSVChzdGF0ZS5zdWNjZXNzLmVtcHR5KCkpOworICAgIGVsc2Ug
eworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc3RhdGUuc3VjY2Vzcywgc3VjY2Vzc0xhYmVsKTsK
KyAgICAgICAgbGlua0J1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7CisgICAgfQogICAgIAotICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFs
Ojp2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKEZ1bGxDb2RlT3JpZ2luKGNvZGVCbG9jaywgc3R1
YkluZm8uY29kZU9yaWdpbiksICI6IEdlbmVyYXRpbmcgcG9seW1vcnBoaWMgYWNjZXNzIHN0dWIg
Zm9yICIsIGxpc3REdW1wKGNhc2VzKSwgIlxuIik7CisgICAgZGF0YUxvZ0xuSWYoUG9seW1vcnBo
aWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSwgRnVsbENvZGVPcmlnaW4oY29kZUJsb2NrLCBzdHVi
SW5mby5jb2RlT3JpZ2luKSwgIjogR2VuZXJhdGluZyBwb2x5bW9ycGhpYyBhY2Nlc3Mgc3R1YiBm
b3IgIiwgbGlzdER1bXAoY2FzZXMpKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4gY29kZSA9IEZJTkFMSVpFX0NPREVfRk9SKAogICAgICAgICBjb2Rl
QmxvY2ssIGxpbmtCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiJXMiLCB0
b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZvciAiLCAqY29kZUJsb2NrLCAiICIsIHN0dWJJbmZvLmNv
ZGVPcmlnaW4sICIgd2l0aCByZXR1cm4gcG9pbnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAiLCBsaXN0
RHVtcChjYXNlcykpLmRhdGEoKSk7Ci0KLSAgICBib29sIGRvZXNDYWxscyA9IGZhbHNlOwotICAg
IFZlY3RvcjxKU0NlbGwqPiBjZWxsc1RvTWFyazsKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2Fz
ZXMpCi0gICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKHZtLCAmY2VsbHNUb01h
cmspOwotICAgIAotICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2Rl
LCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBXVEZNb3ZlKHN0YXRlLm1f
Y2FsbExpbmtJbmZvcyksIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxT
aXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7Ci0gICAgbV93YXRjaHBvaW50cyA9IFdURk1v
dmUoc3RhdGUud2F0Y2hwb2ludHMpOwotICAgIGlmICghc3RhdGUud2Vha1JlZmVyZW5jZXMuaXNF
bXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gRml4ZWRWZWN0b3I8V3JpdGVCYXJy
aWVyPEpTQ2VsbD4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKLSAgICBpZiAoUG9s
eW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiUmV0dXJu
aW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCi0gICAgbV9saXN0ID0gV1RGTW92ZShj
YXNlcyk7Ci0gICAgbV9saXN0LnNocmlua1RvRml0KCk7Ci0gICAgCi0gICAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdDo6S2luZCByZXN1bHRLaW5kOwotICAgIGlmIChtX2xpc3Quc2l6ZSgpID49IE9w
dGlvbnM6Om1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHx8IGdlbmVyYXRlZEZpbmFsQ29kZSkK
LSAgICAgICAgcmVzdWx0S2luZCA9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQ6OkdlbmVyYXRlZEZp
bmFsQ29kZTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdEtpbmQgPSBBY2Nlc3NHZW5lcmF0aW9u
UmVzdWx0OjpHZW5lcmF0ZWROZXdDb2RlOwotICAgIAotICAgIHJldHVybiBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0KHJlc3VsdEtpbmQsIGNvZGUuY29kZSgpKTsKKyAgICBzdHViID0gY3JlYXRlSUNK
SVRTdHViUm91dGluZShjb2RlLCBXVEZNb3ZlKGtleXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVz
KSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgV1RGTW92ZShzdGF0ZS5t
X2NhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOworCisgICAgaWYgKGNvZGVCbG9jay0+dXNl
RGF0YUlDKCkpIHsKKyAgICAgICAgaWYgKGNhbkJlU2hhcmVkKQorICAgICAgICAgICAgdm0ubV9z
aGFyZWRKSVRTdHVicy0+YWRkKFNoYXJlZEpJVFN0dWJTZXQ6Okhhc2g6OktleShzdHViSW5mby5i
YXNlR1BSLCBzdHViSW5mby52YWx1ZUdQUiwgc3R1YkluZm8ucmVncy50aGlzR1BSLCBzdHViSW5m
by5tX3N0dWJJbmZvR1BSLCBzdHViSW5mby51c2VkUmVnaXN0ZXJzLCBzdHViLmdldCgpKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZpbmlzaENvZGVHZW5lcmF0aW9uKFdURk1vdmUoc3R1YikpOwog
fQogCiB2b2lkIFBvbHltb3JwaGljQWNjZXNzOjphYm91dFRvRGllKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggMjkyMDMy
NmRjYzkxNTQ3NGIzZjFlZWI3ZjcyNWU2YWIzNGFlY2I0MS4uNTA1ZmFiMzdmODg5NDAxOTM5MTUz
MjQ3MmNjMDNhMTk2Y2M1MWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKQEAgLTE0MSwxMCArMTQxLDEwIEBAIGNsYXNzIFBv
bHltb3JwaGljQWNjZXNzIHsKICAgICAvLyBXaGVuIHRoaXMgZmFpbHMgKHJldHVybnMgR2F2ZVVw
KSwgdGhpcyB3aWxsIGxlYXZlIHRoZSBvbGQgc3R1YiBpbnRhY3QgYnV0IHlvdSBzaG91bGQgbm90
IHRyeQogICAgIC8vIHRvIGNhbGwgdGhpcyBtZXRob2QgYWdhaW4gZm9yIHRoYXQgUG9seW1vcnBo
aWNBY2Nlc3MgaW5zdGFuY2UuCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBhZGRDYXNlcygK
LSAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4s
IDI+KTsKKyAgICAgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4sIDI+
KTsKIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQ2FzZSgKLSAgICAgICAgY29uc3Qg
R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYsIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPik7CisgICAgICAgIGNvbnN0IEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8m
LCBSZWY8QWNjZXNzQ2FzZT4pOwogICAgIAogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVn
ZW5lcmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgRUNNQU1vZGUsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgCkBA
IC0xNzksMTYgKzE3OSwxNSBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzcyB7CiAgICAgZnJpZW5k
IGNsYXNzIENvZGVCbG9jazsKICAgICBmcmllbmQgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTsKICAgICAKLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4s
IDI+IExpc3RUeXBlOworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPiwgMj4g
TGlzdFR5cGU7CiAgICAgCiAgICAgdm9pZCBjb21taXQoCiAgICAgICAgIGNvbnN0IEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRzT25TdHJ1
Y3R1cmVTdHViSW5mbz4mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsCiAgICAgICAg
IEFjY2Vzc0Nhc2UmKTsKIAogICAgIExpc3RUeXBlIG1fbGlzdDsKLSAgICBSZWZQdHI8SklUU3R1
YlJvdXRpbmU+IG1fc3R1YlJvdXRpbmU7CisgICAgUmVmUHRyPFBvbHltb3JwaGljQWNjZXNzSklU
U3R1YlJvdXRpbmU+IG1fc3R1YlJvdXRpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9p
bnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4gbV93YXRjaHBvaW50czsKLSAgICBGaXhlZFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPj4gbV93ZWFrUmVmZXJlbmNlczsKIH07CiAKIHN0cnVjdCBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUgewpAQCAtMTk2LDYgKzE5NSw4IEBAIHN0cnVjdCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUgewogICAgICAgICA6IG1fdm0odm0pIAogICAgICAgICAsIG1fZ2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCkKICAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAg
ICAsIG1fZG9lc0pTR2V0dGVyU2V0dGVyQ2FsbHMoZmFsc2UpCisgICAgICAgICwgbV9kb2VzQ2Fs
bHMoZmFsc2UpCiAgICAgICAgICwgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2Vw
dGlvbkhhbmRsaW5nKGZhbHNlKQogICAgICAgICAsIG1fbmVlZHNUb1Jlc3RvcmVSZWdpc3RlcnNJ
ZkV4Y2VwdGlvbihmYWxzZSkKICAgICAgICAgLCBtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KGZh
bHNlKQpAQCAtMjIzLDEwICsyMjQsMTIgQEAgc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7
CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgeyBJbnZhbGlkRlBSUmVnIH07CiAgICAgRUNNQU1vZGUg
bV9lY21hTW9kZSB7IEVDTUFNb2RlOjpzbG9wcHkoKSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
YXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+IHdhdGNocG9pbnRzOwotICAgIFZlY3RvcjxX
cml0ZUJhcnJpZXI8SlNDZWxsPj4gd2Vha1JlZmVyZW5jZXM7CisgICAgVmVjdG9yPFN0cnVjdHVy
ZUlEPiB3ZWFrU3RydWN0dXJlczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5m
b3M7CisgICAgYm9vbCBtX2RvZXNKU0dldHRlclNldHRlckNhbGxzIDogMTsKKyAgICBib29sIG1f
ZG9lc0NhbGxzIDogMTsKIAotICAgIHZvaWQgaW5zdGFsbFdhdGNocG9pbnQoY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24mKTsKKyAgICB2b2lkIGluc3RhbGxXYXRjaHBvaW50KENvZGVCbG9j
ayosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAKICAgICB2b2lkIHJlc3RvcmVT
Y3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CkBAIC0yNDgsNyArMjUxLDcgQEAgc3RydWN0
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSB7CiAgICAgY29uc3QgUmVnaXN0ZXJTZXQmIGNhbGN1bGF0
ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKIAogICAgIFNwaWxs
U3RhdGUgcHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJT
ZXQmIGV4dHJhID0geyB9KTsKLSAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1Rv
U3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoKTsKKyAgICBTcGlsbFN0YXRlIHByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsV2l0aG91dEV4Y2VwdGlvbnMoY29uc3QgUmVnaXN0
ZXJTZXQmIGV4dHJhID0geyB9KTsKIAogICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9t
U3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbihjb25zdCBTcGlsbFN0YXRlJik7CiAgICAg
dm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3QgU3BpbGxTdGF0
ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiBkb250UmVzdG9yZSA9IHsgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKaW5k
ZXggY2MyOTczYzk0ZTExNjJhMzg5ZTJlZjUwZWVhNmEzYjM0ZTc1ZmE5ZC4uNGJmNzgwZWQzMTc2
NmVkZTZiY2M1NjA0NDZhNTA3OWFjYmNjMTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcApAQCAtMzgsMTkgKzM4
LDE5IEBAIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OlByb3h5YWJsZUFjY2Vzc0Nhc2UoVk0mIHZtLCBK
U0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIGFjY2VzCiAgICAgbV92aWFQcm94eSA9IHZpYVByb3h5
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6
Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQs
IGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIFJlZlB0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4mJiBwcm90b3R5cGVBY2Nlc3NDaGFpbikKK1JlZjxBY2Nlc3NDYXNl
PiBQcm94eWFibGVBY2Nlc3NDYXNlOjpjcmVhdGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nl
c3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRk
aXRpb25hbFNldCwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiYmIHByb3RvdHlwZUFjY2Vz
c0NoYWluKQogewogICAgIEFTU0VSVCh0eXBlID09IExvYWQgfHwgdHlwZSA9PSBNaXNzIHx8IHR5
cGUgPT0gR2V0R2V0dGVyIHx8IHR5cGUgPT0gUmVwbGFjZSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgUHJveHlhYmxlQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5
cGUsIGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5
LCBhZGRpdGlvbmFsU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFByb3h5YWJsZUFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBp
ZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRk
aXRpb25hbFNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsKIH0KIAogUHJveHlh
YmxlQWNjZXNzQ2FzZTo6flByb3h5YWJsZUFjY2Vzc0Nhc2UoKQogewogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8QWNjZXNzQ2FzZT4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y2xvbmUoKSBjb25zdAorUmVm
PEFjY2Vzc0Nhc2U+IFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNsb25lKCkgY29uc3QKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJveHlhYmxlQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBQcm94eWFibGVB
Y2Nlc3NDYXNlKCp0aGlzKSk7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IFByb3h5
YWJsZUFjY2Vzc0Nhc2UoKnRoaXMpKTsKICAgICByZXN1bHQtPnJlc2V0U3RhdGUoKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmgKaW5kZXggZGMzOWUyNmNhMmY0YjJiN2FiYTEyYjVhNTVm
MzI2NjQ0MTBlZmE1Yy4uZTg0Mzg1Y2E3NWM5Zjc1MmU4ZThlMTZjZGRlMGFiY2FjN2JjYzRkMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3h5YWJsZUFjY2Vz
c0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJveHlhYmxlQWNj
ZXNzQ2FzZS5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgUHJveHlhYmxlQWNjZXNzQ2FzZSA6
IHB1YmxpYyBBY2Nlc3NDYXNlIHsKIAogICAgIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FkZGl0aW9uYWxTZXQuZ2V0KCk7IH0KIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKFZNJiwgSlNDZWxsKiwg
QWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVy
ZSosIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0KCksCisgICAgc3RhdGljIFJlZjxBY2Nlc3NDYXNlPiBjcmVhdGUoVk0mLCBKU0Nl
bGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwgU3Ry
dWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgYm9vbCB2aWFQcm94eSA9IGZhbHNlLCBXYXRjaHBv
aW50U2V0KiBhZGRpdGlvbmFsU2V0ID0gbnVsbHB0ciwgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0No
YWluPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGR1bXBJbXBsKFByaW50U3RyZWFtJiwgQ29t
bWFQcmludGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEFjY2Vzc0Nhc2U+IGNsb25lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB+UHJveHlhYmxlQWNjZXNzQ2FzZSgpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCBhZmFlNGU4NDJmYzdkNGRkMWVkZThlYmJjZWVlYmI0ZTI2ZGIyMmE0Li5j
NDU4M2QzZmY5ZjU0YzZiNmUxMzFhM2UwNDNkM2RmMjI0MThjMGY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTUy
LDYgKzUyLDcgQEAgU3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2kKICAgICAsIHByb3BlcnR5SXNJbnQz
MihmYWxzZSkKICAgICAsIHByb3BlcnR5SXNTeW1ib2woZmFsc2UpCiB7CisgICAgcmVncy50aGlz
R1BSID0gSW52YWxpZEdQUlJlZzsKIH0KIAogU3RydWN0dXJlU3R1YkluZm86On5TdHJ1Y3R1cmVT
dHViSW5mbygpCkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWJv
dXRUb0RpZSgpCiB9CiAKIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86
OmFkZEFjY2Vzc0Nhc2UoCi0gICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiBsb2Nr
ZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBF
Q01BTW9kZSBlY21hTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudCwgc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCisgICAgY29uc3QgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyJiBsb2NrZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBFQ01BTW9kZSBlY21hTW9kZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudCwg
UmVmUHRyPEFjY2Vzc0Nhc2U+IGFjY2Vzc0Nhc2UpCiB7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogCkBAIC0xNTUsNyArMTU2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBy
ZXN1bHQ7CiAgICAgICAgIAogICAgICAgICBpZiAobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpT
dHViKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwg
Y29kZUJsb2NrLCAqdGhpcywgV1RGTW92ZShhY2Nlc3NDYXNlKSk7CisgICAgICAgICAgICByZXN1
bHQgPSB1LnN0dWItPmFkZENhc2UobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgYWNjZXNz
Q2FzZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKFN0
cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiSGFkIHN0dWIsIHJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKQEAgLTE3MCw5ICsxNzEsOSBA
QCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3Jw
aGljQWNjZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
LCAyPiBhY2Nlc3NDYXNlczsKKyAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4s
IDI+IGFjY2Vzc0Nhc2VzOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZXNzQ2FzZT4gcHJldmlvdXNDYXNlID0gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0
dWJJbmZvKHZtLCBjb2RlQmxvY2ssIGlkZW50LCAqdGhpcyk7CisgICAgICAgICAgICBhdXRvIHBy
ZXZpb3VzQ2FzZSA9IEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJs
b2NrLCBpZGVudCwgKnRoaXMpOwogICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FzZSkKICAgICAg
ICAgICAgICAgICBhY2Nlc3NDYXNlcy5hcHBlbmQoV1RGTW92ZShwcmV2aW91c0Nhc2UpKTsKICAg
ICAgICAgICAgIApAQCAtMjc5LDcgKzI4MCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJl
c2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjCiAg
ICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6Tm9ybWFsQnlWYWwp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6Ci0gICAg
ICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CisgICAgICAgIHJlc2V0SW5zdGFuY2VPZihjb2Rl
QmxvY2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxl
dGVCeUlEOgogICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6
Tm9ybWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgKaW5kZXggYTk0MDVkY2ViOWYwMjRmMDQ5MjJhNjc1MzAxNDE4ZGE2ZWQzNzk4
OS4uMGY2Nzc1ZjE2ZmJjNWJhYWZkN2E2NzExN2M1MDE0ZmRmN2U2MzVjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTg4
LDcgKzg4LDcgQEAgY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewogICAgIHZvaWQgaW5pdFB1dEJ5
SWRSZXBsYWNlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVu
dGlmaWVyKTsKICAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAotICAgIEFjY2Vzc0dlbmVyYXRpb25S
ZXN1bHQgYWRkQWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4pOworICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQg
YWRkQWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8
QWNjZXNzQ2FzZT4pOwogCiAgICAgdm9pZCByZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJC
YXNlJiwgQ29kZUJsb2NrKik7CiAKQEAgLTEzNCwxMiArMTM0LDYgQEAgY2xhc3MgU3RydWN0dXJl
U3R1YkluZm8gewogICAgICAgICByZXR1cm4gaW5saW5lU2l6ZTsKICAgICB9CiAKLSAgICBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IHBhdGNoYWJsZUp1bXAoKQotICAgIHsgCi0g
ICAgICAgIEFTU0VSVChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YpOwotICAg
ICAgICByZXR1cm4gc3RhcnQuanVtcEF0T2Zmc2V0PEpTSW50ZXJuYWxQdHJUYWc+KDApOwotICAg
IH0KLQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncygpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MoCkBAIC0zNDUsMTkgKzMzOSwzMCBAQCBjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbyB7CiBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+IHN0YXJ0OyAvLyBUaGlzIGlzIGVpdGhlciB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBJ
QyBmb3IgKmJ5SWQgY2FjaGVzLiBvciB0aGUgbG9jYXRpb24gb2YgcGF0Y2hhYmxlIGp1bXAgZm9y
ICdpbnN0YW5jZW9mJyBjYWNoZXMuCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0
clRhZz4gZG9uZUxvY2F0aW9uOwotICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0clRh
Zz4gc2xvd1BhdGhDYWxsTG9jYXRpb247CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+IHNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIAorICAgIHVuaW9uIHsKKyAgICAg
ICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRoQ2FsbExvY2F0
aW9uOworICAgICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fc2xvd09wZXJhdGlv
bjsKKyAgICB9OworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiBtX2NvZGVQdHI7CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ29kZVB0cigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9jb2RlUHRyKTsg
fQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlU3R1YkluZm8sIHNsb3dQYXRoU3RhcnRM
b2NhdGlvbik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJhdGlvbigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVTdHViSW5mbywgbV9zbG93T3BlcmF0
aW9uKTsgfQorCiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVyczsKIAotICAgIEdQUlJlZyBi
YXNlR1BSOwotICAgIEdQUlJlZyB2YWx1ZUdQUjsKKyAgICBHUFJSZWcgYmFzZUdQUiB7IEludmFs
aWRHUFJSZWcgfTsKKyAgICBHUFJSZWcgdmFsdWVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAg
dW5pb24gewogICAgICAgICBHUFJSZWcgdGhpc0dQUjsKICAgICAgICAgR1BSUmVnIHByb3RvdHlw
ZUdQUjsKICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSOwogICAgICAgICBHUFJSZWcgYnJhbmRH
UFI7CiAgICAgfSByZWdzOworICAgIEdQUlJlZyBtX3N0dWJJbmZvR1BSIHsgSW52YWxpZEdQUlJl
ZyB9OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSOwogICAg
IC8vIEZJWE1FOiBbMzItYml0c10gQ2hlY2sgaWYgU3RydWN0dXJlU3R1YkluZm86OmJhc2VUYWdH
UFIgaXMgdXNlZCBzb21ld2hlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKaW5kZXggMTg3NTQzZDE2ZWQwNjgwOGI5YTE2MTdjNTdmZWVhZGQ3MjBjYTc2NC4u
OTZiZmM1YTMwMzlhMzYwZmQxMGFhNDA5NGY1NzA2MGE3Y2RhOWE5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMTU0LDYgKzE1NCwxMSBAQCBjbGFz
cyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBtX2NhbGxzLmFw
cGVuZChDYWxsTGlua1JlY29yZChmdW5jdGlvbkNhbGwsIGZ1bmN0aW9uKSk7CiAgICAgICAgIHJl
dHVybiBmdW5jdGlvbkNhbGw7CiAgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVs
cGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgY2FsbChhZGRyZXNzLCBPcGVy
YXRpb25QdHJUYWcpOworICAgIH0KICAgICAKICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApp
bmRleCAyNWExMjE5ZmRkNDNiZGZlM2MwN2I4YTI3NGRmOGUwZTU3ODhkMmI1Li42M2U5NTJlZjFl
MjRmOGVjZmYyMWMxMTNjYWZhNmQ5MDY0MWY4NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0yNjQsNiArMjY0LDY1IEBAIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKICAg
ICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1l
IFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2NsYXNzIENhbGxSZXN1bHRBbmRB
cmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIENhbGxTbG93UGF0aEdl
bmVyYXRvcjxKdW1wVHlwZSwgUmVzdWx0VHlwZT4geworcHVibGljOgorICAgIENhbGxSZXN1bHRB
bmRBcmd1bWVudHNTbG93UGF0aElDR2VuZXJhdG9yKAorICAgICAgICBKdW1wVHlwZSBmcm9tLCBT
cGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQYXRoT3BlcmF0aW9uQWRkcmVz
cywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3Bp
bGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LCBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBDYWxsU2xvd1BhdGhH
ZW5lcmF0b3I8SnVtcFR5cGUsIFJlc3VsdFR5cGU+KGZyb20sIGppdCwgc3BpbGxNb2RlLCByZXF1
aXJlbWVudCwgcmVzdWx0KQorICAgICAgICAsIG1fc3R1YkluZm9HUFIoc3R1YkluZm9HUFIpCisg
ICAgICAgICwgbV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3Moc2xvd1BhdGhPcGVyYXRpb25BZGRy
ZXNzKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9hcmd1bWVu
dHMoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikKKyAgICAgICAgLCBtX3N0
dWJJbmZvKHN0dWJJbmZvKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8
c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZvaWQgdW5wYWNrQW5kR2VuZXJhdGUoU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJbmRleC4uLj4p
CisgICAgeworICAgICAgICBBU1NFUlQoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJ
VCkpOworICAgICAgICB0aGlzLT5zZXRVcChqaXQpOworICAgICAgICBtX3N0dWJJbmZvLT5tX3Ns
b3dPcGVyYXRpb24gPSBtX2Z1bmN0aW9uOworICAgICAgICBqaXQtPm1faml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvR1BSKTsKKyAgICAg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8UmVzdWx0VHlwZSwgTm9SZXN1bHRUYWc+Ojp2
YWx1ZSkKKyAgICAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbjxGdW5jdGlvblR5cGU+KG1fc2xv
d1BhdGhPcGVyYXRpb25BZGRyZXNzLCBzdGQ6OmdldDxBcmd1bWVudHNJbmRleD4obV9hcmd1bWVu
dHMpLi4uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uPEZ1
bmN0aW9uVHlwZT4obV9zbG93UGF0aE9wZXJhdGlvbkFkZHJlc3MsIGV4dHJhY3RSZXN1bHQodGhp
cy0+bV9yZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsK
KyAgICAgICAgdGhpcy0+dGVhckRvd24oaml0KTsKKyAgICB9CisKKyAgICB2b2lkIGdlbmVyYXRl
SW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgZmluYWwKKyAgICB7CisgICAgICAgIHVucGFj
a0FuZEdlbmVyYXRlKGppdCwgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6
ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2YWx1ZT4oKSk7CisgICAgfQorCisgICAgR1BS
UmVnIG1fc3R1YkluZm9HUFI7CisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIG1fc2xvd1BhdGhP
cGVyYXRpb25BZGRyZXNzOworICAgIEZ1bmN0aW9uVHlwZSBtX2Z1bmN0aW9uOworICAgIHN0ZDo6
dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyog
bV9zdHViSW5mbzsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
K2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoSUNDYWxs
KAorICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgR1BSUmVnIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mg
c2xvd1BhdGhPcGVyYXRpb25BZGRyZXNzLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sCisgICAgU3Bp
bGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1
aXJlbWVudCwKKyAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykK
K3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhJ
Q0dlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMu
Li4+Pihmcm9tLCBqaXQsIHN0dWJJbmZvLCBzdHViSW5mb0dQUiwgc2xvd1BhdGhPcGVyYXRpb25B
ZGRyZXNzLCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBhcmd1bWVu
dHMuLi4pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rp
b25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Citpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aElDQ2FsbCgKKyAg
ICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIEdQUlJlZyBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIHNsb3dQ
YXRoT3BlcmF0aW9uQWRkcmVzcywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLAorICAgIFJlc3VsdFR5
cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQoreworICAgIHJldHVybiBzbG93UGF0
aElDQ2FsbChmcm9tLCBqaXQsIHN0dWJJbmZvLCBzdHViSW5mb0dQUiwgc2xvd1BhdGhPcGVyYXRp
b25BZGRyZXNzLCBmdW5jdGlvbiwgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1l
bnQ6OkNoZWNrTmVlZGVkLCByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRChERkdfSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA3ZTg3MzUzYzJm
MmUyMTUyZDkxZWRhMTZmNTEyMjVjM2ViNmZmMTRjLi40OTgzYTIyYWFmYjVjMDIyNmUyNTUxYjA4
NDNmODMzMDE3MjVkOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMTA0NiwyNCArMTA0NiwzNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlJZChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAK
ICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgQ2VsbFVz
ZTogeworICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOwogCisg
ICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdw
cigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9T
cGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5
cGUpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1h
dEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBKU1ZhbHVlUmVncyBiYXNl
UmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAKQEAgLTEwNzEsNyArMTA4Myw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeUlkKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkK
IAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2VSZWdzKTsKIAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwg
bm90Q2VsbCwgTmVlZFRvU3BpbGwsIGFjY2Vzc1R5cGUpOworICAgICAgICBjYWNoZWRHZXRCeUlk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBhY2Nl
c3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFG
b3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBA
IC0xMDg3LDI3ICsxMDk5LDM5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlk
Rmx1c2goTm9kZSogbm9kZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQogewogICAgIHN3aXRjaCAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVS
ZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwotCiAg
ICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8u
ZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigp
OworICAgICAgICB9CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJ
VENvbXBpbGVyOjpKdW1wKCksIERvbnRTcGlsbCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1
YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAo
KSwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIGJh
c2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwotCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAg
ICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CisgICAgICAgIEpT
VmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwpA
QCAtMTExNiw3ICsxMTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5SWRG
bHVzaChOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCiAKICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAK
LSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIERvbnRTcGls
bCwgYWNjZXNzVHlwZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBhY2Nlc3NUeXBlKTsKIAogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTMxLDE0ICsxMTU1LDE5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeUlkRmx1c2goTm9kZSogbm9kZSwgQWNj
ZXNzVHlwZSBhY2Nlc3NUeXBlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5
SWQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENl
bGxVc2UpIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOwogCisgICAgICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgIHN0dWJJbmZvR1BS
ID0gc3R1YkluZm8tPmdwcigpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CkBAIC0xMTQ4LDIw
ICsxMTc3LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUq
IG5vZGUpCiAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVn
aXN0ZXJzKCk7CiAKICAgICAgICAgSklURGVsQnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShiYXNlR1BSKSwgcmVzdWx0UmVncywgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLAorICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCByZXN1bHRSZWdzLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUik7CiAKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7
CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAg
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0g
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVy
KCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAg
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwg
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZW5k
aWYKIAogICAgICAgICBtX2ppdC5hZGREZWxCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAt
MTE5MCwyMiArMTIzNCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJ
ZChOb2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5v
ZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNl
KSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0KICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOwotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbm9kZS0+Y2hpbGQyKCkp
OwotCiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5
KTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGtleVJlZ3Mg
PSBrZXkuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOwogCisg
ICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisKICAgICAgICAgaWYgKG5l
ZWRzVHlwZUNoZWNrKG5vZGUtPmNoaWxkMigpLCBTcGVjQ2VsbCkpCiAgICAgICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChrZXlSZWdzKSk7CiAKQEAgLTEyMTQs
MjAgKzEyNjMsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5v
ZGUqIG5vZGUpCiAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2Vk
UmVnaXN0ZXJzKCk7CiAKICAgICAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlS
ZWdzLCByZXN1bHRSZWdzLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJz
LAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdz
LCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAKICAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpCisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
b3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlS
ZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICB9CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKKyAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OworICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICBtX2ppdC5hZGREZWxCeVZhbChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTEyNTYsOSArMTMyMCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluQnlJZChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9y
YXJ5PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2Us
IGJhc2UsIFBheWxvYWRXb3JkKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1
YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKQEAgLTEyNjgsMTQg
KzEzMzgsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlJZChOb2RlKiBub2Rl
KQogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdl
bmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJl
YW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRS
ZWdpc3RlcnMoKTsKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJh
c2VHUFIpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6
OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VH
UFIpLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogCi0gICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgZ2Vu
LnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKLSAgICAgICAg
TmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAg
ICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZv
KCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OworICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6
ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpD
aGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCkpOworICAgIH0KIAogICAgIG1faml0LmFkZEluQnlJZChnZW4sIHNsb3dQYXRoLmdldCgp
KTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0xMjg4
LDcgKzEzNjksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSog
bm9kZSkKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICBKU1ZhbHVlT3BlcmFuZCBrZXkodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEpT
VmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwga2V5KTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAKKyAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHViSW5m
b0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOwogICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKQEAgLTEyOTYsMTggKzEz
ODMsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkK
ICAgICBiYXNlLnVzZSgpOwogICAgIGtleS51c2UoKTsKIAorICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3Qgc2xvd0Nhc2VzOworCiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOwogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKLSAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIGtleVJlZ3Ms
IHJlc3VsdFJlZ3MpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklU
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRSZWdzLCBzdHViSW5mb0dQ
Uik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgIGdlbi5zbG93UGF0aEp1bXAoKSwgdGhpcywgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXpl
LAotICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsCi0gICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBn
ZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IGtleVJlZ3MpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLAorICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRy
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisgICAgfQogCiAg
ICAgbV9qaXQuYWRkSW5CeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNjAzLDkgKzM3MDIsMTkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlMKIHsKICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5v
ZGUsIG5vZGUtPm9wKCkgPT0gR2V0UHJpdmF0ZU5hbWUpOwogICAgIERGR19BU1NFUlQobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgbV9ncmFwaC5jaGlsZChub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9s
VXNlKTsKLSAgICBzcGVjdWxhdGVTeW1ib2wobV9ncmFwaC5jaGlsZChub2RlLCAxKSk7CiAKKyAg
ICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgSlNWYWx1ZVJlZ3NU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxp
ZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsK
KyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBz
dHViSW5mby0+Z3ByKCk7CisgICAgfQorICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkp
OworCiAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwog
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVy
YXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0t
PnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdp
c3RlcnMoKTsKQEAgLTM2MTYsMTQgKzM3MjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMK
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZSkpOwog
CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLCB1c2Vk
UmVnaXN0ZXJzLAotICAgICAgICBiYXNlLCBwcm9wZXJ0eSwgcmVzdWx0LnJlZ3MoKSk7CisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxT
aXRlLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
YmFzZSwgcHJvcGVydHksIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSKTsKICAgICBnZW4uc3R1Yklu
Zm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgIGF1dG8gbWFrZVNsb3dQYXRo
Q2FsbCA9IFsmXShhdXRvIGJhc2UpIHsKKyAgICBhdXRvIG1ha2VTbG93UGF0aElDQ2FsbCA9IFsm
XShhdXRvIGJhc2UpIHsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpE
RkdKSVQpKSB7CisgICAgICAgICAgICByZXR1cm4gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKKyAgICAg
ICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAor
ICAgICAgICAgICAgICAgIGJhc2UsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5LnBh
eWxvYWRHUFIoKSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emUsCiAgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLApAQCAtMzYzMSw4ICszNzQ2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFByaXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAg
ICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9
IGJhc2VJc0tub3duQ2VsbAotICAgICAgICA/IG1ha2VTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZS5wYXlsb2FkR1BSKCkpKQotICAgICAgICA6IG1ha2VTbG93UGF0aENh
bGwoYmFzZSk7CisgICAgICAgID8gbWFrZVNsb3dQYXRoSUNDYWxsKENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2UucGF5bG9hZEdQUigpKSkKKyAgICAgICAgOiBtYWtlU2xvd1BhdGhJQ0NhbGwo
YmFzZSk7CiAKICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zNjQ0LDI4ICsz
NzU5LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQo
Tm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkudXNlS2lu
ZCgpKSB7CiAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzdHViSW5mbzsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKIAorICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAg
ICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgfQogICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigp
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1
bHRSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCks
IE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZSk7CisgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgc3R1
YkluZm9HUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAo
KSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lKTsKIAogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAogICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CiAKKyAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAg
ICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAgIH0KICAgICAg
ICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0g
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVz
dWx0UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsLCBOZWVkVG9TcGls
bCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIHN0dWJJbmZvR1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NU
eXBlOjpHZXRQcml2YXRlTmFtZSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBicmVhazsKQEAgLTM3NjQsMjkgKzM4OTEs
NDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5v
ZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZUJ5SWQoTm9k
ZSogbm9kZSkKIHsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQ
UlJlZzsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAg
ICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHVi
SW5mby0+Z3ByKCk7CisgICAgfQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotCi0gICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogCiAgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcgREZHIGdlbmVy
YXRpb24sIHNvIHdlIGRvbid0IG5lZWQKICAgICAvLyB0byBjaGVjayBpdCBoZXJlLgogICAgIGF1
dG8gcHV0S2luZCA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gUHV0
S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZp
ZWxkU2V0OwotICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB2YWx1ZVJlZ3MsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgcHV0
S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBjYWNoZWRQdXRCeUlkKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBwdXRLaW5kLCBFQ01BTW9kZTo6c3RyaWN0KCkp
OwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BS
VGVtcG9yYXJ5PiBzdHViSW5mbzsKICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBicmFuZFZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7
CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
IHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1YkluZm8t
PmdwcigpOworICAgIH0KICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJl
Z3MoKTsKLQogICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAKICAgICBz
cGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIGJyYW5kR1BSKTsKQEAgLTM4MDAsMTYgKzM5
MzgsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5v
ZGUqIG5vZGUpCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VSZWdzKSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBiYXNlUmVncywg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJyYW5kR1BSKSk7CisgICAgICAgIG1faml0LmNvZGVC
bG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBl
OjpDaGVja1ByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgYmFzZVJlZ3MsIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShicmFuZEdQUiksIHN0dWJJbmZvR1BSKTsKIAogICAgIGdl
bi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aChtX2ppdCk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9S
ZXN1bHQsCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdz
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGlt
aXplLCBOb1Jlc3VsdCwKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
IGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwK
KyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIH0KIAogICAgIG1faml0LmFk
ZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zODIwLDkgKzM5NjYsMTUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrUHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYnJhbmRWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAKKyAgICBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBz
dHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBicmFuZEdQUiA9IGJyYW5kVmFsdWUuZ3ByKCk7CiAK
QEAgLTM4MzQsMTYgKzM5ODYsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFBy
aXZhdGVCcmFuZChOb2RlKiBub2RlKQogCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlNldFBy
aXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYnJhbmRHUFIpKTsKKyAgICAg
ICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYnJhbmRHUFIpLCBzdHViSW5mb0dQUik7CiAKICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVy
dHlJc1N5bWJvbCA9IHRydWU7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwgCi0gICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0Nh
bGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRp
bWl6ZSwgTm9SZXN1bHQsCisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYnJhbmRHUFIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUsIE5vUmVzdWx0LAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJy
YW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5NjEsMjIgKzQxMjEsMjggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgdW5i
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncywgR1BSUmVnIHJlc3VsdEdQUiwg
R1BSUmVnIHNjcmF0Y2hHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd0Nhc2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxz
KE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgSlNWYWx1ZVJlZ3MgcHJvdG90eXBl
UmVncywgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRj
aEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSkKIHsK
ICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2ppdC5hZGRDYWxsU2l0ZShub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxs
U2l0ZUluZGV4LCB1c2VkUmVnaXN0ZXJzKCksIHJlc3VsdEdQUiwKLSAgICAgICAgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgcHJvdG90eXBlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hHUFIsIHNj
cmF0Y2gyR1BSLAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIHVzZWRSZWdpc3RlcnMoKSwgcmVz
dWx0R1BSLAorICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBwcm90b3R5cGVSZWdzLnBh
eWxvYWRHUFIoKSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLAogICAgICAg
ICBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmlzVHlwZShTcGVjT2JqZWN0IHwgflNw
ZWNDZWxsKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwotICAgIAogICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd0Nhc2UpOwotICAgIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFs
dWVSZWdzLAotICAgICAgICBwcm90b3R5cGVSZWdzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3Ms
IHByb3RvdHlwZVJlZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9m
T3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHVi
SW5mbygpLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAgIH0KICAgICAKICAgICBtX2pp
dC5hZGRJbnN0YW5jZU9mKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKQEAgLTM5ODcsNiArNDE1Myw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UKICAgICAg
ICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZvOwogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIApAQCAt
Mzk5NCwxMyArNDE2MSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZihOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAgICAKKyAgICAgICAgR1BSUmVn
IHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRo
aXMpOworICAgICAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgICAg
IH0KICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIEdQUlJl
ZyBwcm90b3R5cGVHUFIgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAg
ICAgIAotICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIEpTVmFsdWVSZWdz
KHZhbHVlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvdG90eXBlR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUik7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yQ2VsbHMobm9k
ZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBKU1ZhbHVlUmVncyhwcm90b3R5cGVHUFIpLCByZXN1
bHRHUFIsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAgIAog
ICAgICAgICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBy
ZXR1cm47CkBAIC00MDEwLDEyICs0MTgyLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUqIG5vZGUpCiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgREZHX0FT
U0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50
eXBlZFVzZSk7CiAgICAgCisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0dWJJbmZv
OwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBK
U1ZhbHVlT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CiAgICAgCisgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1Yklu
Zm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7
CisgICAgfQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7
CiAgICAgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlUmVncyA9IHByb3RvdHlwZS5qc1ZhbHVlUmVncygp
OwogICAgIApAQCAtNDAzMSw3ICs0MjA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluc3RhbmNlT2YoTm9kZSogbm9kZSkKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93
Q2FzZSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVSZWdzKTsKICAgICAKLSAgICBj
b21waWxlSW5zdGFuY2VPZkZvckNlbGxzKG5vZGUsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncywg
cmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBJbnZhbGlkR1BSUmVnLCBzbG93Q2FzZSk7CisgICAgY29t
cGlsZUluc3RhbmNlT2ZGb3JDZWxscyhub2RlLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MsIHJl
c3VsdEdQUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIEludmFsaWRHUFJSZWcsIHNsb3dDYXNl
KTsKICAgICAKICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICBibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTMyNzYsNDYgKzEzNDU0LDY0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb0luZGV4U3RyaW5nKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkRmx1c2goTm9kZSogbm9kZSkKIHsKKyAgICBzdGQ6Om9w
dGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCisg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBpZiAoSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0
aGlzKTsKKyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby0+Z3ByKCk7CisgICAgfQogICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3Mg
PSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5n
cHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRjaEdQUiwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCks
IE1hY3JvQXNzZW1ibGVyOjpKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0QnlJZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNj
cmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0
LCBub2RlLT5lY21hTW9kZSgpLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCgpLCBEb250U3BpbGwpOwog
CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeUlkKE5vZGUqIG5vZGUpCiB7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHN0
dWJJbmZvOwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAorICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CisgICAgICAgIHN0dWJJbmZvLmVtcGxhY2UodGhpcyk7CisgICAgICAgIHN0dWJJbmZv
R1BSID0gc3R1YkluZm8tPmdwcigpOworICAgIH0KICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsK
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzY3JhdGNoR1BS
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+
ZWNtYU1vZGUoKSk7CisgICAgY2FjaGVkUHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSwgUHV0S2luZDo6Tm90RGlyZWN0LCBub2RlLT5lY21hTW9kZSgpKTsKIAog
ICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlJZERpcmVjdChOb2RlKiBub2RlKQogeworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5
PiBzdHViSW5mbzsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKKyAgICBHUFJSZWcgc3R1YkluZm9H
UFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgeworICAgICAgICBzdHViSW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICBzdHVi
SW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICB9CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdz
KCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogCi0gICAgY2FjaGVk
UHV0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc2NyYXRj
aEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRLaW5kOjpEaXJlY3QsIG5vZGUt
PmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCksIFB1dEtpbmQ6OkRpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTE0OTQyLDE4ICsxNTEzOCwyMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHJvZmlsZVR5cGUoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJl
ZyBzY3JhdGNoR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0
S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHV0S2luZCBwdXRLaW5kLCBFQ01BTW9kZSBl
Y21hTW9kZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMt
PnVzZWRSZWdpc3RlcnMoKTsKICAgICBpZiAoc3BpbGxNb2RlID09IERvbnRTcGlsbCkgewogICAg
ICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZsdXNoZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjaywgd2Ug
ZG9uJ3QgbmVlZCB0byBzcGlsbCB0aGVzZS4KICAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoYmFz
ZUdQUiwgZmFsc2UpOwogICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldCh2YWx1ZVJlZ3MsIGZhbHNl
KTsKKyAgICAgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICB1c2VkUmVnaXN0ZXJzLnNldChzdHViSW5mb0dQUiwgZmFsc2UpOwogICAgIH0KICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2Vw
dGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkp
OwogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAorICAgICAg
ICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0
ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLAogICAgICAgICBzY3JhdGNo
R1BSLCBlY21hTW9kZSwgcHV0S2luZCk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CkBAIC0xNDk2Myw5ICsxNTE2MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQ
dXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKLSAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5v
UmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCi0gICAg
ICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMo
KSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2
YWx1ZVJlZ3MsCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
aWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc2xvd1BhdGhG
dW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgdmFs
dWVSZWdzLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlk
ZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1Bh
dGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApp
bmRleCBmOGIyOTk4ZDRkMTdiZWNlNDM2ZDE4Zjk5MTc0ZjZlYmNjODk4NDgzLi4yOWJhMjlhZTQ3
NjZlYWViYzdmZWM3OGRmMWFhNGQ3ZDU0NjVjNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MTksMTYgKzcxOSwxNiBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAKICAgICB2b2lkIGNvbXBpbGVDaGVja0RldGFjaGVkKE5vZGUqKTsK
IAotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyByZXN1bHQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZv
aWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHV0S2lu
ZCwgRUNNQU1vZGUsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGls
ZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAgIHZvaWQg
Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSwgQWNjZXNzVHlwZSk7
CisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIs
IENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9k
ZSA9IE5lZWRUb1NwaWxsKTsKICAgICB2b2lkIGNhY2hlZEdldEJ5VmFsKENvZGVPcmlnaW4sIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KTsKIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJS
ZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nlc3NUeXBlKTsKLSAgICB2b2lkIGNh
Y2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHRo
aXNHUFIsIEdQUlJlZyByZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IEpJVENv
bXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcExpc3Qo
KSk7CisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBH
UFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFj
Y2Vzc1R5cGUpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0
dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExp
c3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRh
Z0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5
cGUpOwotICAgIHZvaWQgY2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB0aGlzVGFnR1BS
T3JOb25lLCBHUFJSZWcgdGhpc1BheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQUlJl
ZyByZXN1bHRQYXlsb2FkR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxl
cjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXBMaXN0KCkpOwor
ICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9u
ZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlLCBBY2Nl
c3NUeXBlKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luLCBHUFJS
ZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgdGhpc1Rh
Z0dQUk9yTm9uZSwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRoVGFyZ2V0ID0gSklU
Q29tcGlsZXI6Okp1bXBMaXN0KCkpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVC
eUlkKE5vZGUqKTsKQEAgLTc1MSw3ICs3NTEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAg
ICAgdm9pZCBnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52
ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgZ2VuZXJpY0pTVmFsdWVTdHJpY3RFcShOb2RlKiwgYm9v
bCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvckNl
bGxzKE5vZGUqLCBKU1ZhbHVlUmVncyB2YWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgcHJvdG90eXBlR1BS
LCBHUFJSZWcgcmVzdWx0R1BULCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BS
LCBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAg
IHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JDZWxscyhOb2RlKiwgSlNWYWx1ZVJlZ3MgdmFsdWVH
UFIsIEpTVmFsdWVSZWdzIHByb3RvdHlwZUdQUiwgR1BSUmVnIHJlc3VsdEdQVCwgR1BSUmVnIHN0
dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBKSVRDb21w
aWxlcjo6SnVtcCBzbG93Q2FzZSA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIHZvaWQgY29t
cGlsZUluc3RhbmNlT2YoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZDdXN0b20o
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqKTsKQEAg
LTk0OSw2ICs5NDksMjYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46Omhhc1Jlc3VsdCwKKyAgICB2b2lkPgorICAgIGNhbGxPcGVyYXRpb24oQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzIGFkZHJlc3MsIFJlc3VsdFJlZ1R5cGUgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRp
b25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQp
LCByZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDwKKyAgICAgICAgIUZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsCisgICAgdm9pZD4KKyAgICBjYWxs
T3BlcmF0aW9uKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRp
b25UeXBlPihhZGRyZXNzLCBhcmdzLi4uKTsKKyAgICAgICAgYXBwZW5kQ2FsbChDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9
CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrT25FeGNlcHRpb24oVl9KSVRPcGVyYXRpb25fQ2Igb3BlcmF0aW9uLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKICAgICB7CiAgICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFz
IGEgd2Vhay1wb2ludGVyLgpAQCAtOTg4LDYgKzEwMDgsMTMgQEAgY2xhc3MgU3BlY3VsYXRpdmVK
SVQgewogICAgICAgICByZXR1cm4gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CiAgICAgfQog
CisgICAgdm9pZCBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAgICBtX2ppdC5lbWl0
U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAg
IG1faml0LmFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgYXBwZW5kT3BlcmF0aW9uQ2FsbChjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
IGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwpAQCAt
MTAxMCw2ICsxMDM3LDI4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJu
IGNhbGw7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRDYWxsU2V0UmVzdWx0KENDYWxsSGVscGVy
czo6QWRkcmVzcyBhZGRyZXNzLCBHUFJSZWcgcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXBwZW5k
Q2FsbChhZGRyZXNzKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IGFkZHJlc3MsIEdQUlJlZyByZXN1bHQxLCBHUFJSZWcgcmVzdWx0MikKKyAgICB7CisgICAgICAg
IGFwcGVuZENhbGwoYWRkcmVzcyk7CisgICAgICAgIG1faml0LnNldHVwUmVzdWx0cyhyZXN1bHQx
LCByZXN1bHQyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhbGxTZXRSZXN1bHQoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MpCisgICAgewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGFwcGVuZENhbGxTZXRSZXN1bHQoYWRkcmVzcywg
cmVzdWx0UmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0KGFk
ZHJlc3MsIHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRSZWdzLnRhZ0dQUigpKTsKKyNl
bmRpZgorICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpDYWxsIGFwcGVuZENhbGxTZXRSZXN1bHQo
Y29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbiwgR1BSUmVnIHJlc3Vs
dCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKGZ1
bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDE3YjQ4YWNjZDVlZTZjNzBiZTA2ODNmNDFjMTM1ZjYyZDhi
Zjg1MDAuLjY4MjhlNGUwMjEzMDM3YzM2NDg3ZDE5ODFmMjQwNDc2OWE0MGU1YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMTY4LDE1ICsxNjgsMTYgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUo
RWRnZSBlZGdlLCBHUFJSZWcmIHRhZ0dQUiwgR1BSUmVnJiBwYXlsb2FkR1BSLAogICAgIH0KIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdp
c3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNN
b2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwg
YmFzZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0
LnBheWxvYWRHUFIoKSwgaWRlbnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOwor
ICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLnRhZ0dQUigpLCBiYXNlLnBheWxvYWRHUFIo
KSwgcmVzdWx0LnRhZ0dQUigpLCByZXN1bHQucGF5bG9hZEdQUigpLCBzdHViSW5mb0dQUiwgaWRl
bnRpZmllciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKAotICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRh
Z0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcg
cmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BS
LAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUg
dHlwZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oc3R1YkluZm9HUFIpOwogICAgIC8vIFRoaXMgaXMg
YSBoYWNreSBmaXggZm9yIHdoZW4gdGhlIHJlZ2lzdGVyIGFsbG9jYXRvciBkZWNpZGVzIHRvIGFs
aWFzIHRoZSBiYXNlIHBheWxvYWQgd2l0aCB0aGUgcmVzdWx0IHRhZy4gVGhpcyBvbmx5IGhhcHBl
bnMKICAgICAvLyBpbiB0aGUgY2FzZSBvZiBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNo
LCB3aGljaCBoYXMgYSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSByZWdpc3RlciBhbGxvY2F0aW9uIHN0
b3J5IGFscmVhZHkgc28gd2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0bwogICAgIC8vIHRyaXAgb3Zl
ciBvbmUgbW92ZSBpbnN0cnVjdGlvbi4KQEAgLTIwMCw4ICsyMDEsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUg
PSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0
SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFz
ZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIpLCB0eXBlKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50
aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2Fk
R1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSW52YWxp
ZEdQUlJlZywgdHlwZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwog
ICAgIApAQCAtMjI4LDE1ICsyMjksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZCgKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKAot
ICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJl
ZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHRoaXNUYWdHUFIsIEdQUlJlZyB0aGlzUGF5bG9hZEdQ
UiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsCisgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSLCBHUFJSZWcgdGhpc1RhZ0dQUiwgR1BSUmVnIHRoaXNQYXlsb2FkR1BSLCBHUFJS
ZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiwgR1BSUmVnIHN0dWJJbmZv
R1BSLAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSklUQ29tcGls
ZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKKyAgICBVTlVTRURfUEFSQU0oc3R1Yklu
Zm9HUFIpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CiAgICAgCiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENh
bGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3Jp
Z2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQ
UiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQ
YXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpKTsKKyAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFsdWVSZWdzKHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5v
bmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRH
UFIpLCBJbnZhbGlkR1BSUmVnKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2pp
dCk7CiAgICAgCkBAIC0yMzQxLDggKzIzNDMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MudGFnR1BSKCkpKTsKIAogICAgICAgICAgICAgSklUR2V0
QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMs
Ci0gICAgICAgICAgICAgICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncyk7Cisg
ICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAg
ICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRH
UFJSZWcpOwogCiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKICAgICAgICAgICAgICAgICBnZW4u
c3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CkBAIC0zNDA5LDcgKzM0MTEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJ
bnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZhbGlkR1BSUmVnLCB0aGlzR1BSLCByZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CisgICAg
ICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZh
bGlkR1BSUmVnLCBiYXNlR1BSLCBJbnZhbGlkR1BSUmVnLCB0aGlzR1BSLCByZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIEludmFsaWRHUFJSZWcsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFn
R1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM0Mjks
NyArMzQzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZS5q
c1ZhbHVlUmVncygpKSk7CiAgICAgICAgICAgICBub3RDZWxsTGlzdC5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCB0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiwgcmVz
dWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCks
IG5vdENlbGxMaXN0KTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCB0aGlzVGFnR1BSLCB0
aGlzUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBJbnZhbGlkR1BS
UmVnLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vdENlbGxMaXN0KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIsIG5vZGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA3NzJkNDI1MGFhNzMwYjJjNjZjNTY4Mjc5
ZmRjMzM1OGE4MTJkZTgxLi42MjM1NWM5NDg3OTEzYWE5NjRiNWFiZjM1MDEwYzIyNDVlM2M4MTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTE0NywxMiArMTQ3LDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpT
VmFsdWUoRWRnZSBlZGdlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
cmVzdWx0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlw
ZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4s
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BS
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2RlIG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsK
LSAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFzZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBpZGVu
dGlmaWVyLCBzbG93UGF0aFRhcmdldCwgbW9kZSwgdHlwZSk7CisgICAgY2FjaGVkR2V0QnlJZChv
cmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgc3R1YkluZm9HUFIsIGlkZW50aWZpZXIs
IHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJS
ZWcgcmVzdWx0R1BSLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nl
c3NUeXBlIHR5cGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmln
aW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBz
dHViSW5mb0dQUiwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNz
VHlwZSB0eXBlKQogewogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRD
YWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9y
aWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE2MCwyNiArMTYwLDM2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZUdQUiwgR1BSUmVnCiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCByZWdpc3RlcnMg
dG8gdGhlIHN0YWNrLCB3ZSBkb24ndCBuZWVkIHRvIHNwaWxsIHRoZXNlLgogICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChiYXNlR1BSLCBmYWxzZSk7CiAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0
KHJlc3VsdEdQUiwgZmFsc2UpOworICAgICAgICBpZiAoc3R1YkluZm9HUFIgIT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7
CiAgICAgfQogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIs
Ci0gICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCB0
eXBlKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCisgICAgICAgIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzdHViSW5mb0dQUiwgdHlw
ZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRh
cmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlk
RnVuY3Rpb24odHlwZSksCi0gICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJl
bWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUlkRnVuY3Rpb24odHlwZSksCisgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNo
ZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlv
bih0eXBlKSwKKyAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICB9CiAg
ICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgdGhpc0dQUiwgR1BSUmVnIHJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBKSVRDb21waWxlcjo6SnVtcExpc3QmIHNsb3dQYXRo
VGFyZ2V0KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB0aGlzR1BSLCBHUFJSZWcg
cmVzdWx0R1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgSklUQ29tcGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aFRhcmdldCkKIHsKICAg
ICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0
ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5z
aXplKCkpOwogICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0
ZXJzKCk7CkBAIC0xODcsMjAgKzE5NywzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUgogICAg
IHVzZWRSZWdpc3RlcnMuc2V0KGJhc2VHUFIsIGZhbHNlKTsKICAgICB1c2VkUmVnaXN0ZXJzLnNl
dCh0aGlzR1BSLCBmYWxzZSk7CiAgICAgdXNlZFJlZ2lzdGVycy5zZXQocmVzdWx0R1BSLCBmYWxz
ZSk7CisgICAgaWYgKHN0dWJJbmZvR1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHVzZWRS
ZWdpc3RlcnMuc2V0KHN0dWJJbmZvR1BSLCBmYWxzZSk7CiAgICAgCiAgICAgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmln
aW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc0dQ
UikpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVzdWx0R1BSKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHRoaXNH
UFIpLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAg
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhK
dW1wKCkpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0gICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7
CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVy
YXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKKyAgICAgICAgICAgIERvbnRTcGlsbCwgRXhj
ZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCisgICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdp
dGhUaGlzT3B0aW1pemUsCisgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVx
dWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAorICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CisgICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRoVGhpcyhnZW4sIHNs
b3dQYXRoLmdldCgpKTsKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CkBAIC0yNjgxLDE2ICsyNzAxLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwot
ICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkp
OwotCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgcHJvcGVydHkpOworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsK
KyAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAorICAgICAgICAgICAgc3BlY3VsYXRlKG5v
ZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgc3BlY3VsYXRl
KG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworCiAgICAgICAgICAgICBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4
Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXpl
KCkpOwogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRS
ZWdpc3RlcnMoKTsKQEAgLTI3MDAsOCArMjcyNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdp
biwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiks
IEpTVmFsdWVSZWdzKHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9j
aygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpH
ZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBz
dHViSW5mb0dQUik7CiAKICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNTdHJpbmcpKQogICAgICAgICAgICAgICAg
IGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKQEAgLTI3MTIsMTEgKzI3
MzksMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAg
ICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKLQotICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFs
T3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAg
ICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKQorICAgICAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgeworICAgICAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwg
cHJvcGVydHlHUFIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9q
aXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CkBAIC0zOTg4LDkgKzQwMjMsMTYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgY2FzZSBHZXRC
eUlkV2l0aFRoaXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc3R1YkluZm87CiAgICAgICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgICAg
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKKyAgICAgICAgICAgICAgICBzdHVi
SW5mby5lbXBsYWNlKHRoaXMpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSID0gc3R1Yklu
Zm8tPmdwcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5n
cHIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwpAQCAtMzk5OCwxNCArNDA0MCwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIEpJVENvbXBpbGVyOjpKdW1wTGlzdCgpKTsKKyAg
ICAgICAgICAgIGNhY2hlZEdldEJ5SWRXaXRoVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VHUFIsIHRoaXNWYWx1ZUdQUiwgcmVzdWx0R1BSLCBzdHViSW5mb0dQUiwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLCBKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAg
IAogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IHN0dWJJbmZvOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworCisgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAg
ICAgICAgICAgICAgc3R1YkluZm8uZW1wbGFjZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzdHVi
SW5mb0dQUiA9IHN0dWJJbmZvLT5ncHIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVH
UFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTQwMTcsNyArNDA2Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vdENlbGxMaXN0
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpKTsKICAg
ICAgICAgICAgIG5vdENlbGxMaXN0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1
ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB0aGlzVmFsdWVH
UFIsIHJlc3VsdEdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub3RDZWxsTGlzdCk7
CisgICAgICAgICAgICBjYWNoZWRHZXRCeUlkV2l0aFRoaXMobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUiwgc3R1YkluZm9HUFIsIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSwgbm90Q2VsbExpc3QpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhYmQ2OTRmOGRj
NjQ1MGRmZWM0Y2UyZDkzMWJkZTViODg2YTRhNTMyLi40Zjk3NzBhZDRmZmFjYjI5MzFkZWEyMjI2
ZDgzMjMyNzE2NTc2ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC0zOTg4LDYgKzM5ODgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVn
aXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAog
ICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxl
ID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC00MDA5
LDEwICs0MDEwLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZv
R1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3Jh
dGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9y
ID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwg
QWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWUsCisgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBz
dHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2Vs
bDsKICAgICAgICAgICAgICAgICBpZiAoIWJhc2VJc0NlbGwpCkBAIC00MDI2LDEzICs0MDI4LDI1
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdENl
bGwuaXNTZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwubGluaygmaml0KTsK
LSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQp
OworICAgICAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpG
VExKSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNs
b3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpGVExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVy
YXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRp
b25zLmdldCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BS
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9y
LT5zdHViSW5mbygpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAm
aml0KTsKIAogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2Fs
bChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDEyMCw2ICs0MTM0LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1h
c2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpG
VExKSVQpID8gMSA6IDA7CiAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKIApAQCAtNDE0MCwxMCArNDE1NSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyBicmFuZEdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFy
YW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gQm94PEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj46OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKLSAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJyYW5kR1BS
KSk7CisgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwKKyAgICAgICAg
ICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIEpTVmFsdWVSZWdzKGJyYW5kR1BSKSwgc3R1YkluZm9HUFIpOwogCiAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgICAgIGlmICghYmFzZUlzQ2VsbCkK
QEAgLTQxNjksMTMgKzQxODUsMjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAg
ICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdENlbGwu
bGluaygmaml0KTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxp
bmsoJmppdCk7CisgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1Bh
dGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgYXBwcm9wcmlhdGVQ
cml2YXRlQWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSksIEludmFsaWRHUFJSZWcsCi0gICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBiYXNlR1BSLCBicmFuZEdQUikuY2FsbCgpOwor
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CisgICAgICAg
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5l
cmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gYXBwcm9wcmlhdGVQcml2YXRl
QWNjZXNzRnVuY3Rpb24oYWNjZXNzVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBhcHByb3ByaWF0ZVByaXZh
dGVBY2Nlc3NGdW5jdGlvbihhY2Nlc3NUeXBlKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8o
ZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRo
Q2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtNDUyNiw2ICs0NTU0LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGEgUHV0QnlJZEZsdXNo
LCB3ZSBtaWdodCB3YW50IHRvIGxhdGUtY2xvYmJlciB2b2xhdGlsZSByZWdpc3RlcnMuCiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI4NDgKQEAg
LTQ1NDgsMTAgKzQ1NzcsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAg
ICAvLyBKUyBzZXR0ZXIgY2FsbCBJQ3MgZ2VuZXJhdGVkIGJ5IHRoZSBQdXRCeUlkIElDIHdpbGwg
bmVlZCB0aGlzLgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0
Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAorICAgICAgICAgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKICAgICAgICAgICAg
ICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBK
SVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVn
aXN0ZXIsIGVjbWFNb2RlLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNb
MV0uZ3ByKCkpLCBzdHViSW5mb0dQUiwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3Rl
ciwgZWNtYU1vZGUsCiAgICAgICAgICAgICAgICAgICAgIHB1dEtpbmQpOwogCiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CkBAIC00NTYzLDEyICs0NTk0
LDI0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93
UGF0aEZ1bmN0aW9uKCksIEludmFsaWRHUFJSZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0
aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1Yklu
Zm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8o
KS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuZXJhdG9yLT5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
SW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIHBhcmFtc1sxXS5ncHIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdLmdwcigpLCBpZGVudGlmaWVy
LnJhd0JpdHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgZ2VuZXJhdG9yLT5zbG93UGF0aEZ1
bmN0aW9uKCksIEludmFsaWRHUFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXS5ncHIoKSwgaWRlbnRpZmllci5yYXdCaXRz
KCkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93
UGF0aENhbGwpOwpAQCAtNTI0OSw2ICs1MjkyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklU
KSA/IDEgOiAwOwogCiAgICAgICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNo
cG9pbnQpOwogCkBAIC01MjY5LDEwICs1MzEzLDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHBhcmFtc1swXS5ncHIoKTsKICAgICAg
ICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJ
VCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAgICAg
ICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsCi0gICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwg
SlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsCisgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyhyZXN1bHRH
UFIpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZv
KCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5nOwogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gcHJvcGVydHlJc0ludDMy
OwpAQCAtNTI5MCwxMyArNTMzNSwyNSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChub3RDZWxsLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBub3RDZWxsLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xv
d1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCByZXN1
bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNh
bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpG
VExKSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxs
KCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobnVsbHB0ciksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0
aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTU4NDYsNyArNTkwMyw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENl
bGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgICAgICBwYXRj
aHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklU
KSA/IDIgOiAxOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBl
eGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwpAQCAtNTg2Niw5ICs1OTIzLDExIEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0u
Z3ByKCkpOwogICAgICAgICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigp
OworICAgICAgICAgICAgICAgIGF1dG8gc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7
CisgICAgICAgICAgICAgICAgYXV0byBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdwU2NyYXRjaCgxKSA6IEludmFsaWRHUFJSZWc7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGJhc2UuZ3ByKCkgIT0gcmV0dXJuR1BSKTsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQoYmFzZS5ncHIoKSAhPSBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQocmV0dXJuR1BSICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gc2NyYXRjaEdQUik7CiAKICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CkBA
IC01ODg0LDcgKzU5NDMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNjcmlw
dFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1zWzJdLmdw
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IHBhcmFt
c1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHBhcmFtc1syXS5n
cHIoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJh
bXNbMl0uZ3ByKCkpOwpAQCAtNTg5NCwxOSArNTk1MywyMCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+Ojpj
cmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRj
aCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BS
KSwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZhbEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCks
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YnNjcmlwdCwgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgcGFyYW1zLmdwU2NyYXRj
aCgwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBKU1ZhbHVlUmVn
cyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOworICAgICAgICAgICAgICAgIGlmICghSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKSk7CiAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CiAKICAgICAgICAgICAgICAg
ICBwYXJhbXMuYWRkTGF0ZVBhdGgoCkBAIC01OTE1LDEyICs1OTc1LDI0IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJl
Z2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcmV0dXJuR1BSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wdGltaXphdGlv
bkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm9HUFIsIGJhc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSkuY2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xv
d1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjMwMSw2ICsxMjM3
Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOwogCiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2Vw
dGlvbnMocGF0Y2hwb2ludCk7CiAKQEAgLTEyMzE1LDYgKzEyMzg4LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJn
ZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJz
OjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAorICAgICAgICAgICAgICAgIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpID8gcGFyYW1zLmdw
U2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAgICAgYXV0byByZXR1cm5H
UFIgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1
ZVJlZ3MocGFyYW1zWzFdLmdwcigpKTsKIApAQCAtMTIzMjgsNDEgKzEyNDAyLDY4IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBb
Jl0gewogICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6
Ok5vcm1hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5SWRH
ZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSwgc3R1Yklu
Zm9HUFIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksIGJhc2UsIHN1YnNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhyZXR1cm5HUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhyZXR1cm5HUFIpLCBzdHViSW5mb0dQUik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9KCk7CiAKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0IHNsb3dDYXNlczsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBh
dGgoaml0KTsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6
Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAo
KSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQ
YXRoKAogICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1Bh
dGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
Y29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8o
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN1YnNjcmlwdCkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
c3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwg
YmFzZSwgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZSwgc3Vi
c2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCByZXR1cm5HUFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkluQnlWYWxPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCByZXR1cm5HUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlw
dCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlW
YWxPcHRpbWl6ZSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNl
LCBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgp
LmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtMTI1ODAsNyArMTI2ODEsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocHJvdG90
eXBlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnMgPSAyOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IDMgOiAyOwogICAgICAgICBwYXRjaHBv
aW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07
CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKICAgICAgICAgCkBAIC0xMjU5Niw2ICsxMjY5Nyw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3RvdHlwZUdQUiA9IHBhcmFtc1sy
XS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHBhcmFtcy5ncFNj
cmF0Y2goMCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdw
U2NyYXRjaCgxKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMikgOiBJbnZh
bGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcCBkb25lSnVtcDsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlSXNDZWxsKSB7CkBA
IC0xMjYxNywxMCArMTI3MTksMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5q
dW1wcyhqaXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwg
cmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgcmVzdWx0R1BSLCB2YWx1ZUdQUiwgcHJvdG90eXBlR1BSLCBz
dHViSW5mb0dQUiwgc2NyYXRjaEdQUiwKICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaDJHUFIs
IHByb3RvdHlwZUlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdl
bmVyYXRvci0+c2xvd1BhdGhKdW1wKCkpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIHBhcmFtcy5hZGRMYXRlUGF0aCgKQEAgLTEyNjMxLDEyICsxMjczNSwyNCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24s
IHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJ
bmZvKCkpLCB2YWx1ZUdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVH
UFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwg
c3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3B0aW1pemF0aW9uRnVuY3Rpb247CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgcmVz
dWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHViSW5mb0dQUiwgdmFsdWVHUFIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb3RvdHlwZUdQUikuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0
aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHZhbHVlR1BSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGVHUFIpLmNhbGwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0
aENhbGwpOwpAQCAtMTQwODAsNiArMTQxOTYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDogMDsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhp
cyBpcyBhIEdldEJ5SWRGbHVzaC9HZXRCeUlkRGlyZWN0Rmx1c2gsIHdlIG1pZ2h0IGdldCBzb21l
IHBlcmZvcm1hbmNlIGJvb3N0IGlmIHdlIGNsYWltIHRoYXQgaXQKICAgICAgICAgLy8gY2xvYmJl
cnMgdm9sYXRpbGUgcmVnaXN0ZXJzIGxhdGUuIEl0J3Mgbm90IG5lY2Vzc2FyeSBmb3IgY29ycmVj
dG5lc3MsIHRob3VnaCwgc2luY2UgdGhlCkBAIC0xNDEwOCwxMCArMTQyMjUsMTIgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCiAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbkZvclVu
d2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCisgICAgICAgICAgICAgICAgR1BSUmVnIHN0
dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMu
Z3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwogICAgICAgICAgICAgICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gQm94PEpJVEdldEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAg
ICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJ
VCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJl
Z3MocGFyYW1zWzFdLmdwcigpKSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFy
YW1zWzBdLmdwcigpKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBh
cmFtc1swXS5ncHIoKSksIHN0dWJJbmZvR1BSLCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtMTQxMjQsMTIgKzE0MjQzLDI0IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24s
IHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyLnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0
aW9uLCBwYXJhbXNbMF0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihpZGVudGlmaWVy
LnJhd0JpdHMoKSkpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJl
Z2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTQxNTQsOCArMTQyODUsOCBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVl
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjps
YXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkgPyAxIDog
MDsKIAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKQEAgLTE0MTc3LDEwICsxNDMwOCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgIC8vIHRoZSBjYWxsc2l0ZSBpbmRleC4KICAgICAgICAgICAgICAgICBl
eGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2Fs
bFNpdGVJbmRleCk7CiAKKyAgICAgICAgICAgICAgICBHUFJSZWcgc3R1YkluZm9HUFIgPSBKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBJ
bnZhbGlkR1BSUmVnOworCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFt
c1swXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5n
cHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSkpOworICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3By
KCkpLCBzdHViSW5mb0dQUik7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRl
RmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUg
PSBqaXQubGFiZWwoKTsKQEAgLTE0MTkzLDEyICsxNDMyNiwyNCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgp
LmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVs
IHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFy
YW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIo
KSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2Fs
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRo
Q2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6RlRMSklUKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHViSW5m
b0dQUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBwYXJhbXNbMF0u
Z3ByKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvR1BSLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwg
b3B0aW1pemF0aW9uRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAppbmRleCAyYWRk
NDk0YzUzMmFhZWE4ZWUzZDExY2UxMjI3ODExODkzNTZhZDRmLi5iNGU0NzU4ZTU4ZmIxZTc5MjZj
NmEwNzE4MzczMTU4OTg3Yzc2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHdvcmRTaXplID0gODsKIAogU2xv
d1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4dCgKLSAgICBSZWdpc3RlclNldCB1
c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgdW5zaWduZWQgbnVtQXJncywgR1BSUmVn
IHJldHVyblJlZ2lzdGVyKQorICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVs
cGVycyYgaml0LCB1bnNpZ25lZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJl
ZyBpbmRpcmVjdENhbGxUYXJnZXRSZWdpc3RlcikKICAgICA6IG1faml0KGppdCkKICAgICAsIG1f
bnVtQXJncyhudW1BcmdzKQogICAgICwgbV9yZXR1cm5SZWdpc3RlcihyZXR1cm5SZWdpc3RlcikK
QEAgLTYzLDYgKzYzLDggQEAgU2xvd1BhdGhDYWxsQ29udGV4dDo6U2xvd1BhdGhDYWxsQ29udGV4
dCgKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLm1lcmdlKG1fYXJndW1lbnRSZWdp
c3RlcnMpOwogICAgIGlmIChyZXR1cm5SZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQogICAgICAg
ICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLnNldChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgaWYgKGluZGlyZWN0Q2FsbFRhcmdldFJlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcp
CisgICAgICAgIG1fY2FsbGluZ0NvbnZlbnRpb25SZWdpc3RlcnMuc2V0KGluZGlyZWN0Q2FsbFRh
cmdldFJlZ2lzdGVyKTsKICAgICBtX2NhbGxpbmdDb252ZW50aW9uUmVnaXN0ZXJzLmZpbHRlcih1
c2VkUmVnaXN0ZXJzKTsKICAgICAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxsaW5nQ29u
dmVudGlvblJlZ2lzdGVycyA9CkBAIC0xMTQsNyArMTE2LDEyIEBAIFNsb3dQYXRoQ2FsbENvbnRl
eHQ6On5TbG93UGF0aENhbGxDb250ZXh0KCkKIAogU2xvd1BhdGhDYWxsS2V5IFNsb3dQYXRoQ2Fs
bENvbnRleHQ6OmtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBjYWxs
VGFyZ2V0KSBjb25zdAogewotICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVT
ZXQsIGNhbGxUYXJnZXQsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0KTsKKyAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KG1fdGh1bmtTYXZlU2V0LCBjYWxsVGFyZ2V0LCBtX2FyZ3VtZW50
UmVnaXN0ZXJzLCBtX29mZnNldCwgMCk7Cit9CisKK1Nsb3dQYXRoQ2FsbEtleSBTbG93UGF0aENh
bGxDb250ZXh0OjprZXlXaXRoVGFyZ2V0KENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKSBj
b25zdAoreworICAgIHJldHVybiBTbG93UGF0aENhbGxLZXkobV90aHVua1NhdmVTZXQsIG51bGxw
dHIsIG1fYXJndW1lbnRSZWdpc3RlcnMsIG1fb2Zmc2V0LCBhZGRyZXNzLm9mZnNldCk7CiB9CiAK
IFNsb3dQYXRoQ2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4gY2FsbFRhcmdldCkKQEAgLTEzMyw2ICsxNDAsMjIgQEAg
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1Nsb3dQYXRo
Q2FsbCBTbG93UGF0aENhbGxDb250ZXh0OjptYWtlQ2FsbChWTSYgdm0sIENDYWxsSGVscGVyczo6
QWRkcmVzcyBjYWxsVGFyZ2V0KQoreworICAgIFNsb3dQYXRoQ2FsbEtleSBrZXkgPSBrZXlXaXRo
VGFyZ2V0KGNhbGxUYXJnZXQpOworICAgIFNsb3dQYXRoQ2FsbCByZXN1bHQgPSBTbG93UGF0aENh
bGwobV9qaXQuY2FsbChKSVRUaHVua1B0clRhZyksIGtleSk7CisKKyAgICBtX2ppdC5hZGRMaW5r
VGFzaygKKyAgICAgICAgW3Jlc3VsdCwgJnZtXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHVuayA9
CisgICAgICAgICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwg
cmVzdWx0LmtleSgpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxs
KCksIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih0aHVuay5jb2RlKCkpKTsKKyAg
ICAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXhGb3JDb2RlT3JpZ2luKFN0YXRlJiBzdGF0ZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQogewogICAgIGlmIChjb2RlT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsLmgKaW5kZXggNzBkMjg4ZTAzZjFkOGQ4MWYyNzdmNmI4MjE3YWM5ZjNmYTgw
YzEyYS4uZDZmMjg1NDlhMzFiMzM1ZGQ1YjU3NTlhY2UyMTBmNDgyYTgzMWQ0YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCkBAIC01NCwxNSArNTQsMTcg
QEAgY2xhc3MgU2xvd1BhdGhDYWxsIHsKIC8vIFRoaXMgd2lsbCBiZSBhbiBSQUlJIHRoaW5neSB0
aGF0IHdpbGwgc2V0IHVwIHRoZSBuZWNlc3Nhcnkgc3RhY2sgc2l6ZXMgYW5kIG9mZnNldHMgYW5k
IHN1Y2guCiBjbGFzcyBTbG93UGF0aENhbGxDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBTbG93UGF0
aENhbGxDb250ZXh0KFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYsIHVu
c2lnbmVkIG51bUFyZ3MsIEdQUlJlZyByZXR1cm5SZWdpc3Rlcik7CisgICAgU2xvd1BhdGhDYWxs
Q29udGV4dChSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmLCB1bnNpZ25l
ZCBudW1BcmdzLCBHUFJSZWcgcmV0dXJuUmVnaXN0ZXIsIEdQUlJlZyBpbmRpcmVjdENhbGxUYXJn
ZXRSZWdpc3Rlcik7CiAgICAgflNsb3dQYXRoQ2FsbENvbnRleHQoKTsKIAogICAgIC8vIE5PVEU6
IFRoZSBjYWxsIHRoYXQgdGhpcyByZXR1cm5zIGlzIGFscmVhZHkgZ29pbmcgdG8gYmUgbGlua2Vk
IGJ5IHRoZSBKSVQgdXNpbmcgYWRkTGlua1Rhc2soKSwKICAgICAvLyBzbyB0aGVyZSBpcyBubyBu
ZWVkIGZvciB5b3UgdG8gbGluayBpdCB5b3Vyc2VsZi4KICAgICBTbG93UGF0aENhbGwgbWFrZUNh
bGwoVk0mLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpOworICAgIFNs
b3dQYXRoQ2FsbCBtYWtlQ2FsbChWTSYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CiAKIHByaXZh
dGU6CiAgICAgU2xvd1BhdGhDYWxsS2V5IGtleVdpdGhUYXJnZXQoRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBjYWxsVGFyZ2V0KSBjb25zdDsKKyAgICBTbG93UGF0aENhbGxLZXkga2V5V2l0
aFRhcmdldChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpIGNvbnN0OwogICAgIAogICAgIFJlZ2lzdGVy
U2V0IG1fYXJndW1lbnRSZWdpc3RlcnM7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsaW5nQ29udmVu
dGlvblJlZ2lzdGVyczsKQEAgLTgyLDcgKzg0LDcgQEAgU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRp
b24oCiB7CiAgICAgU2xvd1BhdGhDYWxsIGNhbGw7CiAgICAgewotICAgICAgICBTbG93UGF0aENh
bGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRU
eXBlcykgKyAxLCByZXN1bHRHUFIpOworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRl
eHQodXNlZFJlZ2lzdGVycywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1
bHRHUFIsIEludmFsaWRHUFJSZWcpOwogICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8dm9pZChB
cmd1bWVudFR5cGVzLi4uKT4oYXJndW1lbnRzLi4uKTsKICAgICAgICAgY2FsbCA9IGNvbnRleHQu
bWFrZUNhbGwodm0sIGZ1bmN0aW9uKTsKICAgICB9CkBAIC0xMTcsNiArMTE5LDQ4IEBAIFNsb3dQ
YXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAogICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+CitTbG93UGF0aENhbGwgY2Fs
bE9wZXJhdGlvbigKKyAgICBWTSYgdm0sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCogZXhjZXB0aW9uVGFy
Z2V0LAorICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3VsdEdQ
UiwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgU2xvd1BhdGhDYWxsIGNhbGw7
CisgICAgeworICAgICAgICBTbG93UGF0aENhbGxDb250ZXh0IGNvbnRleHQodXNlZFJlZ2lzdGVy
cywgaml0LCBzaXplb2YuLi4oQXJndW1lbnRUeXBlcykgKyAxLCByZXN1bHRHUFIsIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
dm9pZChBcmd1bWVudFR5cGVzLi4uKT4oZnVuY3Rpb24sIGFyZ3VtZW50cy4uLik7CisgICAgICAg
IGNhbGwgPSBjb250ZXh0Lm1ha2VDYWxsKHZtLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgZnVuY3Rpb24ub2Zmc2V0KSk7CisgICAgfQorICAgIGlmIChleGNlcHRp
b25UYXJnZXQpCisgICAgICAgIGV4Y2VwdGlvblRhcmdldC0+YXBwZW5kKGppdC5lbWl0RXhjZXB0
aW9uQ2hlY2sodm0pKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJndW1lbnRUeXBlcz4KK1Nsb3dQYXRoQ2FsbCBjYWxsT3BlcmF0aW9uKAorICAgIFZNJiB2
bSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCog
ZXhjZXB0aW9uVGFyZ2V0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnVuY3Rpb24sIEdQUlJlZyBy
ZXN1bHRHUFIsCisgICAgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgaWYgKGNh
bGxTaXRlSW5kZXgpIHsKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCisgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OnRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7CisgICAgfQorICAgIHJldHVybiBjYWxsT3BlcmF0aW9u
KHZtLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIGV4Y2VwdGlvblRhcmdldCwgZnVuY3Rpb24sIHJlc3Vs
dEdQUiwgYXJndW1lbnRzLi4uKTsKK30KKworQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4Rm9y
Q29kZU9yaWdpbihTdGF0ZSYsIENvZGVPcmlnaW4pOworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudFR5cGVzPgorU2xvd1BhdGhDYWxsIGNhbGxPcGVyYXRpb24oCisgICAgU3RhdGUmIHN0
YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQs
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KiBleGNl
cHRpb25UYXJnZXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBmdW5jdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIGNhbGxPcGVyYXRp
b24oCisgICAgICAgIHN0YXRlLnZtKCksIHVzZWRSZWdpc3RlcnMsIGppdCwgY2FsbFNpdGVJbmRl
eEZvckNvZGVPcmlnaW4oc3RhdGUsIGNvZGVPcmlnaW4pLCBleGNlcHRpb25UYXJnZXQsIGZ1bmN0
aW9uLAorICAgICAgICByZXN1bHQsIGFyZ3VtZW50cy4uLik7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwCmluZGV4IDJkMzA2YzYyMDMz
YTgzOTA4ZTZmY2M2YWI5ZTZlODRjZmU4MWVjYWEuLmM0ZTdlODI2MWZkNDczNmIxZDMzNzJiZWY1
NTEzZWZlNWFhMzlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbEtleS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogCiB2b2lkIFNsb3dQYXRoQ2FsbEtleTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewotICAgIG91dC5wcmludCgiPHVzZWRSZWdpc3RlcnMgPSAiLCBtX3VzZWRSZWdp
c3RlcnMsICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0gIiwgUmF3UG9p
bnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3VtZW50UmVnaXN0
ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKKyAgICBvdXQucHJpbnQoIjx1c2Vk
UmVnaXN0ZXJzID0gIiwgbV91c2VkUmVnaXN0ZXJzLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCwg
IiwgaW5kaXJlY3RPZmZzZXQgPSAiLCBtX2luZGlyZWN0T2Zmc2V0LCAiLCBjYWxsVGFyZ2V0ID0g
IiwgUmF3UG9pbnRlcihtX2NhbGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksICIsIGFyZ3Vt
ZW50UmVnaXN0ZXJzID0gIiwgbV9hcmd1bWVudFJlZ2lzdGVycywgIj4iKTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTbG93UGF0aENhbGxLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xv
d1BhdGhDYWxsS2V5LmgKaW5kZXggMDg2YWUwMGVlNTg1NTJjN2NlODNkNzA1MjBlNzYxMzg0MmJk
ZDMzZC4uMGNlNjFmMjZiYTk1MGI5M2ZjM2E4ZWMxOWI1Njc0MWFlMTAwMGQxMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGxLZXkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oCkBAIC01MSwxMSAr
NTEsMTIgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICAKICAgICBTbG93UGF0aENhbGxL
ZXkoCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiBzZXQsIEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4gY2FsbFRhcmdldCwgY29uc3QgUmVnaXN0ZXJTZXQmIGFyZ3VtZW50UmVnaXN0ZXJz
LAotICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0KQorICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0LCBp
bnQzMl90IGluZGlyZWN0T2Zmc2V0KQogICAgICAgICA6IG1fdXNlZFJlZ2lzdGVycyhzZXQpCiAg
ICAgICAgICwgbV9jYWxsVGFyZ2V0KGNhbGxUYXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFn
PigpKQogICAgICAgICAsIG1fYXJndW1lbnRSZWdpc3RlcnMoYXJndW1lbnRSZWdpc3RlcnMpCiAg
ICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1faW5kaXJlY3RPZmZzZXQoaW5k
aXJlY3RPZmZzZXQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYzLDEwICs2NCwxMSBAQCBjbGFz
cyBTbG93UGF0aENhbGxLZXkgewogICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY2Fs
bFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIGNvbnN0IFJlZ2lz
dGVyU2V0JiBhcmd1bWVudFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRSZWdp
c3RlcnM7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KKyAgICBpbnQzMl90IGluZGlyZWN0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpcmVj
dE9mZnNldDsgfQogICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleSB3aXRoQ2FsbFRhcmdldChGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGNhbGxUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1
cm4gU2xvd1BhdGhDYWxsS2V5KHVzZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRS
ZWdpc3RlcnMoKSwgb2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gU2xvd1BhdGhDYWxsS2V5KHVz
ZWRSZWdpc3RlcnMoKSwgY2FsbFRhcmdldCwgYXJndW1lbnRSZWdpc3RlcnMoKSwgb2Zmc2V0KCks
IGluZGlyZWN0T2Zmc2V0KCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKQEAgLTc2LDEzICs3OCwxMSBAQCBjbGFzcyBTbG93UGF0aENhbGxLZXkgewog
ICAgIAogICAgIFNsb3dQYXRoQ2FsbEtleShFbXB0eVZhbHVlVGFnKQogICAgICAgICA6IG1fdXNl
ZFJlZ2lzdGVycyhSZWdpc3RlclNldDo6RW1wdHlWYWx1ZSkKLSAgICAgICAgLCBtX29mZnNldCgw
KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgU2xvd1BhdGhDYWxsS2V5KERlbGV0ZWRWYWx1ZVRh
ZykKICAgICAgICAgOiBtX3VzZWRSZWdpc3RlcnMoUmVnaXN0ZXJTZXQ6OkRlbGV0ZWRWYWx1ZSkK
LSAgICAgICAgLCBtX29mZnNldCgwKQogICAgIHsKICAgICB9CiAgICAgCkBAIC05MywxOCArOTMs
MjAgQEAgY2xhc3MgU2xvd1BhdGhDYWxsS2V5IHsKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Vz
ZWRSZWdpc3RlcnMgPT0gb3RoZXIubV91c2VkUmVnaXN0ZXJzCiAgICAgICAgICAgICAmJiBtX2Nh
bGxUYXJnZXQgPT0gb3RoZXIubV9jYWxsVGFyZ2V0Ci0gICAgICAgICAgICAmJiBtX29mZnNldCA9
PSBvdGhlci5tX29mZnNldDsKKyAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zm
c2V0CisgICAgICAgICAgICAmJiBtX2luZGlyZWN0T2Zmc2V0ID09IG90aGVyLm1faW5kaXJlY3RP
ZmZzZXQ7CiAgICAgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2Nh
bGxUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldDsKKyAgICAgICAgcmV0dXJu
IG1fdXNlZFJlZ2lzdGVycy5oYXNoKCkgKyBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX2NhbGxUYXJn
ZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBtX29mZnNldCArIG1faW5kaXJlY3RPZmZzZXQ7CiAg
ICAgfQogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsKICAgICBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fY2FsbFRhcmdldDsKICAgICBSZWdpc3RlclNl
dCBtX2FyZ3VtZW50UmVnaXN0ZXJzOwotICAgIHB0cmRpZmZfdCBtX29mZnNldDsKKyAgICBwdHJk
aWZmX3QgbV9vZmZzZXQgeyAwIH07CisgICAgaW50MzJfdCBtX2luZGlyZWN0T2Zmc2V0IHsgMCB9
OwogfTsKIAogc3RydWN0IFNsb3dQYXRoQ2FsbEtleUhhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IGRiZmVkNDRkNWExMmFhZGRkMjc2YTkzMzEzM2MwYjM2
Yzg2NjEzYWQuLmQ5MjAyYTNkNDE5ZTVjYjJhNTllMzFmYmU4NWE0YWQ1M2JlNDk0MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTc4LDggKzc4LDggQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRp
b25UaHVua0dlbmVyYXRvcigKICAgICBzYXZlQWxsUmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKICAg
ICAKICAgICAvLyBUZWxsIEdDIG1hcmsgcGhhc2UgaG93IG11Y2ggb2YgdGhlIHNjcmF0Y2ggYnVm
ZmVyIGlzIGFjdGl2ZSBkdXJpbmcgY2FsbC4KLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQ
UkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpub25BcmdH
UFIxKTsKKyAgICBqaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVx
dWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwog
CiAgICAgaml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAgICAgaml0LnBlZWsoCkBAIC0yMDAsMTMgKzIwMCwyMCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9y
KFZNJiB2bSwgY29uc3QgUwogICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihkb3VibGUp
OwogICAgIH0KICAgICAKLSAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQ
UkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIw
LCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjEpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpu
b25BcmdHUFIxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIAotICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3Vt
ZW50UmVnaXN0ZXJzKCkpOworICAgIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyID0ga2V5LmFyZ3Vt
ZW50UmVnaXN0ZXJzKCk7CisgICAgaWYgKCFrZXkuY2FsbFRhcmdldCgpKQorICAgICAgICBkb250
Q2xvYmJlci5zZXQoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgcmVnaXN0ZXJDbG9iYmVyQ2hl
Y2soaml0LCBXVEZNb3ZlKGRvbnRDbG9iYmVyKSk7CiAKLSAgICBBc3NlbWJseUhlbHBlcnM6OkNh
bGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgQXNzZW1ibHlIZWxwZXJz
OjpDYWxsIGNhbGw7CisgICAgaWYgKGtleS5jYWxsVGFyZ2V0KCkpCisgICAgICAgIGNhbGwgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGtleS5pbmRpcmVjdE9mZnNl
dCgpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZz
ZXQoKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CiAgICAgaml0LnJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVy
bkdQUik7CkBAIC0yMzIsNyArMjM5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFMKICAgICBq
aXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVExUaHVuayk7Ci0gICAgcGF0Y2hCdWZmZXIubGlu
ayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKKyAgICBpZiAoa2V5LmNhbGxUYXJnZXQoKSkKKyAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2FsbFRhcmdldCgpKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJGVEwgc2xvdyBw
YXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDM1NGY5
NTQ3YjRhYmYzMjg5NmQxY2ViNGVhMjAwZmJiNGE0ZGVjY2QuLjA4NGIzOGVmODEyNTI3NTM5N2U2
YTM4YjVjNjI3Njc0YzBmMzRlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAK
KyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKQEAgLTY1Miw3ICs2NTMsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFZpcnR1YWxD
YWxsKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICBh
dXRvIGNhbGxMb2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpJVENvbXBp
bGF0aW9uUHRyVGFnPihjYWxsKTsKICAgICAgICAgbGlua0J1ZmZlci5hZGRNYWluVGhyZWFkRmlu
YWxpemF0aW9uVGFzayhbPSwgJnZtXSAoKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zv
cih2bSwgKmluZm8pOwotICAgICAgICAgICAgaW5mby0+c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0
dWJSb3V0aW5lOjpjcmVhdGUodmlydHVhbFRodW5rLCB2bSkpOworICAgICAgICAgICAgaW5mby0+
c2V0U2xvd1N0dWIoR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodm0sIHZpcnR1YWxUaHVu
aykpOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsTG9j
YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPih2aXJ0dWFsVGh1
bmsuY29kZSgpKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmluZGV4IDFhNzYzYjdhNzVkYmNhMTc4MWIwYjBmMDg5MmY0
ZjQ5MTljMWQ1YmMuLmI2YzNmZmIzYTljYzg3ZDFlZTg3NzE2MzgzNmVjMDhlY2IwNDBkZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQoVk0mIHZt
LCBHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcKICAgICBzdG9yZVB0cihzY3JhdGNoMiwgQWRk
cmVzcyhzY3JhdGNoMU5vbkFyZ0dQUikpOwogfQogCi12b2lkIENDYWxsSGVscGVyczo6ZW1pdEpJ
VENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZSwg
V1RGOjpGdW5jdGlvbjx2b2lkKENDYWxsSGVscGVycyYpPiBlbWl0Q29kZSwgY29uc3QgY2hhciog
ZGVzY3JpcHRpb24pCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZSwgU2NvcGVkTGFtYmRhPHZvaWQo
Q0NhbGxIZWxwZXJzJik+IGVtaXRDb2RlLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikKIHsKICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogICAgIGVtaXRDb2RlKGppdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2OGIxMjEzZjZkMjRjNzBhZmI1MDMzMjBlYWE3
MmQ4OWU3ZDg2YmU5Li5kODExODQ3YmFmMGJlZjNhN2UxMzk3NDEzN2VmM2JlODQxNmQzMjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb25UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRh
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yMDcsNyArMjA4LDcgQEAgY2xhc3MgQ0NhbGxI
ZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAKICAgICAvLyBleHRyYUdQUkFyZ3Mg
aXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIGluIHJlZ2lzdGVy
IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgogICAgIC8vIGV4dHJhUG9rZSBpcyB1c2VkIHRvIHRy
YWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgb24gdGhlIHN0YWNrLgotICAgIHRlbXBs
YXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgdGVt
cGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2ln
bmVkIGV4dHJhUG9rZT4KICAgICBzdHJ1Y3QgQXJnQ29sbGVjdGlvbiB7CiAgICAgICAgIEFyZ0Nv
bGxlY3Rpb24oKQogICAgICAgICB7CkBAIC0yMTksOCArMjIwLDggQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0
aW9ucy5maWxsKEludmFsaWRHUFJSZWcpOwogICAgICAgICB9CiAKLSAgICAgICAgdGVtcGxhdGU8
dW5zaWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQgYywgdW5zaWduZWQgZCwgdW5zaWduZWQg
ZSwgdW5zaWduZWQgZiwgdW5zaWduZWQgZz4KLSAgICAgICAgQXJnQ29sbGVjdGlvbihBcmdDb2xs
ZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGc+JiBvdGhlcikKKyAgICAgICAgdGVtcGxhdGU8dW5z
aWduZWQgYSwgdW5zaWduZWQgYiwgdW5zaWduZWQgYywgdW5zaWduZWQgZCwgdW5zaWduZWQgZSwg
dW5zaWduZWQgZiwgdW5zaWduZWQgZywgdW5zaWduZWQgaD4KKyAgICAgICAgQXJnQ29sbGVjdGlv
bihBcmdDb2xsZWN0aW9uPGEsIGIsIGMsIGQsIGUsIGYsIGcsIGg+JiBvdGhlcikKICAgICAgICAg
ewogICAgICAgICAgICAgZ3ByU291cmNlcyA9IG90aGVyLmdwclNvdXJjZXM7CiAgICAgICAgICAg
ICBncHJEZXN0aW5hdGlvbnMgPSBvdGhlci5ncHJEZXN0aW5hdGlvbnM7CkBAIC0yMzAsNjUgKzIz
MSw3NCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zID0gb3RoZXIuY3Jvc3NEZXN0aW5hdGlvbnM7CiAg
ICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJl
ZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVt
R1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVn
IGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsg
MSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhp
cyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJn
dW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNd
ID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAK
LSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRp
b24pCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwg
RlBSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2Vz
ICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0
aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAg
ICAgICAgICByZXN1bHQuZnByU291cmNlc1tudW1GUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAg
ICAgICAgICAgcmVzdWx0LmZwckRlc3RpbmF0aW9uc1tudW1GUFJTb3VyY2VzXSA9IGRlc3RpbmF0
aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAx
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0
aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAg
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3Ms
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVz
dWx0LmNyb3NzU291cmNlc1tudW1Dcm9zc1NvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAg
ICByZXN1bHQuY3Jvc3NEZXN0aW5hdGlvbnNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGRlc3RpbmF0aW9u
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBw
dXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9u
QXJnR1BScywgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJS
ZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMp
OworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsg
MSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MgKyAxLCBub25BcmdHUFJzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAg
ICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAg
ICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkR1BS
QXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsg
MSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIG5vbkFyZ0dQUnMgKyAxLCBleHRyYVBva2U+IHB1c2hOb25BcmcoR1BSUmVnIGFyZ3VtZW50
LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPigqdGhp
cyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMg
KyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKworICAgICAg
ICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKKyAgICAg
ICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlv
bjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiBhZGRHUFJBcmcoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQorICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJn
R1BScywgZXh0cmFQb2tlPiBhZGRHUFJFeHRyYUFyZygpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0
cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQorICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPigq
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9
CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhZGRT
dGFja0FyZyhGUFJSZWcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsg
MT4gYWRkUG9rZSgpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDE+
KCp0aGlzKTsKICAgICAgICAgfQogCiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKQEAg
LTMzMSwxMiArMzQxLDE0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1l
bnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKKyAgICBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIGNhbGN1bGF0ZVBva2VPZmZzZXQodW5zaWduZWQgY3VycmVudEdQUkFy
Z3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25l
ZCBleHRyYVBva2UpCiAgICAgewogICAgICAgICAvLyBDbGFuZyBjbGFpbXMgdGhhdCBpdCBjYW5u
b3QgZmluZCB0aGUgc3ltYm9sIGZvciBGUFJSZWcvR1BSUmVnOjpudW1iZXJPZkFyZ3VtZW50UmVn
aXN0ZXJzIHdoZW4gdGhleSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHN0ZDo6bWF4Li4uIHNlZW1z
IGxpa2UgYSBidWcKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJz
ID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKIAorICAgICAgICBVTlVTRURfUEFSQU0obm9uQXJnR1BScyk7CisKICAgICAgICAg
Y3VycmVudEdQUkFyZ3VtZW50ICs9IGV4dHJhR1BSQXJnczsKICAgICAgICAgY3VycmVudEZQUkFy
Z3VtZW50IC09IG51bUNyb3NzU291cmNlczsKICAgICAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lO
KCJ0eXBlLWxpbWl0cyIpCkBAIC0zNTAsMTUgKzM2MiwxNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMg
OiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBcmdUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlw
ZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFy
Z3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwb2tlRm9yQXJndW1l
bnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3Vy
cmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsK
LSAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVu
dEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3Vs
YXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAg
ICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3Vy
cmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBzdGFj
a0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBS
QXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewotICAgICAg
ICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJn
dW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSk7CisgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tl
T2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAgICAgICAgcmV0
dXJuICEocG9rZU9mZnNldCAmIDEpOwogICAgIH0KIApAQCAtMzc2LDggKzM4OCw4IEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2lmIFVTRShKU1ZBTFVF
NjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9wdGltaXphdGlvbiB0aW1lIGV4cGxvc2lvbiBhc3Nv
Y2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBpbiByZWN1cnNpdmUgdGVtcGxhdGVzLgotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3Rl
cihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5v
bkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQgbWFyc2hhbGxBcmd1
bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5v
bkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVnVHlwZSBhcmcsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIHVzaW5nIEluZm9UeXBlID0gSW5mb1R5cGVGb3JSZWc8UmVn
VHlwZT47CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEluZm9UeXBlOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwpAQCAtMzkyLDMxICs0MDQsMzEgQEAgY2xhc3MgQ0NhbGxI
ZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJn
KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJn
R1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJS
ZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxk
IG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAgICAgICAgIG1hcnNoYWxs
QXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQ
UlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywg
YXJnLmdwcigpLCBhcmdzLi4uKTsKICAgICB9CkBAIC00MjQsOCArNDM2LDggQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAjZWxzZSAvLyBVU0UoSlNWQUxV
RTY0KQogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQUykKIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFy
Z0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJF
TlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNz
aW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKIApAQCAtNDY5LDI1ICs0ODEsMjUgQEAgY2xhc3Mg
Q0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQgPCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMp
IHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKKyAgICAg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKICAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZEdQUkV4dHJhQXJnKCkuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKIAogICAgICAgICAvLyBPdGhl
cndpc2UgcGFzcyBGUCBhcmd1bWVudCBvbiBzdGFjay4KLSAgICAgICAgaWYgKHN0YWNrQWxpZ25l
ZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlKSkgewotICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7
CisgICAgICAgIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSkpIHsKKyAgICAg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwogICAgICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRk
U3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICAg
ICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3Rh
Y2tBcmcoYXJnKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
ICAgICBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQ+
Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJl
ZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2ln
bmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKQEAgLTQ5
NywzNCArNTA5LDM0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFy
Z3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFt
ZSBBcmcyLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBwb2tlQXJndW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmdzLi4uIGFyZ3MpCiAgICAgewog
ICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3Vy
Y2VSZWdzLmFyZ0NvdW50KEdQUkluZm86OnJlZ1QwKTsKIAogICAgICAgICBpZiAoY3VycmVudEFy
Z0NvdW50ICsgMSA9PSBudW1BcmdSZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncyArIDEsIGV4dHJhUG9rZSk7Ci0gICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
MiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Mg
KyAxLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEs
IG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
MiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Mg
KyAxLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRk
R1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdGFja0Fs
aWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSkpIHsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlKTsKLSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpKSB7Cisg
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7Cisg
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSArIDEp
OwogICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7Ci0gICAgICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDIpOworICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAg
IHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlICsgMik7CiAgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRH
UFJBcmcoKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICAgICAgfQogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAg
ICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVu
Y29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
Q2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBDZWxsVmFsdWUgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0g
YXJnU291cmNlUmVncy5hcmdDb3VudChwYXlsb2FkLmdwcigpKTsKQEAgLTU0NCw5ICs1NTYsOSBA
QCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAg
ICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIHBh
eWxvYWQuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNp
Z25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywg
dW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgogICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykK
ICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9
IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnLnRhZ0dQUigpKTsKQEAgLTU2OSwxMSArNTgxLDEx
IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogI2VuZGlm
IC8vIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoTUlQUykKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxl
X2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxUcnVzdGVkSW1tLCBBcmc+Ojp2YWx1ZQog
ICAgICAgICB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPEFyZywgVHJ1c3RlZEltbT46OnZhbHVlPiAv
LyBXZSBoYXZlIHRoaXMgc2luY2UgREZHU3BlY3VsYXRpdmVKSVQgaGFzIGl0J3Mgb3duIGltcGxl
bWVudGF0aW9uIG9mIFRydXN0ZWRJbW1QdHIKLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAg
Ly8gUmlnaHQgbm93IHRoaXMgb25seSBzdXBwb3J0cyBub24tZmxvYXRpbmcgcG9pbnQgaW1tZWRp
YXRlIGFyZ3VtZW50cyBzaW5jZSB3ZSBuZXZlciBjYWxsIG9wZXJhdGlvbnMgd2l0aCBub24tcmVn
aXN0ZXIgdmFsdWVzLgogICAgICAgICAvLyBJZiB3ZSBldmVyIG5lZWRlZCB0byBzdXBwb3J0IGlt
bWVkaWF0ZSBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMgd2Ugd291bGQgbmVlZCB0byBkdXBsaWNh
dGUgdGhpcyBsb2dpYyBmb3IgYm90aCB0eXBlcywgd2hpY2ggc291bmRzCkBAIC01OTEsNDYgKzYw
Myw0NiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChh
cmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
bm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6
OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBz
dGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYm
IChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0KT4KLSAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAg
IHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MsIFRydXN0ZWRJbW0zMihhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3Rk
Ojppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYg
c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAm
JiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPT0gOCk+Ci0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLCBUcnVzdGVkSW1tNjQoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUu
Li4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0
ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAo
KHN0ZDo6aXNfcG9pbnRlcjxBcmc+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPHN0ZDo6
cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcG9pbnRlcl90PEFyZz4+KiwgQ1VSUkVOVF9BUkdV
TUVOVF9UWVBFPjo6dmFsdWUpCiAgICAgICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8QXJnLCBzdGQ6
Om51bGxwdHJfdD46OnZhbHVlKT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIo
YXJnKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgLy8gU3BlY2lhbCBjYXNlIERGRzo6UmVnaXN0
ZXJlZFN0cnVjdHVyZSBiZWNhdXNlIGl0J3MgcmVhbGx5IGFubm95aW5nIHRvIGRlYWwgd2l0aCBv
dGhlcndpc2UuLi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3Rk
OjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RSwgU3RydWN0dXJlKj46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfc2FtZTxBcmcsIERGRzo6
UmVnaXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3Rl
ZEltbVB0cihhcmcuZ2V0KCkpLCBhcmdzLi4uKTsKICAgICB9CkBAIC02MzksOCArNjUxLDggQEAg
Y2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAjdW5kZWYgUkVT
VUxUX1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVwIHRoZSBhcmd1bWVudCByZWdpc3Rl
cnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5z
aWduZWQgZXh0cmFQb2tlPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChG
dW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPT0gbnVtR1BSQXJncyArIG51bUZQ
UkFyZ3MsICJPbmUgbGFzdCBzYW5pdHkgY2hlY2siKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAt
NjU1LDMxICs2NjcsNDQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVtRlBSU291cmNlcywgRlBSUmVnPihjbGFt
cEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJEZXN0
aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291
cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAgfQogCi1wdWJsaWM6CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5v
bkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNFbnRyeUltcGwoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1c2luZyBGaXJzdEFyZ3VtZW50VHlw
ZSA9IHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1
bWVudFR5cGU8MD47CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPEZpcnN0QXJn
dW1lbnRUeXBlLCBDYWxsRnJhbWUqPjo6dmFsdWUpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFs
dWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCisgICAgICAgICAgICBzdGF0aWNf
YXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6
ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOworI2VuZGlmCisgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOworICAgICAgICB9IGVsc2UgeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZv
ciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4K
KyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46
OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJCYXNpYyBzYW5pdHkgY2hlY2siKTsK
KyNlbmRpZgorICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAgICAgICB9CisgICAgfQogCi0jZGVmaW5lIEZJUlNU
X0FSR1VNRU5UX1RZUEUgdHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OnRl
bXBsYXRlIEFyZ3VtZW50VHlwZTwwPgorcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPEZJUlNUX0FSR1VNRU5UX1RZUEUsIENhbGxGcmFtZSo+
Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4uLiBhcmdzKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50cyhBcmdzLi4uIGFyZ3MpCiAgICAgewotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0LWJpdCBzaW5jZSBq
c3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6
ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwotI2VuZGlmCi0gICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihB
cmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0
aW9uVHlwZT4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4u
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19z
YW1lPEZJUlNUX0FSR1VNRU5UX1RZUEUsIENhbGxGcmFtZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVu
dHMoQXJncy4uLiBhcmdzKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0Zv
ckluZGlyZWN0Q2FsbChHUFJSZWcgZnVuY3Rpb25HUFIsIEFyZ3MuLi4gYXJncykKICAgICB7Ci0j
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3Ig
NjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCi0g
ICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxs
QXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKLSNlbmRp
ZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwg
MCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4uKTsK
KyAgICAgICAgc2V0dXBBcmd1bWVudHNFbnRyeUltcGw8T3BlcmF0aW9uVHlwZT4oQXJnQ29sbGVj
dGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwPigpLnB1c2hOb25BcmcoZnVuY3Rpb25HUFIsIEdQ
UkluZm86Om5vbkFyZ0dQUjApLCBhcmdzLi4uKTsKICAgICB9CiAKLSN1bmRlZiBGSVJTVF9BUkdV
TUVOVF9UWVBFCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVj
dENhbGwoQWRkcmVzcyBhZGRyZXNzLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBzZXR1
cEFyZ3VtZW50c0VudHJ5SW1wbDxPcGVyYXRpb25UeXBlPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDA+KCkucHVzaE5vbkFyZyhhZGRyZXNzLmJhc2UsIEdQUkluZm86Om5vbkFy
Z0dQUjApLCBhcmdzLi4uKTsKKyAgICB9CiAKICAgICB2b2lkIHNldHVwUmVzdWx0cyhHUFJSZWcg
ZGVzdEEsIEdQUlJlZyBkZXN0QikKICAgICB7CkBAIC04MTksNyArODQ0LDcgQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgLy8gTGVhdmVzIGJlaGlu
ZCBhIHBvaW50ZXIgdG8gdGhlIFBhY2tldCB3ZSBzaG91bGQgd3JpdGUgdG8gaW4gc2hhZG93UGFj
a2V0LgogICAgIHZvaWQgZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChWTSYsIEdQUlJlZyBzaGFk
b3dQYWNrZXQsIEdQUlJlZyBzY3JhdGNoMU5vbkFyZ0dQUiwgR1BSUmVnIHNjcmF0Y2gyKTsKIAot
ICAgIHN0YXRpYyB2b2lkIGVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJ
bnRlcm5hbFB0clRhZz4gd2hlcmUsIFdURjo6RnVuY3Rpb248dm9pZChDQ2FsbEhlbHBlcnMmKT4s
IGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29kZU92ZXIoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBTY29wZWRMYW1iZGE8dm9pZChD
Q2FsbEhlbHBlcnMmKT4sIGNvbnN0IGNoYXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRp
bmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUu
Y3BwCmluZGV4IGY3YWEzMjlmZTI1ZDE5YzczNzE4NDcwYWVmZmIzYjRhYWVhMDVkYjYuLmU2NjQx
YmY2MmY0ZDYyN2ZjZjM1ZDMwMDFmYjhhMjVjYzRhYjQyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgogI2luY2x1ZGUg
IkhlYXAuaCIKQEAgLTM4LDE4ICszOSwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtKQorR0NB
d2FyZUpJVFN0dWJSb3V0aW5lOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSkKICAgICA6IEpJVFN0dWJS
b3V0aW5lKGNvZGUpCiB7Ci0gICAgdm0uaGVhcC5tX2ppdFN0dWJSb3V0aW5lcy0+YWRkKHRoaXMp
OwogfQogCiBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6On5HQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSB7
IH0KIAordm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1ha2VHQ0F3YXJlKFZNJiB2bSkKK3sK
KyAgICB2bS5oZWFwLm1faml0U3R1YlJvdXRpbmVzLT5hZGQodGhpcyk7CisgICAgbV9pc0dDQXdh
cmUgPSB0cnVlOworfQorCiB2b2lkIEdDQXdhcmVKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9S
ZWZDb3VudCgpCiB7Ci0gICAgaWYgKG1faXNKZXR0aXNvbmVkKSB7CisgICAgaWYgKG1faXNKZXR0
aXNvbmVkIHx8ICFtX2lzR0NBd2FyZSkgewogICAgICAgICAvLyBUaGlzIGNhc2UgaXMgbmVlZGVk
IGZvciB3aGVuIHRoZSBzeXN0ZW0gc2h1dHMgZG93bi4gSXQgbWF5IGJlIHRoYXQKICAgICAgICAg
Ly8gdGhlIEpJVCBzdHViIHJvdXRpbmUgc2V0IGdldHMgZGVsZXRlZCBiZWZvcmUgd2UgZ2V0IGFy
b3VuZCB0byBkZWxldGluZwogICAgICAgICAvLyB0aGlzIGd1eS4gSW4gdGhhdCBjYXNlIHRoZSBH
QyBpbmZvcm1zIHVzIHRoYXQgd2UncmUgamV0dGlzb25lZCBhbHJlYWR5CkBAIC03NCwxMCArNzks
MzUgQEAgdm9pZCBHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmRlbGV0ZUZyb21HQygpCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKK1BvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU6OlBvbHltb3Jw
aGljQWNjZXNzSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmIHdlYWtTdHJ1Y3R1cmVz
KQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUpCisgICAgLCBtX3ZtKHZtKQorICAg
ICwgbV9jYXNlcyhXVEZNb3ZlKGNhc2VzKSkKKyAgICAsIG1fd2Vha1N0cnVjdHVyZXMoV1RGTW92
ZSh3ZWFrU3RydWN0dXJlcykpCit7Cit9CisKK3ZvaWQgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHVi
Um91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpCit7CisgICAgaWYgKG1fdm0ubV9zaGFyZWRK
SVRTdHVicykKKyAgICAgICAgbV92bS5tX3NoYXJlZEpJVFN0dWJzLT5yZW1vdmUodGhpcyk7Cisg
ICAgQmFzZTo6b2JzZXJ2ZVplcm9SZWZDb3VudCgpOworfQorCit1bnNpZ25lZCBQb2x5bW9ycGhp
Y0FjY2Vzc0pJVFN0dWJSb3V0aW5lOjpjb21wdXRlSGFzaChjb25zdCBGaXhlZFZlY3RvcjxSZWZQ
dHI8QWNjZXNzQ2FzZT4+JiBjYXNlcywgY29uc3QgRml4ZWRWZWN0b3I8U3RydWN0dXJlSUQ+JiB3
ZWFrU3RydWN0dXJlcykKK3sKKyAgICBIYXNoZXIgaGFzaGVyOworICAgIGZvciAoYXV0byYga2V5
IDogY2FzZXMpCisgICAgICAgIFdURjo6YWRkKGhhc2hlciwga2V5LT5oYXNoKCkpOworICAgIGZv
ciAoYXV0byYgc3RydWN0dXJlSUQgOiB3ZWFrU3RydWN0dXJlcykKKyAgICAgICAgV1RGOjphZGQo
aGFzaGVyLCBzdHJ1Y3R1cmVJRCk7CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKIE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Ok1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUo
Ci0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYg
Y29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLAorICAgIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgRml4ZWRWZWN0
b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLCBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4m
JiB3ZWFrU3RydWN0dXJlcywgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICBjb25zdCBWZWN0b3I8
SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MpCi0gICAg
OiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pCisgICAgOiBQb2x5bW9ycGhpY0FjY2Vz
c0pJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3Ry
dWN0dXJlcykpCiAgICAgLCBtX2NlbGxzKGNlbGxzLnNpemUoKSkKICAgICAsIG1fY2FsbExpbmtJ
bmZvcyhXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKQogewpAQCAtMTA2LDkgKzEzNiw5IEBAIHZvaWQg
TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFs
KFNsb3RWaXNpdG9yJiB2aXNpCiB9CiAKIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRp
b25IYW5kbGVyOjpHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcigKLSAg
ICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2Rl
LCBWTSYgdm0sICBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mIGNl
bGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCisgICAgY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBGaXhl
ZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYgY2FzZXMsIEZpeGVkVmVjdG9yPFN0cnVjdHVy
ZUlEPiYmIHdlYWtTdHJ1Y3R1cmVzLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8
SlNDZWxsKj4mIGNlbGxzLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxT
aXRlSW5kZXggZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpCi0gICAgOiBNYXJraW5nR0NB
d2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBvd25lciwgY2VsbHMsIFdURk1vdmUoY2FsbExp
bmtJbmZvcykpCisgICAgOiBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBX
VEZNb3ZlKGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcyksIG93bmVyLCBjZWxscywgV1RG
TW92ZShjYWxsTGlua0luZm9zKSkKICAgICAsIG1fY29kZUJsb2NrV2l0aEV4Y2VwdGlvbkhhbmRs
ZXIoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgLCBtX2NvZGVPcmlnaW5Qb29sKCZtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyLT5j
b2RlT3JpZ2lucygpKQpAQCAtMTUyLDggKzE4MiwxMCBAQCB2b2lkIEdDQXdhcmVKSVRTdHViUm91
dGluZVdpdGhFeGNlcHRpb25IYW5kbGVyOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKIH0KIAogCi1S
ZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorUmVmPFBvbHltb3JwaGlj
QWNjZXNzSklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlDSklUU3R1YlJvdXRpbmUoCiAgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwKKyAgICBG
aXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYgY2FzZXMsCisgICAgRml4ZWRWZWN0b3I8
U3RydWN0dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMsCiAgICAgVk0mIHZtLAogICAgIGNvbnN0IEpT
Q2VsbCogb3duZXIsCiAgICAgYm9vbCBtYWtlc0NhbGxzLApAQCAtMTY1LDE4ICsxOTcsMjUgQEAg
UmVmPEpJVFN0dWJSb3V0aW5lPiBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICBpZiAoIW1ha2Vz
Q2FsbHMpIHsKICAgICAgICAgLy8gQWxsb2NhdGluZyBDYWxsTGlua0luZm9zIG1lYW5zIHdlIHNo
b3VsZCBoYXZlIGNhbGxzLgogICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkp
OwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKSVRTdHViUm91dGluZShjb2RlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRp
bmUoY29kZSwgdm0sIFdURk1vdmUoY2FzZXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVzKSkpOwog
ICAgIH0KICAgICAKICAgICBpZiAoY29kZUJsb2NrRm9yRXhjZXB0aW9uSGFuZGxlcnMpIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9ja0Zv
ckV4Y2VwdGlvbkhhbmRsZXJzLT5qaXRUeXBlKCkpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29kZSwgdm0s
IG93bmVyLCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSwgY29kZUJsb2NrRm9yRXhjZXB0
aW9uSGFuZGxlcnMsIGV4Y2VwdGlvbkhhbmRsZXJDYWxsU2l0ZUluZGV4KSk7CisgICAgICAgIGF1
dG8gc3R1YiA9IGFkb3B0UmVmKCpuZXcgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4Y2VwdGlv
bkhhbmRsZXIoY29kZSwgdm0sIFdURk1vdmUoY2FzZXMpLCBXVEZNb3ZlKHdlYWtTdHJ1Y3R1cmVz
KSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpLCBjb2RlQmxvY2tGb3JFeGNl
cHRpb25IYW5kbGVycywgZXhjZXB0aW9uSGFuZGxlckNhbGxTaXRlSW5kZXgpKTsKKyAgICAgICAg
c3R1Yi0+bWFrZUdDQXdhcmUodm0pOworICAgICAgICByZXR1cm4gc3R1YjsKICAgICB9CiAKLSAg
ICBpZiAoY2VsbHMuaXNFbXB0eSgpICYmIGNhbGxMaW5rSW5mb3MuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUoY29kZSwgdm0pOworICAgIGlm
IChjZWxscy5pc0VtcHR5KCkgJiYgY2FsbExpbmtJbmZvcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
YXV0byBzdHViID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5l
KGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcykpKTsKKyAg
ICAgICAgc3R1Yi0+bWFrZUdDQXdhcmUodm0pOworICAgICAgICByZXR1cm4gc3R1YjsKKyAgICB9
CiAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlLCB2bSwgb3duZXIsIGNlbGxzLCBXVEZNb3ZlKGNhbGxMaW5rSW5mb3MpKSk7Cisg
ICAgYXV0byBzdHViID0gYWRvcHRSZWYoKm5ldyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KGNvZGUsIHZtLCBXVEZNb3ZlKGNhc2VzKSwgV1RGTW92ZSh3ZWFrU3RydWN0dXJlcyksIG93bmVy
LCBjZWxscywgV1RGTW92ZShjYWxsTGlua0luZm9zKSkpOworICAgIHN0dWItPm1ha2VHQ0F3YXJl
KHZtKTsKKyAgICByZXR1cm4gc3R1YjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRleCA0
OGJlZmJjNDg3ZmNhMjU3MGM2NWM5MjlmOTRkMThlNmNlMWNhOWZkLi4zYTY3ZGZiYzU4NmZiN2E1
Y2RlZmYyMTVmODQ0Njg4YTIwY2I5ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9G
aXhlZFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2UgREZH
IHsKIGNsYXNzIENvZGVPcmlnaW5Qb29sOwogfQogCitjbGFzcyBBY2Nlc3NDYXNlOwogY2xhc3Mg
Q2FsbExpbmtJbmZvOwogY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7CiAKQEAgLTU0LDEyICs1Niwx
NCBAQCBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIC8vIGxpc3Qgd2hpY2ggZG9lcyBub3QgZ2V0
IHJlY2xhaW1lZCBhbGwgYXQgb25jZSkuCiBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBw
dWJsaWMgSklUU3R1YlJvdXRpbmUgewogcHVibGljOgotICAgIEdDQXdhcmVKSVRTdHViUm91dGlu
ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0m
KTsKKyAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmUoKSBv
dmVycmlkZTsKIAotICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0p
CisgICAgc3RhdGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKFZNJiB2bSwgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2
bSkpOworICAgICAgICBhdXRvIHN0dWIgPSBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlKSk7CisgICAgICAgIHN0dWItPm1ha2VHQ0F3YXJlKHZtKTsKKyAgICAgICAgcmV0
dXJuIHN0dWI7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KQEAgLTY5
LDYgKzczLDggQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJS
b3V0aW5lIHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBkZWxldGVGcm9tR0MoKTsKKworICAgIHZv
aWQgbWFrZUdDQXdhcmUoVk0mKTsKICAgICAKIHByb3RlY3RlZDoKICAgICB2b2lkIG9ic2VydmVa
ZXJvUmVmQ291bnQoKSBvdmVycmlkZTsKQEAgLTgxLDE0ICs4Nyw0NCBAQCBjbGFzcyBHQ0F3YXJl
SklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgSklUU3R1YlJvdXRpbmUgewogCiAgICAgYm9vbCBtX21h
eUJlRXhlY3V0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNKZXR0aXNvbmVkIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faXNHQ0F3YXJlIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFBvbHltb3Jw
aGljQWNjZXNzSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gR0NBd2FyZUpJVFN0dWJSb3V0aW5lOworCisgICAg
UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNz
Q2FzZT4+JiYsIEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYmKTsKKworICAgIGNvbnN0IEZpeGVk
VmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mIGNhc2VzKCkgY29uc3QgeyByZXR1cm4gbV9jYXNl
czsgfQorICAgIGNvbnN0IEZpeGVkVmVjdG9yPFN0cnVjdHVyZUlEPiYgd2Vha1N0cnVjdHVyZXMo
KSBjb25zdCB7IHJldHVybiBtX3dlYWtTdHJ1Y3R1cmVzOyB9CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9oYXNoKQorICAgICAgICAgICAgbV9oYXNo
ID0gY29tcHV0ZUhhc2gobV9jYXNlcywgbV93ZWFrU3RydWN0dXJlcyk7CisgICAgICAgIHJldHVy
biBtX2hhc2g7CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0
IEZpeGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mLCBjb25zdCBGaXhlZFZlY3RvcjxTdHJ1
Y3R1cmVJRD4mKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgp
IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAgIEZpeGVkVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NDYXNlPj4gbV9jYXNlczsKKyAgICBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4g
bV93ZWFrU3RydWN0dXJlczsKIH07CiAKIC8vIFVzZSB0aGlzIGlmIHlvdSB3YW50IHRvIG1hcmsg
b25lIGFkZGl0aW9uYWwgb2JqZWN0IGR1cmluZyBHQyBpZiB5b3VyIHN0dWIKIC8vIHJvdXRpbmUg
aXMga25vd24gdG8gYmUgZXhlY3V0aW5nLgotY2xhc3MgTWFya2luZ0dDQXdhcmVKSVRTdHViUm91
dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgeworY2xhc3MgTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5l
IHsKIHB1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91
dGluZTsKKwogICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoCi0gICAgICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0
IEpTQ2VsbCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+
JiYpOworICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+JiwgVk0mLCBGaXhlZFZlY3RvcjxSZWZQdHI8QWNjZXNzQ2FzZT4+JiYsIEZpeGVkVmVj
dG9yPFN0cnVjdHVyZUlEPiYmLCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBWZWN0b3I8SlND
ZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmKTsKICAgICB+TWFya2luZ0dDQXdhcmVKSVRTdHVi
Um91dGluZSgpIG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMTA3LDkgKzE0Myw5IEBA
IGNsYXNzIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lIHsKIC8vIGZvciBuZXcgZXhjZXB0aW9uIGhhbmRsZXJzIHRvIHVzZSB0aGUgc2Ft
ZSBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleC4KIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdp
dGhFeGNlcHRpb25IYW5kbGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJv
dXRpbmUgewogcHVibGljOgotICAgIHR5cGVkZWYgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIEJhc2U7
CisgICAgdXNpbmcgQmFzZSA9IE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CiAKLSAgICBH
Q0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlcihjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBjb25zdCBWZWN0b3I8SlNDZWxsKj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBDb2RlQmxv
Y2sqLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCk7CisgICAgR0NBd2FyZUpJVFN0dWJSb3V0aW5l
V2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiYsIFZNJiwgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmLCBG
aXhlZFZlY3RvcjxTdHJ1Y3R1cmVJRD4mJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3QgVmVj
dG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9zYWJs
ZUNhbGxTaXRlSW5kZXgpOwogICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9u
SGFuZGxlcigpIGZpbmFsOwogCiAgICAgdm9pZCBhYm91dFRvRGllKCkgZmluYWw7CkBAIC0xMjks
OSArMTY1LDEwIEBAIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZVdpdGhFeGNlcHRpb25IYW5k
bGVyIGZpbmFsIDogcHVibGljIE1hcmtpbmdHQ0F3YXJlSklUCiAvLyBhcHByb3ByaWF0ZS4gR2Vu
ZXJhbGx5IHlvdSBvbmx5IG5lZWQgdG8gcGFzcyBwb2ludGVycyB0aGF0IHdpbGwgYmUgdXNlZAog
Ly8gYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgdG8gQysrIG9yIEpTLgogLy8gCi0vLyBSZWY8SklUU3R1
YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAorLy8gUmVmPFBvbHltb3JwaGljQWNjZXNz
SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlDSklUU3R1YlJvdXRpbmUoCiAvLyAgICBjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLAogLy8gICAgVk0m
IHZtLAorLy8gICAgRml4ZWRWZWN0b3I8UmVmUHRyPEFjY2Vzc0Nhc2U+PiYmIGNhc2VzLAogLy8g
ICAgY29uc3QgSlNDZWxsKiBvd25lciwKIC8vICAgIGJvb2wgbWFrZXNDYWxscywKIC8vICAgIC4u
Lik7CkBAIC0xNDIsOCArMTc5LDggQEAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lV2l0aEV4
Y2VwdGlvbkhhbmRsZXIgZmluYWwgOiBwdWJsaWMgTWFya2luZ0dDQXdhcmVKSVQKIC8vIHRoaXMg
ZnVuY3Rpb24gdXNpbmcgdmFyYXJncywgSSBlbmRlZCB1cCB3aXRoIG1vcmUgY29kZSB0aGFuIHRo
aXMgc2ltcGxlCiAvLyB3YXkuCiAKLVJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlSklUU3R1YlJv
dXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAorUmVmPFBv
bHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmU+IGNyZWF0ZUlDSklUU3R1YlJvdXRpbmUoCisg
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIEZp
eGVkVmVjdG9yPFJlZlB0cjxBY2Nlc3NDYXNlPj4mJiBjYXNlcywgRml4ZWRWZWN0b3I8U3RydWN0
dXJlSUQ+JiYgd2Vha1N0cnVjdHVyZXMsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBt
YWtlc0NhbGxzLAogICAgIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+
JiYgY2FsbExpbmtJbmZvcywKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9ja0ZvckV4Y2VwdGlvbkhh
bmRsZXJzLCBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBleGNlcHRpb25IYW5kbGluZ0NhbGxTaXRl
SW5kZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDhmNDViMzc3YzE2
OTZhNTE2YTg0MzAwYjg5MjFmNmFkZDZhM2Q0ZGQuLjA2N2FiZmYxZDZhZDIwMDc1NDUxODAwNzdi
MGM0YTU1Yzc3NzIyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC00NjAs
NiArNDYwLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
YXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpyOTsgLy8gcmVnVDMKICNlbmRpZgogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8g
cmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9u
QXJnR1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJz
OjplZHg7IC8vIHJlZ1QxIG9yIHJlZ1QyCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdU
NCBvbiBXaW5kb3dzKQpAQCAtNjUyLDYgKzY1Myw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSNiA9IEFSTTY0UmVnaXN0ZXJzOjp4Njsg
Ly8gcmVnVDYKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjcgPSBBUk02
NFJlZ2lzdGVyczo6eDc7IC8vIHJlZ1Q3CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9u
QXJnR1BSMCA9IEFSTTY0UmVnaXN0ZXJzOjp4ODsgLy8gcmVnVDgKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub25BcmdHUFIxID0gQVJNNjRSZWdpc3RlcnM6Ong5OyAvLyByZWdUOQogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gQVJNNjRSZWdpc3RlcnM6
OngwOyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BS
MiA9IEFSTTY0UmVnaXN0ZXJzOjp4MTsgLy8gcmVnVDEKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk02NFJlZ2lzdGVyczo6eDI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMWFmZmU5ZTkzNzc2Mjk2ZmY3Mjc5ZTE3ZjUwYmI4
MjhhMTQ1M2FmMy4uZmQyM2JiOTFiYzkxNzA5MDIyYjE2NjIzMTczNWYxNTI0Yzg5OTMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTI2NSwxMiArMTI2NSwxMiBAQCB2b2lkIEpJ
VDo6bGluaygpCiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBieVZhbENvbXBpbGF0aW9uSW5m
byA6IG1fYnlWYWxDb21waWxhdGlvbkluZm8pIHsKICAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAg
cGF0Y2hhYmxlTm90SW5kZXhKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8ubm90SW5kZXhKdW1w
OwotICAgICAgICAgICAgYXV0byBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50
ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+IG5vdEluZGV4SnVtcDsKICAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdElu
ZGV4SnVtcCkuaXNTZXQoKSkKICAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9j
YXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7CiAKICAgICAgICAgICAgIFBhdGNo
YWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRU
eXBlSnVtcDsKLSAgICAgICAgICAgIGF1dG8gYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1w
PEpTSW50ZXJuYWxQdHJUYWc+KCk7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50
ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwogICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxl
QmFkVHlwZUp1bXApLmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAgPSBDb2Rl
TG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJ
bnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKIApAQCAt
MTI3OSwxNCArMTI3OSwxOSBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgICAgICBhdXRvIHNs
b3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hC
dWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5z
bG93UGF0aFRhcmdldCkpOwogCiAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZh
bEluZm8tPnNldFVwKAotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCwKLSAgICAgICAgICAg
ICAgICBiYWRUeXBlSnVtcCwKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLAogICAg
ICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKICAgICAgICAgICAg
ICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCiAgICAgICAgICAgICAgICAg
ZG9uZVRhcmdldCwKICAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwKICAgICAgICAg
ICAgICAgICBzbG93UGF0aFRhcmdldCk7CisgICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGls
YXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBzbG93UGF0aFRhcmdl
dC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAgICAgICAgICBieVZh
bENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBzbG93UGF0
aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5t
X25vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKKyAgICAgICAgICAgICAgICBieVZhbENvbXBp
bGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAgPSBiYWRUeXBlSnVtcDsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
NTgwZmY1MDEzNTczZmE2ODU3MTcyMGZlMTc3OGUyNTE2ZGFlNzc5ZC4uN2ZlZDhiYTQ4OTkwNjJk
ODA4OTJjZDI1YWIxZTAxZTJmYWYyOGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0y
OTQsNiArMjk0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uQ2FsbDsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgYXBwZW5kQ2FsbChBZGRyZXNzIGZ1
bmN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsKGZ1bmN0aW9uLCBPcGVyYXRpb25Q
dHJUYWcpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAg
ICAgICBDYWxsIGFwcGVuZENhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiAgICAgICAgIHsKQEAgLTM5NywzOSArNDAy
LDM5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBQcm9wZXJ0eSBpcyBpbnQtY2hlY2tl
ZCBhbmQgemVybyBleHRlbmRlZC4gQmFzZSBpcyBjZWxsIGNoZWNrZWQuCiAgICAgICAgIC8vIFN0
cnVjdHVyZSBpcyBhbHJlYWR5IHByb2ZpbGVkLiBSZXR1cm5zIHRoZSBzbG93IGNhc2VzLiBGYWxs
LXRocm91Z2gKICAgICAgICAgLy8gY2FzZSBjb250YWlucyByZXN1bHQgaW4gcmVnVDAsIGFuZCBp
dCBpcyBub3QgeWV0IHByb2ZpbGVkLgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJMb2FkKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkgeyBy
ZXR1cm4gZW1pdENvbnRpZ3VvdXNMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlLCBJbnQzMlNoYXBl
KTsgfQotICAgICAgICBKdW1wTGlzdCBlbWl0RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbios
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOwotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91
c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGlu
Z1R5cGUgZXhwZWN0ZWRTaGFwZSA9IENvbnRpZ3VvdXNTaGFwZSk7Ci0gICAgICAgIEp1bXBMaXN0
IGVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSk7Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGNvbnN0IElu
c3RydWN0aW9uKiwgSklUQXJyYXlNb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKTsKKyAgICAg
ICAgSnVtcExpc3QgZW1pdEludDMyTG9hZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKSB7IHJldHVybiBl
bWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbywgSW50MzJT
aGFwZSk7IH0KKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZUxvYWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qKTsKKyAgICAgICAgSnVtcExp
c3QgZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgQnlWYWxJbmZvKiwgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUgPSBDb250aWd1
b3VzU2hhcGUpOworICAgICAgICBKdW1wTGlzdCBlbWl0QXJyYXlTdG9yYWdlTG9hZChjb25zdCBJ
bnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyopOworICAgICAg
ICBKdW1wTGlzdCBlbWl0TG9hZEZvckFycmF5TW9kZShjb25zdCBJbnN0cnVjdGlvbiosIEpJVEFy
cmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CiAKICAgICAgICAg
Ly8gUHJvcGVydHkgaXMgaW4gcmVnVDEsIGJhc2UgaXMgaW4gcmVnVDAuIHJlZ1QyIGNvbnRhaW5z
IGluZGVjaW5nIHR5cGUuCiAgICAgICAgIC8vIFRoZSB2YWx1ZSB0byBzdG9yZSBpcyBub3QgeWV0
IGxvYWRlZC4gUHJvcGVydHkgaXMgaW50LWNoZWNrZWQgYW5kCiAgICAgICAgIC8vIHplcm8tZXh0
ZW5kZWQuIEJhc2UgaXMgY2VsbCBjaGVja2VkLiBTdHJ1Y3R1cmUgaXMgYWxyZWFkeSBwcm9maWxl
ZC4KICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2xvdyBjYXNlcy4KICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMlB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0SW50MzJQ
dXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBi
eVZhbEluZm8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJTaGFwZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUs
IGJ5VmFsSW5mbywgSW50MzJTaGFwZSk7CiAgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29k
ZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKKyAgICAgICAgSnVtcExpc3QgZW1pdERvdWJsZVB1
dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUs
IGJ5VmFsSW5mbywgRG91YmxlU2hhcGUpOwogICAgICAgICB9CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0Q29udGlndW91c1B1dEJ5VmFsKE9wIGJ5
dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQorICAgICAgICBKdW1wTGlzdCBlbWl0Q29u
dGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5l
cmljQ29udGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgYnlW
YWxJbmZvKTsKICAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAg
ICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1
bXAmIGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlID0gQ29udGlndW91c1NoYXBl
KTsKKyAgICAgICAgSnVtcExpc3QgZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyosIEluZGV4aW5nVHlwZSBpbmRleGluZ1No
YXBlID0gQ29udGlndW91c1NoYXBlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0g
ICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSk7CisgICAgICAgIEp1bXBMaXN0IGVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChP
cCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKik7CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotICAgICAgICBKdW1wTGlzdCBlbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFs
KE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CisgICAgICAgIEp1
bXBMaXN0IGVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+Ci0gICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOworICAgICAgICBKdW1wTGlz
dCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUs
IEJ5VmFsSW5mbyosIFR5cGVkQXJyYXlUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOwpAQCAtOTAxLDEzICs5MDYsMTcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4pOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
QWRkcmVzcyk7CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0
dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICNlbmRpZgogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNr
T25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1Zh
bHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQpOworICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmls
ZShNZXRhZGF0YSYsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxS
ZWdpc3RlciByZXN1bHQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YT4KKyAg
ICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdp
dGhQcm9maWxlKE1ldGFkYXRhJiwgQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAg
ICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgogICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjpDYWxsPgpAQCAtOTE3LDYgKzky
NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
ICAgIH0KIAorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpoYXNSZXN1bHQsIHZvaWQ+CisgICAgICAgIGNhbGxPcGVyYXRpb24oQWRkcmVz
cyB0YXJnZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAg
eworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlw
ZT4odGFyZ2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAs
IHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAgICB9CisKICNpZiBPUyhXSU5ET1dTKSAm
JiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogICAgICAgICBz
dHJ1Y3QgaXM2NEJpdFR5cGUgewpAQCAtOTM3LDYgKzk1NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVy
YXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tB
bmRTbG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9uKTsKICAgICAgICAgfQorCisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAg
IHZvaWQgY2FsbE9wZXJhdGlvbihBZGRyZXNzIHRhcmdldCwgQXJncy4uLiBhcmdzKQorICAgICAg
ICB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxPcGVyYXRpb25U
eXBlPih0YXJnZXQsIGFyZ3MuLi4pOworICAgICAgICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90
IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0
IGJpdHMuCisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCisgICAgICAg
ICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKEFk
ZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9mZnNldCkpOworICAgICAgICB9CiAj
ZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBBcmdzLi4u
IGFyZ3MpCkBAIC05NDQsNiArOTcyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
c2V0dXBBcmd1bWVudHM8T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7CiAgICAgICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgICAgICB9CisK
KyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICAgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEFkZHJlc3MgdGFyZ2V0LCBBcmdzLi4uIGFy
Z3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxs
PE9wZXJhdGlvblR5cGU+KHRhcmdldCwgYXJncy4uLik7CisgICAgICAgICAgICBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgdGFyZ2V0Lm9m
ZnNldCkpOworICAgICAgICB9CiAjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkK
IAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXRhZGF0YSwgdHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KQEAgLTk1NCw2ICs5ODksMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpT
VmFsdWVSZXN1bHRXaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uLCByZXN1bHQpOwogICAg
ICAgICB9CiAKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5h
bWUgTWV0YWRhdGEsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46Omhhc1Jlc3VsdCwgdm9pZD4KKyAgICAgICAg
Y2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKE1ldGFkYXRhJiBtZXRhZGF0YSwgQWRkcmVzcyB0YXJn
ZXQsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8T3BlcmF0aW9uVHlwZT4odGFy
Z2V0LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIHRhcmdldC5vZmZzZXQpLCByZXN1bHQpOworICAgICAgICB9CisKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4K
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhSZXN1bHQoT3Bl
cmF0aW9uVHlwZSBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEFyZ3MuLi4gYXJn
cykKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggMWI0
OWQ0ODlkYWEyYjc4NmFiNzkzOTJmOWEzNGViYzY0NGNkYWIxOC4uNmFiNTQ4ODJkN2Q5MTJjNTYx
OWY2YmFmNDBhMWM2NWEwMzFiZTYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCkBAIC0zOTgsOCArMzk4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5
dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBt
X2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KSkpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmlt
cGwoKSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZWdUMSwgQWNj
ZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQo
Z2VuKTsKQEAgLTQzMiw4ICs0MzIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAK
ICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRz
KCkpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9u
ID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
Z2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbldpdGhQcm9maWxlPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBuZXh0VlJlZywgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwLCBpdGVyYXRvckdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbCA9
IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayks
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgbmV4dFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIGl0ZXJhdG9yR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
CisKICAgICBhdXRvIGRvbmUgPSBqdW1wKCk7CiAKICAgICBub3RPYmplY3QubGluayh0aGlzKTsK
QEAgLTQ4MCw4ICs0ODcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgUmVnaXN0ZXJTZXQgcHJlc2VydmVk
UmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKICAgICAgICAg
cHJlc2VydmVkUmVncy5hZGQodmFsdWVHUFIpOwogICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkp
KSwgcHJlc2VydmVkUmVncywKLSAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSks
IEpTVmFsdWVSZWdzKGl0ZXJSZXN1bHRHUFIpLCBKU1ZhbHVlUmVncyhkb25lR1BSKSwgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLCBwcmVzZXJ2ZWRSZWdzLAorICAgICAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2
bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwgSlNWYWx1ZVJlZ3MoaXRlclJlc3VsdEdQ
UiksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCByZWdUMywgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAg
LTQ5OSw4ICs1MDYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgSnVtcExpc3QgaXRlcmF0aW9uRG9uZSA9
IGJyYW5jaElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKGRvbmVHUFIpLCBzY3JhdGNoMSwgc2Ny
YXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKIAogICAgICAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCkpKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2
bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpKSksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0o
KS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgcmVnVDQsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOwogICAgICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC01Mjgs
MTYgKzUzNSwyMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogICAgICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CiAgICAgICAgIG5vdE9i
amVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJSZXN1bHRHUFIpKTsKLSAgICAgICAgbm90
T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyUmVzdWx0R1BSKSk7CiAKICAgICAg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmlt
cGwoKTsKICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dl
dEJ5SWRJbmRleCsrXTsKICAgICAgICAgCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwogCi0gICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZShi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwg
ZG9uZVZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2Vu
LnN0dWJJbmZvKCksIGl0ZXJSZXN1bHRHUFIsIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7CisgICAgICAgIG5vdE9iamVj
dC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlclJlc3VsdEdQUikpOwogCisgICAgICAgIENh
bGwgY2FsbDsKKyAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpIHsKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
Z2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb25XaXRoUHJvZmlsZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZG9uZVZSZWcs
IFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRh
KG1fY29kZUJsb2NrKSwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBkb25lVlJlZywgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRl
clJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRp
ZmllcihpZGVudCkucmF3Qml0cygpKTsKICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKKwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRv
bmVWUmVnLCByZWdUMSk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV92YWx1ZSwgcmVnVDApOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
anVtcCgpKTsKQEAgLTU1Niw4ICs1NzAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKIAog
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQ
UiwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsKLQorICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgICAgICBnZW4uc3R1
YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAg
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGU8ZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
LCBBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBpdGVyUmVzdWx0R1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdC
aXRzKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9u
V2l0aFByb2ZpbGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIHZhbHVlVlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgaXRlclJlc3VsdEdQUiwgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsKICAg
ICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBlY2M0
ZTVmM2ZmNmQwN2Y5OWMwNzg0ZGQ0YzEyZGViYTBlMjEwZGNmLi4xNTI1MTRhZmRjYWM3ODJhYzlj
ODc0ZTU1MGFmZmI5YzcyOGJlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwCkBAIC0zOTYsMTIgKzM5NiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgSklUVHlwZTo6
QmFzZWxpbmVKSVQsCiAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAgICAg
ICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkp
LAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQtPmltcGwoKSksCiAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJhdG9yR1BSLCBwYXlsb2Fk
SXRlcmF0b3JHUFIpLAogICAgICAgICBuZXh0UmVncywKKyAgICAgICAgSW52YWxpZEdQUlJlZywK
ICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwpAQCAtNTA1LDEyICs1MDcsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIHByZXNl
cnZlZFJlZ3MuYWRkKHBheWxvYWRWYWx1ZUdQUik7CiAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAogICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBKSVRUeXBlOjpC
YXNlbGluZUpJVCwKICAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKICAg
ICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCkpKSwKICAgICAgICAgICAgIHByZXNlcnZlZFJlZ3MsCiAgICAgICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlO
YW1lcy0+ZG9uZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3Vs
dEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgZG9uZVJlZ3MsCisgICAg
ICAgICAgICBJbnZhbGlkR1BSUmVnLAogICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7
CiAgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTUzMywxMiArNTM3LDE0IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAg
ICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICAgICAgbV9jb2RlQmxvY2ss
CisgICAgICAgICAgICBKSVRUeXBlOjpCYXNlbGluZUpJVCwKICAgICAgICAgICAgIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT52
YWx1ZS5pbXBsKCkpLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwg
cGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAogICAgICAgICAgICAgcmVzdWx0UmVncywKKyAgICAgICAg
ICAgIEludmFsaWRHUFJSZWcsCiAgICAgICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKICAg
ICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgICAgICBhZGRTbG93Q2FzZShn
ZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAppbmRleCA3
NzQ1OWFiZWFjM2UyYmY0MGQ0OWIyZWJkZjdkNmM2Nzg1MzFiOTU2Li43Mzc2Njc5YmU4NzJiNTk4
OTNmOWFjYTMxOThlOWVmZTU1MjJmNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aApAQCAtNTEsMTMgKzUxLDE1IEBAIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwogY2xhc3MgVk07
CiAKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3QgewotICAgIE5vbmUsCi0gICAgSG9zdENh
bGxUaHVuaywKLSAgICBJbnRlcnByZXRlclRodW5rLAotICAgIEJhc2VsaW5lSklULAotICAgIERG
R0pJVCwKLSAgICBGVExKSVQKKyAgICBOb25lID0gMGIwMDAsCisgICAgSG9zdENhbGxUaHVuayA9
IDBiMDAxLAorICAgIEludGVycHJldGVyVGh1bmsgPSAwYjAxMCwKKyAgICBCYXNlbGluZUpJVCA9
IDBiMDExLAorICAgIERGR0pJVCA9IDBiMTAwLAorICAgIEZUTEpJVCA9IDBiMTAxLAogfTsKK3N0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgd2lkdGhPZkpJVFR5cGUgPSAzOworc3RhdGljX2Fzc2Vy
dChXVEY6OmdldE1TQlNldENvbnN0ZXhwcihzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlw
ZV90PEpJVFR5cGU+PihKSVRUeXBlOjpGVExKSVQpKSArIDEgPT0gd2lkdGhPZkpJVFR5cGUpOwog
CiBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsK
IHB1YmxpYzoKQEAgLTE1NSw2ICsxNTcsMTUgQEAgY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxKSVRDb2RlPiB7CiAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEpJ
VFR5cGU6OkludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJ
VDsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCB1c2VEYXRhSUMoSklUVHlwZSBqaXRUeXBlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VEYXRhSUMoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VE
YXRhSUNJbk9wdGltaXppbmdKSVQoKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiBzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAg
CiAgICAgZW51bSBjbGFzcyBTaGFyZUF0dHJpYnV0ZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRl
eCAxODkzYzY4MDEyYjAyYjc1NjAwNzMxYTZmNzc2OWNhYjFiZTBkZGQwLi5mZGZkMmE5ZGI1Y2M1
ZTEwYmQyNzJhM2Q4MWFhMWZmNTgxNDNlYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtNDMsOSArNDMsMTAg
QEAgc3RhdGljIFN0cnVjdHVyZVN0dWJJbmZvKiBnYXJiYWdlU3R1YkluZm8oKQogfQogCiBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoCi0gICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBK
SVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZSwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLAogICAgIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzKQogICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9qaXRUeXBl
KGppdFR5cGUpCiB7CiAgICAgbV9zdHViSW5mbyA9IG1fY29kZUJsb2NrID8gbV9jb2RlQmxvY2st
PmFkZFN0dWJJbmZvKGFjY2Vzc1R5cGUsIGNvZGVPcmlnaW4pIDogZ2FyYmFnZVN0dWJJbmZvKCk7
CiAgICAgbV9zdHViSW5mby0+Y2FsbFNpdGVJbmRleCA9IGNhbGxTaXRlOwpAQCAtNjAsMjAgKzYx
LDIyIEBAIHZvaWQgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OmZpbmFsaXplKAogCiAgICAgbV9z
dHViSW5mby0+ZG9uZUxvY2F0aW9uID0gZmFzdFBhdGgubG9jYXRpb25PZjxKU0ludGVybmFsUHRy
VGFnPihtX2RvbmUpOwogCi0gICAgbV9zdHViSW5mby0+c2xvd1BhdGhDYWxsTG9jYXRpb24gPSBz
bG93UGF0aC5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KG1fc2xvd1BhdGhDYWxsKTsKKyAg
ICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZv
LT5tX3Nsb3dQYXRoQ2FsbExvY2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKU0ludGVybmFs
UHRyVGFnPihtX3Nsb3dQYXRoQ2FsbCk7CiAgICAgbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExv
Y2F0aW9uID0gc2xvd1BhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zbG93
UGF0aEJlZ2luKTsKIH0KIAogSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlLCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsCi0gICAgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQot
ICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxs
U2l0ZSwgYWNjZXNzVHlwZSwgdXNlZFJlZ2lzdGVycykKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwKKyAgICBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJl
ZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVElubGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywg
aml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMp
CiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCiB7CiAgICAgbV9zdHVi
SW5mby0+YmFzZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVl
R1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MudGhpc0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZv
R1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9
IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdH
UFIoKTsKQEAgLTgzLDEzICs4NiwxNSBAQCBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJh
dG9yKAogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmZXImIGZhc3RQ
YXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAgICBBU1NFUlQobV9zdGFydC5pc1NldCgp
KTsKLSAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQ
YXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4o
bV9zdGFydCkpOworICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZShmYXN0UGF0
aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1f
c3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpCisgICAgICAg
IG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlv
bjsKIH0KIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9B
c3NlbWJsZXImIGppdCwgc2l6ZV90IGlubGluZUlDU2l6ZSkKIHsKKyAgICAvLyBXZSBnZW5lcmF0
ZSB0aGUgc2FtZSBjb2RlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBTaGFyZWRJQyBpcyBlbmFibGVk
IGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byB1c2UgSW5saW5lQWNjZXNzCisgICAgLy8gZm9yIHRo
ZSBwZXJmb3JtYW5jZSByZWFzb24uCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogICAgIHNp
emVfdCBzdGFydFNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKTsKICAg
ICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5qdW1wKCk7CkBAIC0xMDEsOSArMTA2LDkgQEAgdm9pZCBK
SVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImIGppdCwg
c2l6ZV90IGlubGluZUlDU2kKIH0KIAogSklUR2V0QnlJZEdlbmVyYXRvcjo6SklUR2V0QnlJZEdl
bmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKLSAgICA6IEpJVEJ5
SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgYWNjZXNzVHlwZSwg
dXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJ
VFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUs
IEdQUlJlZyBzdHViSW5mb0dQUiwgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlKQorICAgIDogSklUQnlJ
ZEdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBhY2Nl
c3NUeXBlLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiAgICAgLCBt
X2lzTGVuZ3RoQWNjZXNzKHByb3BlcnR5TmFtZS51aWQoKSA9PSBjb2RlQmxvY2stPnZtKCkucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlLnBh
eWxvYWRHUFIoKSAhPSB2YWx1ZS50YWdHUFIoKSk7CkBAIC0xMTUsOSArMTIwLDkgQEAgdm9pZCBK
SVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQp
CiB9CiAKIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6SklUR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB0aGlzUmVncykKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29k
ZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlz
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2Fs
bFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIsIEpTVmFsdWVSZWdzIHZhbHVlLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB0aGlzUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRC
eUlkV2l0aFRoaXMsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCh0aGlzUmVncy5wYXlsb2FkR1BSKCkgIT0gdGhpc1JlZ3MudGFn
R1BSKCkpOwogCkBAIC0xMzMsMTAgKzEzOCwxMCBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogfQogCiBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgCiAgICAg
RUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICAgICAgOiBKSVRCeUlkR2Vu
ZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwg
dXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihj
b2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQs
IHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzdHViSW5mb0dQUikKICAgICAgICAgLCBtX2Vj
bWFNb2RlKGVjbWFNb2RlKQogICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQogewpAQCAtMTcx
LDE0ICsxNzYsMTUgQEAgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9y
OjpzbG93UGF0aEZ1bmN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSklURGVsQnlW
YWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzY3JhdGNoKQotICAgIDogQmFz
ZShjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OkRlbGV0
ZUJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQorSklURGVsQnlWYWxHZW5lcmF0b3I6OkpJVERlbEJ5VmFs
R2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRUeXBlIGppdFR5cGUsIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3Rl
clNldCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRj
aCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbCwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0
dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICBBU1NFUlQoYmFzZS5w
YXlsb2FkR1BSKCkgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFz
ZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlH
UFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHVi
SW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigp
ICE9IHJlc3VsdC50YWdHUFIoKSk7CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CkBAIC0xOTEsMjYgKzE5NywzMCBAQCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6SklU
RGVsQnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZQog
dm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVt
cCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2pp
dFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxs
KENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsK
ICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVREZWxCeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQordm9pZCBKSVREZWxCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFz
dFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVt
cC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAgQmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRo
LCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9z
dGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgu
bG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRy
ID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExvY2F0aW9uOwogfQogCi1KSVREZWxCeUlkR2Vu
ZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpCi0gICAgOiBCYXNlKGNvZGVC
bG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRCwg
dXNlZFJlZ2lzdGVycykKK0pJVERlbEJ5SWRHZW5lcmF0b3I6OkpJVERlbEJ5SWRHZW5lcmF0b3Io
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BSUmVnIHNjcmF0Y2gpCisgICAgOiBC
YXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZTo6RGVsZXRlQnlJRCwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5oYXND
b25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAgIEFTU0VSVChiYXNlLnBheWxvYWRHUFIoKSAh
PSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5iYXNlR1BSID0gYmFzZS5w
YXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRH
UFJSZWc7CiAgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSByZXN1bHQucGF5bG9hZEdQUigpOwor
ICAgIG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgIEFTU0VSVChiYXNlLnRhZ0dQUigpICE9IHJlc3VsdC50YWdHUFIoKSk7
CiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CkBAIC0yMjMsMjYg
KzIzMywzMCBAQCBKSVREZWxCeUlkR2VuZXJhdG9yOjpKSVREZWxCeUlkR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcgogdm9pZCBKSVREZWxCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiB7CiAgICAgbV9zdGFy
dCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1faml0VHlwZSkpIHsKKyAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1fc3R1YkluZm8pLCBtX3N0dWJJbmZv
LT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNv
ZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9z
bG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOwogICAgIG1fZG9uZSA9IGppdC5sYWJl
bCgpOwogfQogCi12b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAotICAgIExpbmtC
dWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3ZvaWQgSklURGVsQnlJZEdl
bmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQogewotICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7Ci0gICAg
QmFzZTo6ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9j
YXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFs
aXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBl
KSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhT
dGFydExvY2F0aW9uOwogfQogCi1KSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJh
dG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQp
Ci0gICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZTo6SW5CeVZhbCwgdXNlZFJlZ2lzdGVycykKK0pJVEluQnlWYWxHZW5lcmF0b3I6OkpJVElu
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBw
cm9wZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBC
YXNlKGNvZGVCbG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZTo6SW5CeVZhbCwgdXNlZFJlZ2lzdGVycykKIHsKICAgICBtX3N0dWJJbmZvLT5oYXNDb25z
dGFudElkZW50aWZpZXIgPSBmYWxzZTsKIAogICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNl
LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVy
dHkucGF5bG9hZEdQUigpOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxv
YWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSID0gc3R1YkluZm9HUFI7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBtX3N0dWJJbmZvLT5iYXNlVGFnR1BSID0gYmFzZS50
YWdHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZVRhZ0dQUiA9IHJlc3VsdC50YWdHUFIoKTsK
QEAgLTI1Myw3ICsyNjcsMTEgQEAgSklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVy
YXRvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3IKIHZvaWQgSklUSW5C
eVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogewog
ICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRj
aGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKSB7Cisg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX3N0dWJJbmZvKSwg
bV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVy
czo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7CisgICAgfSBlbHNlCisg
ICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKICAgICBtX2RvbmUg
PSBqaXQubGFiZWwoKTsKIH0KIApAQCAtMjYxLDEyICsyNzksMTUgQEAgdm9pZCBKSVRJbkJ5VmFs
R2VuZXJhdG9yOjpmaW5hbGl6ZSgKICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aCwgTGlua0J1ZmZl
ciYgc2xvd1BhdGgpCiB7CiAgICAgQVNTRVJUKG1fc3RhcnQuaXNTZXQoKSk7Ci0gICAgQmFzZTo6
ZmluYWxpemUoCi0gICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25P
ZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOworICAgIEJhc2U6OmZpbmFsaXplKGZh
c3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGluZVB0clRh
Zz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkKKyAg
ICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhTdGFydExv
Y2F0aW9uOwogfQogCi1KSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQot
ICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBB
Y2Nlc3NUeXBlOjpJbkJ5SWQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQorSklUSW5CeUlk
R2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFs
dWUsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2Nr
LCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW5CeUlkLCB1c2Vk
UmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3R1YkluZm9HUFIpCiB7CiAgICAgLy8gRklYTUU6IFdl
IGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAg
IFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwpAQCAtMjc5LDE1ICszMDAsMTUgQEAgdm9pZCBK
SVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkK
IH0KIAogSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6SklUSW5zdGFuY2VPZkdlbmVyYXRvcigKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXgsCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUVHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwKKyAgICBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBl
LCBHUFJSZWcgc3R1YkluZm9HUFIsCiAgICAgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRj
aDIsIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCkKLSAgICA6IEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFj
Y2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCisgICAgOiBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcihjb2RlQmxvY2ssIGppdFR5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGU6Okluc3RhbmNlT2YsIHVzZWRSZWdpc3RlcnMpCiB7CiAgICAgbV9zdHViSW5m
by0+YmFzZUdQUiA9IHZhbHVlOwogICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0Owog
ICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvdG90eXBlR1BSID0gcHJvdG90eXBlOworICAgIG1fc3R1
YkluZm8tPm1fc3R1YkluZm9HUFIgPSBzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIG1fc3R1
YkluZm8tPnZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKQEAgLTMwNywyMSArMzI4LDI0IEBA
IEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I6OkpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoCiAKIHZvaWQg
SklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQogewotICAgIG1fanVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgbV9zdGFydCA9
IGppdC5sYWJlbCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBlKSkgewor
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9zdHViSW5mbyks
IG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIpOworICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MobV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mQ29kZVB0cigpKSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIH0gZWxzZQor
ICAgICAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CiAgICAgbV9kb25l
ID0gaml0LmxhYmVsKCk7CiB9CiAKIHZvaWQgSklUSW5zdGFuY2VPZkdlbmVyYXRvcjo6ZmluYWxp
emUoTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yOjpmaW5hbGl6ZSgKLSAgICAgICAgZmFzdFBhdGgsIHNsb3dQ
YXRoLAotICAgICAgICBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X2p1bXApKTsKLSAgICAKLSAgICBmYXN0UGF0aC5saW5rKG1fanVtcC5tX2p1bXAsIHNsb3dQYXRo
LmxvY2F0aW9uT2Y8Tm9QdHJUYWc+KG1fc2xvd1BhdGhCZWdpbikpOworICAgIEJhc2U6OmZpbmFs
aXplKGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9jYXRpb25PZjxKSVRTdHViUm91dGlu
ZVB0clRhZz4obV9zdGFydCkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMobV9qaXRUeXBl
KSkKKyAgICAgICAgbV9zdHViSW5mby0+bV9jb2RlUHRyID0gbV9zdHViSW5mby0+c2xvd1BhdGhT
dGFydExvY2F0aW9uOwogfQogCi1KSVRHZXRCeVZhbEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5l
cmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0KQotICAgIDogQmFzZShjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsIHVzZWRSZWdpc3RlcnMpCitKSVRHZXRCeVZh
bEdlbmVyYXRvcjo6SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJ
VFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUikKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBq
aXRUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0
ZXJzKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiB7CkBAIC0z
MzAsNiArMzU0LDcgQEAgSklUR2V0QnlWYWxHZW5lcmF0b3I6OkpJVEdldEJ5VmFsR2VuZXJhdG9y
KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGUKICAgICBtX3N0dWJJbmZvLT5i
YXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5wcm9wZXJ0
eUdQUiA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9
IHJlc3VsdC5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0
dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRh
Z0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+dmFsdWVUYWdHUFIgPSByZXN1
bHQudGFnR1BSKCk7CkBAIC0zNDAsMjAgKzM2NSwyMyBAQCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6
SklUR2V0QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29k
ZQogdm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYgaml0KQogewogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKLSAgICBtX3Nsb3dQYXRo
SnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyht
X2ppdFR5cGUpKSB7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihtX3N0dWJJbmZvKSwgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUik7CisgICAgICAgIGppdC5j
YWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZDb2RlUHRyKCkpLCBKSVRTdHViUm91dGluZVB0clRhZyk7
CisgICAgfSBlbHNlCisgICAgICAgIG1fc2xvd1BhdGhKdW1wID0gaml0LnBhdGNoYWJsZUp1bXAo
KTsKICAgICBtX2RvbmUgPSBqaXQubGFiZWwoKTsKIH0KIAotdm9pZCBKSVRHZXRCeVZhbEdlbmVy
YXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNs
b3dQYXRoKQordm9pZCBKSVRHZXRCeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmZlciYg
ZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQYXRoKQogewotICAgIEFTU0VSVChtX3N0YXJ0Lmlz
U2V0KCkpOwotICAgIEJhc2U6OmZpbmFsaXplKAotICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAg
ICBCYXNlOjpmaW5hbGl6ZShmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKG1faml0VHlwZSkpCisgICAgICAgIG1fc3R1YkluZm8tPm1fY29kZVB0ciA9IG1fc3R1Yklu
Zm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBB
Y2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBicmFuZCkKLSAgICA6IEJhc2UoY29kZUJsb2Nr
LCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBhY2Nlc3NUeXBlLCB1c2VkUmVnaXN0ZXJzKQor
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVFR5cGUgaml0VHlwZSwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIpCisgICAgOiBCYXNlKGNvZGVC
bG9jaywgaml0VHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgYWNjZXNzVHlwZSwgdXNl
ZFJlZ2lzdGVycykKIHsKICAgICBBU1NFUlQoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpDaGVj
a1ByaXZhdGVCcmFuZCB8fCBhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFu
ZCk7CiAgICAgbV9zdHViSW5mby0+aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CkBAIC0z
NjEsNiArMzg5LDcgQEAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpKSVRQcml2YXRl
QnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmwKICAgICBtX3N0dWJJbmZvLT5i
YXNlR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgbV9zdHViSW5mby0+cmVncy5icmFuZEdQ
UiA9IGJyYW5kLnBheWxvYWRHUFIoKTsKICAgICBtX3N0dWJJbmZvLT52YWx1ZUdQUiA9IEludmFs
aWRHUFJSZWc7CisgICAgbV9zdHViSW5mby0+bV9zdHViSW5mb0dQUiA9IHN0dWJJbmZvR1BSOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgbV9zdHViSW5mby0+YmFzZVRhZ0dQUiA9IGJhc2Uu
dGFnR1BSKCk7CiAgICAgbV9zdHViSW5mby0+di5icmFuZFRhZ0dQUiA9IGJyYW5kLnRhZ0dQUigp
OwpAQCAtMzcxLDE2ICs0MDAsMTkgQEAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmwKIHZvaWQgSklU
UHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJiBqaXQpCiB7CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwotICAgIG1fc2xvd1BhdGhK
dW1wID0gaml0LnBhdGNoYWJsZUp1bXAoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKG1f
aml0VHlwZSkpIHsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG1fc3R1YkluZm8pLCBtX3N0dWJJbmZvLT5tX3N0dWJJbmZvR1BSKTsKKyAgICAgICAgaml0LmNh
bGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG1fc3R1YkluZm8tPm1fc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZkNvZGVQdHIoKSksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OwogICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOwogfQogCi12b2lkIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcjo6ZmluYWxpemUoCi0gICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtC
dWZmZXImIHNsb3dQYXRoKQordm9pZCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I6OmZp
bmFsaXplKExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKIHsKLSAg
ICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKLSAgICBCYXNlOjpmaW5hbGl6ZSgKLSAgICAgICAg
ZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRy
VGFnPihtX3N0YXJ0KSk7CisgICAgQmFzZTo6ZmluYWxpemUoZmFzdFBhdGgsIHNsb3dQYXRoLCBm
YXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7CisgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhtX2ppdFR5cGUpKQorICAgICAgICBtX3N0dWJJbmZvLT5t
X2NvZGVQdHIgPSBtX3N0dWJJbmZvLT5zbG93UGF0aFN0YXJ0TG9jYXRpb247CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDkwNGRiMTQyMjIzOGJkMTRjZjM0MjkxYWY3NTM2ODQw
OGJhNTdiOWEuLjRiNDc5Yjk3NmUxZTc3MTZjMDMzNmU1MjVmNzcyZWQzMmZjZDE1Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTQxLDEyICs0MSwxMiBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbzsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OworZW51bSBjbGFzcyBK
SVRUeXBlIDogdWludDhfdDsKIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHJv
dGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9Ci0gICAgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRl
SW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzKTsKKyAg
ICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycyk7CiAgICAgCiBwdWJsaWM6CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHViSW5mbzsgfQpAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29kZUJsb2NrKiBt
X2NvZGVCbG9jazsKKyAgICBKSVRUeXBlIG1faml0VHlwZTsKICAgICBTdHJ1Y3R1cmVTdHViSW5m
byogbV9zdHViSW5mbzsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX2RvbmU7CkBAIC03
Nyw4ICs3OCw4IEBAIGNsYXNzIEpJVEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IgewogICAgIEpJVEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEJ5SWRH
ZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgs
IEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgICAgICBK
U1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSk7CisgICAgICAgIENvZGVCbG9jayos
IEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZvR1BSKTsKIAogcHVibGljOgogICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CkBAIC0xMDEsMTMgKzEwMiwxMyBA
QCBjbGFzcyBKSVRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
IHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoSnVtcDsKIH07CiAKLWNsYXNz
IEpJVEdldEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CitjbGFzcyBK
SVRHZXRCeUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVi
bGljOgogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgQWNjZXNzVHlwZSk7Cisg
ICAgICAgIENvZGVCbG9jayosIEpJVFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAorICAg
ICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHN0dWJJbmZv
R1BSLCBBY2Nlc3NUeXBlKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKIApAQCAtMTE1LDI2ICsxMTYsMjYgQEAgY2xhc3MgSklUR2V0QnlJZEdlbmVy
YXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKICAgICBib29sIG1faXNMZW5ndGhBY2Nl
c3M7CiB9OwogCi1jbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBwdWJsaWMgSklU
QnlJZEdlbmVyYXRvciB7CitjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUR2V0QnlJZFdpdGhU
aGlzR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoCi0g
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHRo
aXNSZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRo
KE1hY3JvQXNzZW1ibGVyJik7CiB9OwogCi1jbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVi
bGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKICAgICB7IH0K
IAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgQ29kZUJs
b2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2Us
CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBz
Y3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDUsMTQgKzE0NiwxNCBAQCBjbGFzcyBK
SVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogICAgIFB1dEtp
bmQgbV9wdXRLaW5kOwogfTsKIAotY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVREZWxCeVZhbEdlbmVyYXRv
cigpIHsgfQogCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7CisgICAgICAgIENvZGVCbG9jayosIEpJ
VFR5cGUsIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0
eSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNo
KTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAg
ewpAQCAtMTcwLDE0ICsxNzEsMTQgQEAgY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklURGVsQnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVREZWxCeUlkR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKICAgICB1c2luZyBC
YXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CiBwdWJsaWM6CiAgICAgSklURGVsQnlJZEdl
bmVyYXRvcigpIHsgfQogCiAgICAgSklURGVsQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJs
b2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOworICAgICAgICBDb2RlQmxvY2sq
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3Jh
dGNoKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAg
ICAgewpAQCAtMjAxLDggKzIwMiw4IEBAIGNsYXNzIEpJVEluQnlWYWxHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IoKSB7
IH0KIAogICAgIEpJVEluQnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAot
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwgSlNWYWx1ZVJl
Z3MgcmVzdWx0KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQs
IEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0
aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTIyMCw0MiArMjIxLDUwIEBAIGNsYXNzIEpJVEluQnlW
YWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOwogfTsKIAotY2xhc3MgSklU
SW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgeworY2xhc3MgSklUSW5C
eUlkR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgog
ICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOworICAgICAgICBDb2RlQmxvY2sqLCBK
SVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICB2b2lkIGdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKIH07CiAKLWNsYXNzIEpJVEluc3RhbmNl
T2ZHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklU
SW5zdGFuY2VPZkdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CiBwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yOwog
ICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3IoKSB7IH0KICAgICAKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwKLSAgICAg
ICAgR1BSUmVnIHZhbHVlLCBHUFJSZWcgcHJvdG90eXBlLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJl
ZyBzY3JhdGNoMiwKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2Fs
bFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1
bHQsCisgICAgICAgIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMiwKICAgICAgICAgYm9vbCBw
cm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2UpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xv
d1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5t
X2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7Cisg
ICAgfQorCiAgICAgdm9pZCBmaW5hbGl6ZShMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIs
IExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7CiAKIHByaXZhdGU6Ci0gICAgTWFjcm9B
c3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9qdW1wOworICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bCBtX3N0YXJ0OworICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhK
dW1wOwogfTsKIAotY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IgeworY2xhc3MgSklUR2V0QnlWYWxHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvcigpIHsgfQog
CiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MgcmVzdWx0KTsKKyAgICAgICAgQ29kZUJsb2NrKiwgSklUVHlwZSwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUik7CiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAogICAgIHsKQEAgLTI3NiwxNCArMjg1
LDE0IEBAIGNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRo
SnVtcDsKIH07CiAKLWNsYXNzIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciA6IHB1Ymxp
YyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CitjbGFzcyBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogICAgIHVz
aW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjsKIHB1YmxpYzoKICAgICBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIGJyYW5kKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgSklUVHlwZSwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpT
VmFsdWVSZWdzIGJyYW5kLCBHUFJSZWcgc3R1YkluZm9HUFIpOwogCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCmluZGV4IDM5ODAzOTRlMTZjY2FkMTIyZmE4NTBkNDExMDliMzUwMGU2
N2E5YzMuLjE5M2UyNzg2ZGI3ZTNjMTc1YjY2NThmYjNkMzllOTlmNWFmYjUzMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0zMywxNyArMzMsMTcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJ
VDo6ZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0FM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pdExvYWRGb3JBcnJh
eU1vZGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUQXJyYXlNb2Rl
IGFycmF5TW9kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKICAgICBjYXNlIEpJVEludDMyOgotICAgICAg
ICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAg
ICAgICByZXR1cm4gZW1pdEludDMyTG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5
VmFsSW5mbyk7CiAgICAgY2FzZSBKSVREb3VibGU6Ci0gICAgICAgIHJldHVybiBlbWl0RG91Ymxl
TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdERv
dWJsZUxvYWQoY3VycmVudEluc3RydWN0aW9uLCBiYWRUeXBlLCBieVZhbEluZm8pOwogICAgIGNh
c2UgSklUQ29udGlndW91czoKLSAgICAgICAgcmV0dXJuIGVtaXRDb250aWd1b3VzTG9hZChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOworICAgICAgICByZXR1cm4gZW1pdENvbnRpZ3VvdXNM
b2FkKGN1cnJlbnRJbnN0cnVjdGlvbiwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBjYXNlIEpJ
VEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGN1cnJl
bnRJbnN0cnVjdGlvbiwgYmFkVHlwZSk7CisgICAgICAgIHJldHVybiBlbWl0QXJyYXlTdG9yYWdl
TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI3LDYgKzEyNywxMyBAQCBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhjb25zdCBGdW5jdAogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCit7Cisg
ICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAg
ZXhjZXB0aW9uQ2hlY2soKTsKK30KKwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGZ1bmN0aW9uKQogewpAQCAtMTU2LDYgKzE2MywxNiBAQCBBTFdBWVNfSU5MSU5F
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZQogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChBZGRyZXNzIGZ1
bmN0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgZHN0KQoreworICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soZnVuY3Rpb24pOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisgICAgZW1pdFN0b3JlKGRz
dCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgTWV0YWRhdGE+CiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJv
ZmlsZShNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCiB7CkBAIC0xNzAsNiArMTg3LDE5IEBA
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIE1ldGFkYXRhPgorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6YXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZShNZXRhZGF0YSYgbWV0
YWRhdGEsIEFkZHJlc3MgZnVuY3Rpb24sIFZpcnR1YWxSZWdpc3RlciBkc3QpCit7CisgICAgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsKKyNlbHNlCisg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSwgSlNWYWx1ZVJlZ3MocmV0dXJuVmFs
dWVHUFIyLCByZXR1cm5WYWx1ZUdQUikpOworICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZhbHVl
R1BSMiwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmCit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBK
SVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIsIFZpcnR1YWxSZWdpc3RlciByZWcpCiB7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+
aXNLbm93bkNlbGwocmVnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CmluZGV4IGVlMTllNmFkZjcwMjg3YjZkMTgwZmMyNGIxNDc0ZTFiZmEzMTY4ZTguLmQxOThkNDFh
MWNiYTAzM2I3MWE2OWQyNGI1YzA2Y2I4YzcyMGRkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTY0LDEzICsxNjQsMTggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAgSklUSW5z
dGFuY2VPZkdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwKICAgICAgICAgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICByZWdUMCwgLy8gcmVzdWx0
CiAgICAgICAgIHJlZ1QyLCAvLyB2YWx1ZQogICAgICAgICByZWdUMSwgLy8gcHJvdG8KKyAgICAg
ICAgcmVnVDUsCiAgICAgICAgIHJlZ1QzLCByZWdUNCk7IC8vIHNjcmF0Y2gKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkp
OworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2luc3RhbmNlT2ZzLmFw
cGVuZChnZW4pOwogICAgIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKQEAgLTE4
Niw3ICsxOTEsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBKSVRJbnN0YW5jZU9m
R2VuZXJhdG9yJiBnZW4gPSBtX2luc3RhbmNlT2ZzW21faW5zdGFuY2VPZkluZGV4KytdOwogICAg
IAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRWUmVnLCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBy
ZWdUMiwgcmVnVDEpOworCisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
ICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk+
KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgcmVzdWx0VlJlZywgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMiwgcmVnVDEpOworICAg
IH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9m
T3B0aW1pemUsIHJlc3VsdFZSZWcsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QyLCByZWdUMSk7CiAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMTgwNCw3ICsxODE2LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyog
YnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIG90aGVyIHR5cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1w
TGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24s
IGFycmF5TW9kZSwgYmFkVHlwZSk7CisgICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRG
b3JBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxw
dHIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1
ZSkpKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIApAQCAtMTgxOSw4ICsxODMx
LDEzIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRj
aEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCiAgICAgICAgICJCYXNlbGluZSBoYXNfaW5k
ZXhlZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCpt
X2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAg
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxs
KENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAg
YnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOwor
ICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUdlbmVyaWM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkp
KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8
UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQ
dHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xODU0LDExICsxODcxLDEyIEBAIHZvaWQgSklUOjpl
bWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVz
IGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBl
bWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUpOwor
ICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJbnN0
cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICAKICAgICBtb3ZlKFRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIHJlZ1QwKTsKIAotICAg
IGFkZFNsb3dDYXNlKGJhZFR5cGUpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CiAgICAgYWRk
U2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKQEAg
LTE4ODQsNyArMTkwMiwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX2VudW1lcmFibGVf
aW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudAogICAgIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKLSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEsIGJ5VmFsSW5mbyk7CisKKyAg
ICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25I
YXNJbmRleGVkUHJvcGVydHlEZWZhdWx0OworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnlW
YWxJbmZvKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGNhbGxPcGVyYXRpb248ZGVj
bHR5cGUob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdCk+KEFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgQnlWYWxJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGRzdCwg
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCwgcmVnVDEs
IEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0gZWxzZQorICAgICAgICBjYWxsID0gY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0LCBkc3QsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAsIHJlZ1QxLCBieVZhbElu
Zm8pOwogCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eF0uc2xvd1BhdGhUYXJnZXQgPSBzbG93UGF0aDsKICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5yZXR1cm5BZGRyZXNzID0gY2FsbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCAzNmM1YmM4YmE2
NTc1YTFiMzUyZDg1ZjdkZWM5NWNlZjUzZWFhNDU5Li44ZmFmYmY2YWRkNzgxNDY4MGFjZTAxYjk4
ODkyMjY3MjY2ZDg0NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCkBAIC0xNjIsMTMgKzE2MiwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0
YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICBKSVRJbnN0YW5jZU9mR2Vu
ZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBtX2NvZGVCbG9j
aywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2Fs
bFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAogICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIHJlZ1QwLCAvLyByZXN1bHQKICAgICAgICAg
cmVnVDIsIC8vIHZhbHVlCiAgICAgICAgIHJlZ1QxLCAvLyBwcm90bworICAgICAgICBJbnZhbGlk
R1BSUmVnLAogICAgICAgICByZWdUMywgcmVnVDQpOyAvLyBzY3JhdGNoCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CiAgICAgbV9pbnN0YW5jZU9mcy5hcHBlbmQoZ2VuKTsKICAgICAKICAgICBlbWl0U3RvcmVCb29s
KGRzdCwgcmVnVDApOwpAQCAtMTE4Myw3ICsxMTg1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlSGFzSW5kZXhlZFByb3BlcnR5KEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHQKICAgICAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5cGVzIGxpa2Ug
VHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMgPSBlbWl0TG9h
ZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGFycmF5TW9kZSwgYmFkVHlwZSk7Cisg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzID0gZW1pdExvYWRGb3JBcnJheU1vZGUoY3VycmVudEluc3Ry
dWN0aW9uLCBhcnJheU1vZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCkBAIC0xMTk4LDcgKzEy
MDAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0
Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgaGFzX2lu
ZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAg
IAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVt
cChieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVz
c1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVy
bkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHlHZW5lcmljKSk7CiB9CiAKQEAgLTEyMzQsNyArMTIzNiw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG90aGVyIHR5
cGVzIGxpa2UgVHlwZWRBcnJheXMgYW5kIEFyZ3VtZW50cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzMyBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTAzNC4KLSAgICBKdW1wTGlzdCBzbG93Q2FzZXMg
PSBlbWl0TG9hZEZvckFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG1vZGUsIGJhZFR5cGUp
OworICAgIEp1bXBMaXN0IHNsb3dDYXNlcyA9IGVtaXRMb2FkRm9yQXJyYXlNb2RlKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgbW9kZSwgYmFkVHlwZSwgYnlWYWxJbmZvKTsKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApOwogCiAgICAgYWRkU2xvd0Nhc2UoYmFkVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0MTg1Yzc2MmM5ODUzMWQy
OTQwNzUxN2UyZTdhNzM0NGVmZDM4M2ZmLi5iNjc5NDQzZTViMzkzZDczNzA0MDYzZjI1NWYxM2I1
NWFiZWNjNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTEwNDcsNyArMTA0NywxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0QnlWYWxPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIGlm
IChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKICAgICAgICAgLy8gRG9u
J3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKKyAg
ICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkpCisgICAgICAgICAgICBieVZhbEluZm8t
Pm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYzsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQ
dHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKTsKICAgICB9
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJh
c2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvLCBlY21hTW9kZSkpOwogfQpAQCAt
MTEzOSw3ICsxMTQyLDEwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgaWYgKHJlc3Vs
dCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewogICAgICAgICAvLyBEb24ndCBldmVy
IHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVl
OwotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOworICAg
ICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgICAgIGJ5VmFsSW5mby0+
bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVy
aWMpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlW
YWwoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIHN1YnNjcmlwdCwgdmFsdWUsIGJ5VmFsSW5mbywgZWNt
YU1vZGUpKTsKQEAgLTEzMjMsNyArMTMyOSwxMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0Kgog
ICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXAp
IHsKICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFs
SW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5B
ZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVHZW5lcmljKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlRGF0YUlDKCkp
CisgICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lR2VuZXJpYzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3RpUGF0Y2hDYWxs
QnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgb3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxlYXNl
KCk7CkBAIC0yNjEyLDcgKzI2MjEsMTEgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQsIEVuY29kZWRKU1ZhbHVlLCAoSlMKICAgICAg
ICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwCiAgICAgICAgICAgICB8fCBv
YmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAvLyBE
b24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eUdlbmVyaWMpOworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9j
ay0+dXNlRGF0YUlDKCkpCisgICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUdl
bmVyaWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGE4N2JiMzJjY2ZlN2NlN2ZiZTI1NTY0ZGIx
MWJkNzE0ZWQ5YzJlMTQuLjI1ZDJlOWQzNzdiZWE5ZjRjZTgwYjIxMGEyZDczNTM2MGZiNTA3MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CkBAIC02OSwxMiArNjksMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6R2V0QnlW
YWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZXN1bHRSZWdzKTsKKyAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5
cGU6OkdldEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVzdWx0
UmVncywgcmVnVDIpOwogICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkp
KQogICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7CiAg
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICAg
ICAgbV9nZXRCeVZhbHMuYXBwZW5kKGdlbik7CiAKICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIHJlc3VsdFJlZ3MpOwpAQCAtOTMs
OCArOTYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogCiAgICAgICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlWYWxzW21fZ2V0QnlWYWxJbmRleF07Ci0gICAgICAgICsrbV9nZXRCeVZhbEluZGV4OworICAg
ICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4KytdOworCiAgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTE4LDcgKzEyMSwxMSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvZmlsZSksIHByb2Zp
bGVHUFIpOwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAotICAgICAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpOworICAgICAgICBDYWxsIGNhbGw7CisgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUp
OwogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzOCw3ICsxNDUs
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpA
QCAtMTU3LDkgKzE2NSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwog
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBvcGVyYXRp
b24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQu
Ci0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFn
KTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJ
VGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKQEAgLTE4
MiwxMCArMTkxLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lLAot
ICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIHJlc3VsdFJlZ3MpOworICAg
ICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpH
ZXRQcml2YXRlTmFtZSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBy
ZXN1bHRSZWdzLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX2dl
dEJ5VmFscy5hcHBlbmQoZ2VuKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCByZXN1bHRSZWdzKTsKQEAgLTIwMSw4ICsyMTMsNyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZQogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFs
SW5kZXhdOwotICAgICsrbV9nZXRCeVZhbEluZGV4OworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0y
MjYsNyArMjM3LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGdlbi5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBw
ZW5kQ2FsbChvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7
CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZhbHVlR1BS
KTsKQEAgLTI0NSw3ICsyNjAsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgaml0LnN0b3Jl
MzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpOwpAQCAtMjYzLDkgKzI3OSwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsRwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJv
cGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKLSAgICAvLyBG
SVhNRTogQ29uc2lkZXIgbWFraW5nIHRoaXMgYSB0YWlsIGNhbGwgZGlyZWN0bHkgdG8gdGhlIHRh
cmdldCBvcGVyYXRpb24gaW5zdGVhZAotICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50
IHRvIGNhbGwgaXQuCi0gICAgaml0LnJldCgpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3h4eF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGwiKTsKQEAgLTI4NSwxMCArMzAyLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VHUFIsIGJhc2UpOwogCiAgICAgSklUUHJp
dmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBB
Y2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKGJy
YW5kR1BSKSk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3Mo
YnJhbmRHUFIpLCByZWdUMik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3By
aXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogCiAgICAgLy8gV2Ugc2hvdWxkIGVtaXQg
d3JpdGUtYmFycmllciBhdCB0aGUgZW5kIG9mIHNlcXVlbmNlIHNpbmNlIHdyaXRlLWJhcnJpZXIg
Y2xvYmJlcnMgcmVnaXN0ZXJzLgpAQCAtMzAyLDggKzMyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZh
dGVCcmFuZEFjY2Vzc0luZGV4XTsKLSAgICArK21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXg7Cisg
ICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFj
Y2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CiAgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CiAKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0zMjgs
OSArMzQ3LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5CiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZgorCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIApAQCAtMzQ2LDEwICszNzAsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwg
YmFzZSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAo
IUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2Fz
ZSgpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKQEAgLTM1
Nyw4ICszODQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudAogewogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleF07Ci0gICAg
KyttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dl
bmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vz
c0luZGV4KytdOwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMzgzLDcgKzQwOSwxMSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudAogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRz
PGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRU
eXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAg
IGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplOworICAgIGVsc2UKKyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIApAQCAtNDE1LDggKzQ0
NSwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBiYXNlKTsKICAgICBQYXRjaGFibGVKdW1wIG5vdEluZGV4OwogICAgIGlmICghcHJvcGVydHlO
YW1lSXNJbnRlZ2VyQ29uc3RhbnQpIHsKLSAgICAgICAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxl
SnVtcElmTm90SW50KHJlZ1QxKTsKLSAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW5kZXgpOworICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAg
ICAgICAgICAgYXV0byBpc0ludDMyID0gYnJhbmNoSWZJbnQzMihyZWdUMSk7CisgICAgICAgICAg
ICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdl
dCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzSW50MzIubGluayh0aGlz
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJs
ZUp1bXBJZk5vdEludChyZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7
CisgICAgICAgIH0KICAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAg
ICAgICAgemVyb0V4dGVuZDMyVG9Xb3JkKHJlZ1QxLCByZWdUMSk7CiAgICAgfQpAQCAtNDMyLDIz
ICs0NjgsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFycmF5TW9kZSBtb2RlID0gY2hvb3NlQXJy
YXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6
Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBl
KTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91YmxlOgotICAg
ICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOwor
ICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUs
IGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91czoKLSAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlw
ZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQXJyYXlT
dG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0
QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAK
LSAgICBhZGRTbG93Q2FzZShiYWRUeXBlKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGJhZFR5cGUpOwogICAg
IGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgCiAgICAgTGFiZWwgZG9uZSA9IGxhYmVsKCk7
CkBAIC00NTcsNyArNDk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBi
eXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hh
cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBi
eXRlY29kZS5tX3ZhbHVlOwpAQCAtNDY1LDcgKzUwMiwxNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZAogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBl
KSk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBl
ID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOwor
ICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9iYWRUeXBl
SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAgICAgIGlzQ29ycmVj
dFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdT
aGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOworCiAgICAgCiAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBy
ZWdUMik7CiAgICAgSnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDEsIEFkZHJlc3MocmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpA
QCAtNTE1LDcgKzU2MSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3Vv
dXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZh
bChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklU
OjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQogewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9
IGJ5dGVjb2RlLm1fdmFsdWU7CkBAIC01MjMsNyArNTY5LDE2IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJh
ZFR5cGUpCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUg
PSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0
b3JhZ2VTaGFwZSkpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKSB7CisgICAgICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXND
b3JyZWN0VHlwZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3Rv
cmFnZVNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJ
bmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAg
ICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJ
bW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9y
YWdlU2hhcGUpKTsKKwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5n
dGhPZmZzZXQoKSkpKTsKIApAQCAtNTY4LDggKzYyMyw4IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2lu
ZCwKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdUMCwgdmFsdWUsIHJlZ1Qx
KTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1l
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRU
eXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3
IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAg
Ly8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVj
dGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCkBAIC01ODAsNyArNjM1LDEzIEBAIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1
dEtpbmQgcHV0S2luZCwKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKICAgICBn
ZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKIAotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5h
bWUucmF3Qml0cygpKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xv
d09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBj
YWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5m
bzo6bm9uQXJnR1BSMCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1
YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogICAgIGRvbmVDYXNlcy5h
cHBlbmQoanVtcCgpKTsKIApAQCAtNjM4LDggKzY5OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8UwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGVjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQ
Uik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBhdXRvKiBvcGVyYXRpb24gPSBpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0
aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplOwotICAgIENhbGwgY2FsbCA9IGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXplIDogb3Bl
cmF0aW9uUHV0QnlWYWxPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRD
YWxsKGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZSA6IG9wZXJhdGlv
blB1dEJ5VmFsT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKQEAgLTY1Nyw3ICs3MjEsOCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
SklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjA7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtNjc1LDkg
Kzc0MCwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVQUiwgYnlWYWxJbmZvR1BSLCBlY21hTW9kZUdQUik7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJh
dGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBp
dC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBC
eVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAg
ICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsKQEAgLTY5Niw4ICs3NjIs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QwLCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXAgPSBwYXRjaGFi
bGVKdW1wKCk7Ci0gICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOworICAgIFBhdGNoYWJsZUp1
bXAgZmFzdFBhdGhKbXA7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCisgICAgICAgIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1f
bm90SW5kZXhKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgIGVsc2Ugewor
ICAgICAgICBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKKyAgICAgICAgYWRkU2xvd0Nh
c2UoZmFzdFBhdGhKbXApOworICAgIH0KICAgICAKICAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsK
ICAgICAKQEAgLTc0Myw3ICs4MTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAg
Q2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQorICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChv
cGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC03NjEsNyAr
ODM2LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
KyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKQEAgLTc3OSw5ICs4NTUsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUFIsIGJ5VmFsSW5m
b0dQUiwgcHV0S2luZEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAot
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0
byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRo
ZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJl
c3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKKyAgICBlbHNlCisgICAgICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsIik7CkBAIC04NDYsMTEgKzkyMywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9k
ZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDEsIGJhc2UpOwogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCByZWdUMik7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCByZWdUMywgcmVnVDIpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGlmICghSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9k
ZWxCeUlkcy5hcHBlbmQoZ2VuKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdz
KHJlZ1QwKSk7CkBAIC04OTgsMTUgKzk3OCwxOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFN
b2RlR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVs
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
Ci0gICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUp
OworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsK
ICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0KICAgICBib3hCb29sZWFuKHJlZ1QwLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBKU1Zh
bHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgY2FsbCk7CiB9CiAKICNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTkxOCw3ICsx
MDAxLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
KyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKQEAgLTkzNSw5ICsxMDE5LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9k
ZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1F
OiBDb25zaWRlciBtYWtpbmcgdGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0
IG9wZXJhdGlvbiBpbnN0ZWFkCi0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8g
Y2FsbCBpdC4KLSAgICBqaXQucmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRH
UFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRp
b25QdHJUYWcpOworICAgIGVsc2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7
CkBAIC05NTYsMTAgKzEwNDEsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmVnVDAsIHByb3BlcnR5KTsKICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCByZWdUMik7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgcmVnVDMsIHJlZ1QyKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
Ci0gICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdl
bi5zbG93UGF0aEp1bXAoKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAg
IG1fZGVsQnlWYWxzLmFwcGVuZChnZW4pOwogCiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1
ZVJlZ3MocmVnVDApKTsKQEAgLTEwMDgsMTUgKzEwOTYsMTggQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFMKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkp
LCBlY21hTW9kZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKICAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIg
PT0gcmVnVDApOwogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLQogICAgIGJveEJvb2xl
YW4ocmVnVDAsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QwKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpA
QCAtMTAyOCw3ICsxMTE5LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEpJVCBqaXQodm0pOwogCi0gICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCisgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKQEAgLTEwNDUsOSArMTEzNywxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2Vu
ZXJhdAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5
IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9uIGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8g
dGhlIGNsaWVudCB0byBjYWxsIGl0LgotICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRk
cmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfdmFs
X3ByZXBhcmVDYWxsIik7CkBAIC0xMDY4LDggKzExNjEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5
SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCByZWdUMSwgQWNjZXNz
VHlwZTo6VHJ5R2V0QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQo
Z2VuKTsKQEAgLTExMTAsNyArMTIwMywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRP
cHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKKyAgICBDYWxs
IGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25UcnlH
ZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BS
KTsKQEAgLTExMzMsOCArMTIzMCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDApOwogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdCk7Cisg
ICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5
dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0
OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRl
bnQpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlc3VsdFJlZ3MsIHJlZ1QxLCBBY2Nlc3NUeXBlOjpH
ZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4p
OwpAQCAtMTE3Niw3ICsxMjczLDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRf
ZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlCiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgQ2FsbCBj
YWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOworICAgIENh
bGwgY2FsbDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkdl
dEJ5SWREaXJlY3RPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxs
KG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEsIHJldHVyblZh
bHVlR1BSKTsKQEAgLTEyMDcsOCArMTMwOCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1
ZVJlZ3MocmVnVDApLCByZXN1bHRSZWdzLCBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgcmVzdWx0UmVncywgcmVnVDEsIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xMjMzLDgg
KzEzMzQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKIAogICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
ciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJl
Z3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpKTsKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3Vs
dFJlZ3MsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMik7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkc1dpdGhUaGlzLmFwcGVuZChnZW4pOwpAQCAtMTI3
NSw3ICsxMzc2LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsCiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwg
Y2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKyAgICBDYWxsIGNh
bGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhLCByZXR1cm5WYWx1ZUdQUik7CkBAIC0xMjk0
LDcgKzEzOTksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCiAgICAgSklUIGppdCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVz
cygpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
KyAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNv
ZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOwpAQCAtMTMxMSw5ICsxNDE3LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAgLy8gRklYTUU6IENvbnNpZGVy
IG1ha2luZyB0aGlzIGEgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgb3BlcmF0aW9u
IGluc3RlYWQKLSAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0Lgot
ICAgIGppdC5yZXQoKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7
CisgICAgZWxzZQorICAgICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKQEAgLTEzNTQs
NyArMTQ2MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSk7CisgICAgQ2FsbCBjYWxsOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0g
b3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemU7CisgICAgZWxzZQorICAgICAgICBjYWxs
ID0gYXBwZW5kQ2FsbChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0
YWRhdGEsIHJldHVyblZhbHVlR1BSKTsKQEAgLTEzNzMsNyArMTQ4NCw4IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBKSVQgaml0
KHZtKTsKIAotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaWYgKCFKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMzsKICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CkBAIC0xMzkyLDkgKzE1MDQs
MTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcg
dGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFk
Ci0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQu
cmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVs
c2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbCIpOwpAQCAtMTQx
OCwxMSArMTUzMSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3Jp
Z2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxv
Y2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSks
CiAgICAgICAgIGRpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7
Ci0gICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTE0
NjUsNyArMTU3NywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwog
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpOworICAgIENhbGwgY2Fs
bDsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAg
ICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCk7CisgICAgZWxzZQorICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChnZW4uc2xvd1BhdGhG
dW5jdGlvbigpKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCkBAIC0xNDgxLDcgKzE1OTcsOCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgSklUIGpp
dCh2bSk7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjI7CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwpAQCAtMTUwMCw5ICsxNjE3
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIC8vIEZJWE1FOiBDb25zaWRlciBtYWtpbmcg
dGhpcyBhIHRhaWwgY2FsbCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9wZXJhdGlvbiBpbnN0ZWFk
Ci0gICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KLSAgICBqaXQu
cmV0KCk7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
CisgICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGVs
c2UKKyAgICAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CkBAIC0xNTIxLDggKzE2Mzks
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFz
ZVZSZWcpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVC
bG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJl
Z1QxKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7CkBAIC0xNTY0
LDcgKzE2ODIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBl
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwo
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIENhbGwgY2FsbDsKKyAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKKyAgICAgICAgZ2VuLnN0dWJJbmZv
KCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOworICAgIGVsc2UK
KyAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KHJlc3VsdFZSZWcsIHJldHVyblZhbHVlR1BSKTsKQEAgLTE1ODgsMTAgKzE3MTAsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMiwg
cHJvZmlsZSk7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhy
ZWdUMCkpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1ZhbHVlUmVncyhyZWdUMCksIHJlZ1Qy
KTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgYWRkU2xvd0Nhc2UoZ2Vu
LnNsb3dQYXRoSnVtcCgpKTsKKyAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgZWxzZQorICAgICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1faW5CeVZhbHMuYXBwZW5kKGdl
bik7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0xNjM0LDcgKzE3NTks
MTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIENhbGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0
aW9uSW5CeVZhbE9wdGltaXplKTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCisgICAgICAgIGdlbi5zdHViSW5mbygpLT5t
X3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemU7CisgICAgZWxzZQorICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMjgyNCw4ICsyOTUzLDggQEAgSklUUHV0QnlJZEdlbmVy
YXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBw
dXRLaW5kLAogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOwogCiAgICAgSklUUHV0
QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJl
Z1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOworICAgICAgICBtX2NvZGVCbG9jaywg
SklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVnVDEs
IGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIApAQCAtMjgzNSw3ICsyOTY0
LDEzIEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
T3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKICAgICAvLyBKSVRQdXRCeUlkR2VuZXJhdG9y
IG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhhdmUg
dG8gcmVsb2FkIHRoZSB0YWcuCiAgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwogCi0gICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygp
KTsKKyAgICBDYWxsIGNhbGw7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4u
c3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBjYWxsT3BlcmF0aW9u
PGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFy
Z0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNWYWx1ZVJlZ3Mo
cmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJh
d0JpdHMoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5z
bG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJ
bmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBA
IC0yODg3LDI5ICszMDIyLDI5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAKICAgICBzd2l0
Y2ggKGFycmF5TW9kZSkgewogICAgIGNhc2UgSklUSW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9
IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2Vz
ID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEpJVERvdWJsZToKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdERv
dWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1p
dERvdWJsZVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBKSVRDb250aWd1b3VzOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0Q29u
dGlndW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0g
ZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVsbHB0cik7CiAgICAg
ICAgIG5lZWRzTGlua0ZvcldyaXRlQmFycmllciA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSklUQXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9y
YWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0
QXJyYXlTdG9yYWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIG51bGxwdHIpOwogICAgICAg
ICBuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gdHlwZWRBcnJheVR5cGVGb3JK
SVRBcnJheU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQotICAgICAg
ICAgICAgc2xvd0Nhc2VzID0gZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFk
VHlwZSwgdHlwZSk7CisgICAgICAgICAgICBzbG93Q2FzZXMgPSBlbWl0SW50VHlwZWRBcnJheVB1
dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBudWxscHRyLCB0eXBlKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgQmlnSW50NjRBcnJheSAvIEJpZ1VpbnQ2
NEFycmF5IGluIElDCiAgICAgICAgICAgICAvLyBDdXJyZW50bHksIEJpZ0ludDY0QXJyYXkgLyBC
aWdVaW50NjRBcnJheSBuZXZlciBjb21lcyBoZXJlLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE4MwogICAgICAgICAgICAgQVNTRVJU
KGlzRmxvYXQodHlwZSkpOwotICAgICAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEZsb2F0VHlwZWRB
cnJheVB1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCB0eXBlKTsKKyAgICAgICAgICAgIHNsb3dD
YXNlcyA9IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgbnVs
bHB0ciwgdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjkzNiw4
ICszMDcxLDE0IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyogYnlWYWxJbmZvCiAgICAgICAgICAgICBtX2NvZGVC
bG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAogICAgICAgICAgICAgIkJh
c2VsaW5lIHB1dF9ieV92YWxfZGlyZWN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0
b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1
ZSgpKTsKICAgICB9Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZh
bEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworCisgICAgaWYgKEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAgICAgYnlWYWxJbmZv
LT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQ
dHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpOworICAgICAgICBi
eVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IGlzRGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fYmFkVHlwZUp1
bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0
dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdl
bmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKKyAgICB9CiB9CiAvLyBUaGlzIGZ1
bmN0aW9uIGlzIG9ubHkgY29uc3VtZWQgZnJvbSBhbm90aGVyIHRyYW5zbGF0aW9uIHVuaXQgKEpJ
VE9wZXJhdGlvbnMuY3BwKSwKIC8vIHNvIHdlIGxpc3Qgb2ZmIHRoZSB0d28gZXhwZWN0ZWQgc3Bl
Y2lhbGl6YXRpb25zIGluIGFkdmFuY2UuCkBAIC0yOTc2LDggKzMxMTcsMTMgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZh
bEluZm8sIFJldHVybkEKICAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0aCBj
YWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBw
cm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2sp
LmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwogICAgIGJ5VmFsSW5mby0+
c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChieVZhbEluZm8tPm5vdEluZGV4SnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0
dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lR2VuZXJpYykpOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7CisgICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQg
PSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSk7CisgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHVi
Um91dGluZS0+Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOworICAg
IH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+CkBAIC0zMDE0LDE1ICszMTYwLDIwIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFsSW5mbyogYnlW
YWxJbmZvLCBSZXR1cm5BZGRyZXNzCiAgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0
aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAi
LCAocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5
TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgp
LCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5m
byA9IGdlbi5zdHViSW5mbygpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5
VmFsSW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJU
YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRy
ZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9PSBQdXRLaW5kOjpE
aXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZh
bEdlbmVyaWMpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkgeworICAgICAgICBieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUt
PmNvZGUoKS5jb2RlKCkpOworICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJhdGlvbiA9IHB1
dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmlj
IDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljOworICAgIH0gZWxzZSB7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+
Y29kZSgpLmNvZGUoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29k
ZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KHB1dEtpbmQgPT0gUHV0S2luZDo6RGlyZWN0ID8gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKSk7CisgICAgfQogfQogLy8g
VGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNvbnN1bWVkIGZyb20gYW5vdGhlciB0cmFuc2xhdGlvbiB1
bml0IChKSVRPcGVyYXRpb25zLmNwcCksCiAvLyBzbyB3ZSBsaXN0IG9mZiB0aGUgdHdvIGV4cGVj
dGVkIHNwZWNpYWxpemF0aW9ucyBpbiBhZHZhbmNlLgogdGVtcGxhdGUgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQ8T3BQdXRCeVZhbD4oQnlWYWxJbmZvKiwgUmV0
dXJuQWRkcmVzc1B0ciwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiB0ZW1wbGF0ZSB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZDxPcFB1dEJ5VmFsRGly
ZWN0PihCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVu
dGlmaWVyKTsKIAotSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3Ry
dWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0
RG91YmxlTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5
VmFsSW5mbyogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJ
RCBiYXNlID0gcmVnVDA7CkBAIC0zMDM4LDcgKzMxODksMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlw
ZSkKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOwor
ICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7CisgICAg
ICAgIGlmIChieVZhbEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8gaXNDb3JyZWN0VHlwZSA9IGJy
YW5jaDMyKEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7CisgICAg
ICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygmYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1w
VGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOworICAgICAgICAgICAgaXNDb3JyZWN0VHlw
ZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFw
ZSkpOworICAgIH0gZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90
RXF1YWwsIGluZGV4aW5nLCBUcnVzdGVkSW1tMzIoRG91YmxlU2hhcGUpKTsKKwogICAgIGxvYWRQ
dHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3JhdGNoKTsK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFk
ZHJlc3Moc2NyYXRjaCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAg
IGxvYWREb3VibGUoQmFzZUluZGV4KHNjcmF0Y2gsIHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwgZnBS
ZWdUMCk7CkBAIC0zMDQ3LDcgKzMyMDcsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJs
ZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIHJl
dHVybiBzbG93Q2FzZXM7CiB9CiAKLUpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xv
YWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5
cGUgZXhwZWN0ZWRTaGFwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgSW5kZXhpbmdUeXBlIGV4cGVjdGVkU2hhcGUpCiB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKQEAgLTMwNjUsNyArMzIyNSwxNiBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwg
UGF0Y2hhYmxlSnVtcCYgYmFkVHlwZQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCi0gICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBpbmRleGluZywgVHJ1c3RlZElt
bTMyKGV4cGVjdGVkU2hhcGUpKTsKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7CisgICAgICAgICAgICBh
dXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0z
MihleHBlY3RlZFNoYXBlKSk7CisgICAgICAgICAgICBmYXJKdW1wKEFic29sdXRlQWRkcmVzcygm
YnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0KSwgSklUU3R1YlJvdXRpbmVQdHJUYWcpOwor
ICAgICAgICAgICAgaXNDb3JyZWN0VHlwZS5saW5rKHRoaXMpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcs
IFRydXN0ZWRJbW0zMihleHBlY3RlZFNoYXBlKSk7CisgICAgfSBlbHNlCisgICAgICAgIGJhZFR5
cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgaW5kZXhpbmcsIFRydXN0ZWRJbW0zMihl
eHBlY3RlZFNoYXBlKSk7CisKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gz
MihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKHNjcmF0Y2gsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkVmFsdWUoQmFzZUluZGV4KHNjcmF0Y2gs
IHByb3BlcnR5LCBUaW1lc0VpZ2h0KSwgcmVzdWx0KTsKQEAgLTMwNzQsNyArMzI0Myw3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAotSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdl
TG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5m
byogYnlWYWxJbmZvKQogewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVnaXN0ZXJJRCBiYXNl
ID0gcmVnVDA7CkBAIC0zMDkzLDcgKzMyNjIsMTYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRB
cnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoLUFycmF5
U3RvcmFnZVNoYXBlKSwgaW5kZXhpbmcsIHNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2gzMihBYm92ZSwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CisKKyAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgeworICAgICAgICBpZiAoYnlWYWxJbmZvKSB7Cisg
ICAgICAgICAgICBhdXRvIGlzQ29ycmVjdFR5cGUgPSBicmFuY2gzMihCZWxvd09yRXF1YWwsIHNj
cmF0Y2gsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3Jh
Z2VTaGFwZSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5m
by0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAgICAg
ICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gsIFRydXN0ZWRJbW0z
MihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkpOworICAgIH0g
ZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHNjcmF0Y2gs
IFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFw
ZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHNjcmF0Y2gpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhzY3JhdGNoLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0
aE9mZnNldCgpKSkpOwpAQCAtMzEwNSw3ICszMjgzLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRBcnJheVN0b3JhZ2VMb2FkKGNvbnN0IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
VHlwZWRBcnJheVR5cGUgdHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJh
eVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZhbEluZm8q
IGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMTMwLDcgKzMzMDgsMTcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAg
bG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlT
Y3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKKyAgICAg
ICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBlID0gYnJh
bmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5
VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFs
SW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsKKyAgICAg
ICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwg
VHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0gZWxzZQor
ICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRj
aCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAgICAgbG9h
ZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBs
YXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVy
dHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lh
bENhc2UocHJvZmlsZSk7CkBAIC0zMTgxLDcgKzMzNjksNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFk
VHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVDo6SnVtcExpc3QgSklUOjplbWl0
RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5
cGUsIFR5cGVkQXJyYXlUeXBlIHR5cGUpCitKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlw
ZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBCeVZh
bEluZm8qIGJ5VmFsSW5mbywgVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKICAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CkBAIC0zMjA2LDcgKzMzOTQsMTcg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCBieXRl
Y29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAg
CiAgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
ZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWws
IGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkp
OworCisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsK
KyAgICAgICAgaWYgKGJ5VmFsSW5mbykgeworICAgICAgICAgICAgYXV0byBpc0NvcnJlY3RUeXBl
ID0gYnJhbmNoMzIoRXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBl
ZEFycmF5VHlwZSh0eXBlKSkpOworICAgICAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mo
JmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5lUHRyVGFnKTsK
KyAgICAgICAgICAgIGlzQ29ycmVjdFR5cGUubGluayh0aGlzKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2Ny
YXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworICAgIH0g
ZWxzZQorICAgICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5
U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOworCiAg
ICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCBsYXRlU2NyYXRjaDIpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywg
cHJvcGVydHksIGxhdGVTY3JhdGNoMik7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRz
U3BlY2lhbENhc2UocHJvZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCA4NTU3ZDJkZWNlNWU1Njk0Zjc4MTgz
MGUxMjYwMjZhM2U2YzJlNjBkLi5mZGY5MWFkOWRlYzM0OTQ1OTMwYTY3ODlmMjZjNjVlMDQ4Mjg3
NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TG9h
ZChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCkpOwogICAg
IEpJVERlbEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIGJhc2VS
ZWdzLCByZXN1bHRSZWdzLCByZWdUNCk7CisgICAgICAgIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBJ
bnZhbGlkR1BSUmVnLCByZWdUNCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9kZWxCeUlkcy5hcHBl
bmQoZ2VuKTsKQEAgLTE2Niw4ICsxNjYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHByb3BlcnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCkpOwogCiAgICAg
SklURGVsQnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgYmFzZVJlZ3MsIHBy
b3BlcnR5UmVncywgcmVzdWx0UmVncywgcmVnVDQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFs
aWRHUFJSZWcsIHJlZ1Q0KTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMjU3LDggKzI1Nyw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJl
Z1QxLCByZWdUMCk7CiAKICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVzdWx0UmVncyk7
CisgICAgICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nl
c3NUeXBlOjpHZXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIGlm
IChpc09wZXJhbmRDb25zdGFudEludChwcm9wZXJ0eSkpCiAgICAgICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOwpAQCAtMzA1LDggKzMwNSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKIAogICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpHZXRQcml2YXRlTmFtZSwKLSAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgcmVzdWx0UmVncyk7CisgICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkdldFBy
aXZhdGVOYW1lLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBtX2dldEJ5VmFscy5hcHBlbmQoZ2VuKTsKQEAgLTM5Myw4ICszOTMs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCBiYXNlUmVncy50YWdHUFIoKSk7CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlNldFByaXZh
dGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAg
ICBiYXNlUmVncywgYnJhbmRSZWdzKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3Ms
IEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CkBAIC00MzMsOCArNDMzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCBiYXNlUmVncy50YWdHUFIoKSk7
CiAKICAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kLCBSZWdpc3RlclNldDo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VSZWdzLCBicmFuZFJlZ3Mp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NU
eXBlOjpDaGVja1ByaXZhdGVCcmFuZCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAorICAgICAgICBiYXNlUmVncywgYnJhbmRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKICAg
ICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwpAQCAt
NDg2LDE2ICs0ODYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVEFycmF5TW9kZSBtb2RlID0gY2hv
b3NlQXJyYXlNb2RlKHByb2ZpbGUpOwogICAgIHN3aXRjaCAobW9kZSkgewogICAgIGNhc2UgSklU
SW50MzI6Ci0gICAgICAgIHNsb3dDYXNlcyA9IGVtaXRJbnQzMlB1dEJ5VmFsKGJ5dGVjb2RlLCBi
YWRUeXBlKTsKKyAgICAgICAgc2xvd0Nhc2VzID0gZW1pdEludDMyUHV0QnlWYWwoYnl0ZWNvZGUs
IGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklURG91Ymxl
OgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5
cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0RG91YmxlUHV0QnlWYWwoYnl0ZWNvZGUsIGJh
ZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklUQ29udGlndW91
czoKLSAgICAgICAgc2xvd0Nhc2VzID0gZW1pdENvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwg
YmFkVHlwZSk7CisgICAgICAgIHNsb3dDYXNlcyA9IGVtaXRDb250aWd1b3VzUHV0QnlWYWwoYnl0
ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSklU
QXJyYXlTdG9yYWdlOgotICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9yYWdlUHV0QnlW
YWwoYnl0ZWNvZGUsIGJhZFR5cGUpOworICAgICAgICBzbG93Q2FzZXMgPSBlbWl0QXJyYXlTdG9y
YWdlUHV0QnlWYWwoYnl0ZWNvZGUsIGJhZFR5cGUsIGJ5VmFsSW5mbyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7CkBAIC01MTEsNyArNTExLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+Ci1KSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQorSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hh
cGUpCiB7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC01MjAs
NiArNTIwLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5
VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWQKIAogICAgIEp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICAKKyAgICBVTlVTRURfUEFSQU0oYnlWYWxJbmZvKTsKICAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoQ29udGlndW91
c1NoYXBlKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0
dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CkBAIC01NzIsNyArNTczLDcgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFi
bGVKdW1wJiBiYWQKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSkKK0pJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3Ag
Ynl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQog
ewogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtNTgxLDYgKzU4
Miw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AgYnl0
ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7
CiAgICAgCisgICAgVU5VU0VEX1BBUkFNKGJ5VmFsSW5mbyk7CiAgICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNo
YXBlKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpLCByZWdUMyk7CkBAIC02NjAsOCArNjYyLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwog
CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJlc3VsdFJl
Z3MsIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6VHJ5R2V0
QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTcw
MSw4ICs3MDMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgQWNjZXNzVHlwZTo6R2V0QnlJZERp
cmVjdCk7CisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJs
b2NrLCAqaWRlbnQpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCByZXN1bHRSZWdz
LCBJbnZhbGlkR1BSUmVnLCBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0KTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNzQ4LDggKzc1MCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCk7CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2Nr
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV9jb2RlQmxvY2ssICppZGVudCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIHJl
c3VsdFJlZ3MsIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBtX2NvZGVCbG9jaywgSklU
VHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZywgQWNjZXNzVHlwZTo6R2V0
QnlJZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNl
KGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTc5
MSw4ICs3OTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CiAKICAgICBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQp
LCByZXN1bHRSZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUNCwgcmVnVDMpKTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5l
SklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksIHJlc3VsdFJlZ3MsIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Q0LCByZWdUMyksIEludmFsaWRHUFJSZWcpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHNXaXRoVGhpcy5hcHBlbmQoZ2VuKTsKQEAgLTgz
NSw5ICs4MzcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
YmFzZSwgcmVnVDEpOwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1f
Y29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlk
ZW50KSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywKICAgICAgICAgcmVn
VDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gUHV0S2luZDo6RGlyZWN0
IDogUHV0S2luZDo6Tm90RGlyZWN0KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CkBAIC04ODIsOCArODg0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCiAgICAgSklUSW5CeUlkR2VuZXJhdG9yIGdlbigK
LSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIG1f
Y29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLCBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBJ
bnZhbGlkR1BSUmVnKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2luQnlJZHMuYXBwZW5kKGdlbik7
CkBAIC05MjIsOCArOTI0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZVdpdGhDZWxsKHJlZ1QwLCByZWdUNCwgcHJvZmlsZSk7CiAKICAgICBKSVRJbkJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkp
OworICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEludmFsaWRHUFJSZWcpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1faW5C
eVZhbHMuYXBwZW5kKGdlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0
aW5lLmgKaW5kZXggODgxNDY0MGU2YWNjZWFjMWI5YjA2OGE0MGM4OTQyODM0ODZjZGZhYi4uOWQz
ZDc2YjQzYjQ2YTIzYWIwZDM4NjhlOWFkZGI4MzE0ZWMwOTM5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApAQCAtMzUsNiArMzUsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBKSVRTdHViUm91dGluZVNldDsKIGNsYXNzIFZNOwogCisjaWYgVVNFKEpT
VkFMVUU2NCkKK3VzaW5nIFN0cnVjdHVyZUlEID0gdWludDMyX3Q7CisjZWxzZQordXNpbmcgU3Ry
dWN0dXJlSUQgPSBTdHJ1Y3R1cmUqOworI2VuZGlmCisKK2NsYXNzIEFjY2Vzc0Nhc2U7CisKIC8v
IFRoaXMgaXMgYSBiYXNlLWNsYXNzIGZvciBKSVQgc3R1YiByb3V0aW5lcywgYW5kIGFsc28gdGhl
IGNsYXNzIHlvdSB3YW50CiAvLyB0byBpbnN0YW50aWF0ZSBkaXJlY3RseSBpZiB5b3UgaGF2ZSBh
IHJvdXRpbmUgdGhhdCBkb2VzIG5vdCBuZWVkIGFueQogLy8gaGVscCBmcm9tIHRoZSBHQy4gSWYg
aW4gZG91YnQsIHVzZSBvbmUgb2YgdGhlIG90aGVyIHN0dWIgcm91dGluZXMuIEJ1dApAQCAtMTAz
LDYgKzExMSw3IEBAIGNsYXNzIEpJVFN0dWJSb3V0aW5lIHsKIAogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gbV9jb2RlOwogICAgIHVuc2lnbmVkIG1fcmVm
Q291bnQ7CisgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc2ggeyAwIH07CiB9OwogCiAvLyBIZWxw
ZXIgZm9yIHRoZSBjcmVhdGlvbiBvZiBzaW1wbGUgc3R1YiByb3V0aW5lcyB0aGF0IG5lZWQgbm8g
aGVscCBmcm9tIHRoZSBHQy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMWY3NjA2ODYyNzNkZGE4MWNi
YjZkMDFjZDIxZGQwOTg5Y2M2ZTJiOC4uNDExNWJhMjVjZWQxNjIzYjNhMjg1MTdlY2I2ZDJiODU1
OTgwZjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShKSVQpCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZv
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbENvZGVPcmlnaW4uaCIK
QEAgLTY3LDcgKzY4LDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHVi
Um91dGluZVB0clRhZz4mIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgQ2Fs
bEZyYW1lKiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3Rv
cjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCiAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+
JiYgZmFzdENvdW50cykKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSkK
KyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmKQogICAgICwgbV92YXJpYW50cyhj
YXNlcy5zaXplKCkpCiAgICAgLCBtX2Zhc3RDb3VudHMoV1RGTW92ZShmYXN0Q291bnRzKSkKIHsK
QEAgLTgwLDYgKzgxLDcgQEAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lKAogICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdQb2x5
bW9ycGhpY0NhbGwoY2FsbGVyRnJhbWUsIG1fY2FsbE5vZGVzLmFkZCgmaW5mbykpOwogICAgIH0K
ICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgIG1ha2VHQ0F3YXJlKHZtKTsKIH0KIAog
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6On5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggMDcyOWRlNjJmNzRh
MDdhYjYyNGI1NzIyMzliMDg0MTA0Y2JjYjRmZS4uYjVhYTcyNzVkMzEyMjBkMTBlN2MxZjlhZGEx
NWE1ZmNjNzE0OGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC03
MSw4ICs3MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsKQorc3RhdGljIEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gcmVhZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogeworICAgIGlmIChjb2RlQmxvY2st
PnVzZURhdGFJQygpKQorICAgICAgICByZXR1cm4gc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uLnJl
dGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKTsKKyAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJu
YWxQdHJUYWc+IGNhbGwgPSBzdHViSW5mby5tX3Nsb3dQYXRoQ2FsbExvY2F0aW9uOwogI2lmIEVO
QUJMRShGVExfSklUKQogICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpG
VExKSVQpIHsKICAgICAgICAgRnVuY3Rpb25QdHI8SklUVGh1bmtQdHJUYWc+IHRhcmdldCA9IE1h
Y3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldDxKSVRUaHVua1B0clRhZz4oY2FsbCk7CkBAIC0x
MDUsNiArMTA4LDE1IEBAIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hDYWxsKGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlv
blB0clRhZz4oKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlcGF0Y2hTbG93UGF0aENhbGwoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbikKK3sKKyAgICBpZiAoY29kZUJsb2Nr
LT51c2VEYXRhSUMoKSkgeworICAgICAgICBzdHViSW5mby5tX3Nsb3dPcGVyYXRpb24gPSBuZXdD
YWxsZWVGdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8ubV9zbG93UGF0aENhbGxMb2NhdGlvbiwgbmV3Q2FsbGVlRnVuY3Rpb24pOworfQorCiBlbnVt
IElubGluZUNhY2hlQWN0aW9uIHsKICAgICBHaXZlVXBPbkNhY2hlLAogICAgIFJldHJ5Q2FjaGVM
YXRlciwKQEAgLTIwOSw3ICsyMjEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAg
IEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIGNvbnN0IGJv
b2wgaXNQcml2YXRlID0ga2luZCA9PSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lIHx8IGtpbmQgPT0g
R2V0QnlLaW5kOjpQcml2YXRlTmFtZUJ5SWQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwog
CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7
CiAgICAgICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VDZWxsKSkgewpAQCAtMjE5LDcgKzIzMSw3
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgICAgICBib29sIGdl
bmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgoc3R1
YkluZm8sIGpzQ2FzdDxKU0FycmF5Kj4oYmFzZUNlbGwpKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mby5pbml0QXJyYXlMZW5ndGgobG9ja2VyKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTIyNywxMCArMjM5LDExIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNo
ZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAg
ICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIGNvZGVCbG9jaywgQWNj
ZXNzQ2FzZTo6QXJyYXlMZW5ndGgsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzSlNTdHJpbmcoYmFzZUNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZv
LmNhY2hlVHlwZSgpID09IENhY2hlVHlwZTo6VW5zZXQgJiYgSW5saW5lQWNjZXNzOjppc0NhY2hl
YWJsZVN0cmluZ0xlbmd0aChzdHViSW5mbykpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3R1Yklu
Zm8uY2FjaGVUeXBlKCkgPT0gQ2FjaGVUeXBlOjpVbnNldAorICAgICAgICAgICAgICAgICAgICAm
JiBJbmxpbmVBY2Nlc3M6OmlzQ2FjaGVhYmxlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKSkgewogICAg
ICAgICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6
OmdlbmVyYXRlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBw
cm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5kKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHViSW5mby5pbml0U3RyaW5nTGVuZ3RoKGxvY2tlcik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC0yODIsMTIgKzI5NSwxMSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVH
ZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAg
ICAgICAgJiYgIXNsb3Qud2F0Y2hwb2ludFNldCgpCiAgICAgICAgICAgICAgICAgJiYgIXN0cnVj
dHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgpCiAgICAgICAgICAgICAgICAgJiYg
IWxvYWRUYXJnZXRGcm9tUHJveHkpIHsKLQogICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVk
Q29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlBY2Nlc3Moc3R1
YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJ
Q0V2ZW50OjpHZXRCeVNlbGZQYXRjaCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJh
c2VWYWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQ
cm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9u
KGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQpKTsK
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRTZWxmKGxvY2tlciwgY29k
ZUJsb2NrLCBzdHJ1Y3R1cmUsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNDI1LDcgKzQzNywyMCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAg
ICAgICBMT0dfSUMoKElDRXZlbnQ6OkdldEJ5UmVwbGFjZVdpdGhKdW1wLCBiYXNlVmFsdWUuY2xh
c3NJbmZvT3JOdWxsKHZtKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVp
ZCgpKSwgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGlu
ZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklU
U3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgIHN3aXRjaCAo
a2luZCkgeworICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbDoKKyAgICAgICAgICAg
IGNhc2UgR2V0QnlLaW5kOjpXaXRoVGhpczoKKyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpU
cnk6CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6RGlyZWN0OgorICAgICAgICAgICAgY2Fz
ZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJZDoKKyAgICAgICAgICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFs
OgorICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAgICAgICAg
ICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVB
Y2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRp
bmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzksNyArNDY0LDcgQEAgdm9pZCBy
ZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEpTVmFsdWUgYmEKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywga2luZCkgPT0g
R2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9j
aywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlv
bihraW5kKSk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgYXBwcm9wcmlhdGVHZXRCeUZ1bmN0aW9uKGtpbmQpKTsKIH0KIAogCkBAIC01MjksNyArNTU0
LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlHZXRCeVZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2QKICAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6R2V0QnlSZXBsYWNlV2l0aEp1bXAsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBJ
ZGVudGlmaWVyKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1
bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1
bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXBJ
bkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2Nh
dGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTU0MCw3ICs1NjUsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAog
dm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGluZGV4LCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKHRyeUNhY2hlQXJyYXlHZXRCeVZhbChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZSwgaW5kZXgsIHN0dWJJbmZvKSA9PSBHaXZlVXBP
bkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKTsKKyAg
ICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25H
ZXRCeVZhbEdlbmVyaWMpOwogfQogCiBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRC
eUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaW5kIHB1dEtpbmQp
IC0+IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KQpAQCAtNjM2LDcgKzY2
MSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgIGlmIChpc1Byb3h5ICYmIChw
dXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCB8fCBwdXRLaW5kID09IFB1
dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkpCiAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2Fz
ZTsKKyAgICAgICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICAgICAgaWYgKHNs
b3QuYmFzZSgpID09IGJhc2VWYWx1ZSAmJiBzbG90LmlzQ2FjaGVhYmxlUHV0KCkpIHsKICAgICAg
ICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0aW5nUHJvcGVy
dHkpIHsKQEAgLTY1OCw3ICs2ODMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAg
ICAgICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6Omdl
bmVyYXRlU2VsZlByb3BlcnR5UmVwbGFjZShzdHViSW5mbywgb2xkU3RydWN0dXJlLCBzbG90LmNh
Y2hlZE9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRlZENvZGVJbmxp
bmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6UHV0QnlJZFNl
bGZQYXRjaCwgb2xkU3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09
IGJhc2VWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0
Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIGFwcHJvcHJp
YXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFw
cHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFJlcGxhY2UobG9ja2VyLCBj
b2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTgwMSw3ICs4MjYsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jawogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29k
ZSgpKTsKIAotICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJ
bmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUo
KSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3Mo
Y29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODE1LDcgKzg0MCw3
IEBAIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CiAgICAgCiAgICAgaWYgKHRyeUNhY2hlUHV0QnlJRChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwg
c2xvdCwgc3R1YkluZm8sIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCi0gICAgICAgIGZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0
aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwor
ICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJp
YXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiB9CiAKIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNsb3QmIHNsb3QsIEpT
VmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5k
LCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTg0Niw3ICs4NzEsNyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvYwogICAgICAgICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkKICAgICAg
ICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CisgICAgICAgIFJlZlB0cjxBY2Nlc3NDYXNlPiBuZXdDYXNl
OwogCiAgICAgICAgIGlmIChzbG90LmlzRGVsZXRlSGl0KCkpIHsKICAgICAgICAgICAgIFByb3Bl
cnR5T2Zmc2V0IG5ld09mZnNldCA9IGludmFsaWRPZmZzZXQ7CkBAIC04NzQsNyArODk5LDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgaWYgKHJlc3VsdC5nZW5lcmF0ZWRTb21l
Q29kZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKICAg
ICAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBsYWNlV2l0aEp1bXAsIG9sZFN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51
aWQoKSkpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKKyAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNz
Tm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtODkxLDE1ICs5MTYsMTUgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAKICAgICBp
ZiAodHJ5Q2FjaGVEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZh
bHVlLCBvbGRTdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgc3R1YkluZm8sIGtpbmQsIGVjbWFNb2Rl
KSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6RGVsQnlSZXBs
YWNlV2l0aEdlbmVyaWMsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoZ2xvYmFsT2JqZWN0LT52
bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAg
ICAgICBpZiAoa2luZCA9PSBEZWxCeUtpbmQ6Ok5vcm1hbCkKLSAgICAgICAgICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoU2xvd1Bh
dGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
R2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CiAgICAgfQogfQogCiBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5KAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsCi0gICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCisgICAgYm9vbCB3YXNG
b3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8sIEluQnlLaW5kIGtpbmQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0OwpAQCAtOTM3LDcgKzk2Miw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAgICAgICAgICAgICAgICAgaWYg
KGdlbmVyYXRlZENvZGVJbmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpJbkJ5SWRTZWxmUGF0Y2gsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90
LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0
YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc2xvdC5jYWNoZWRPZmZzZXQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6
ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwogICAgICAgICAgICAgICAgICAgICBz
dHViSW5mby5pbml0SW5CeUlkU2VsZihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlLCBzbG90
LmNhY2hlZE9mZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTk4NCw3ICsxMDA5LDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeSgKIAogICAgICAgICBMT0df
SUMoKElDRXZlbnQ6OkluQWRkQWNjZXNzQ2FzZSwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRl
bnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEFjY2Vzc0Nhc2U+IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGUoCisgICAgICAgIFJlZjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAgICAgdm0s
IGNvZGVCbG9jaywgd2FzRm91bmQgPyBBY2Nlc3NDYXNlOjpJbkhpdCA6IEFjY2Vzc0Nhc2U6Oklu
TWlzcywgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCA/IHNsb3QuY2FjaGVkT2Zmc2V0KCkgOiBpbnZh
bGlkT2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nl
c3NDaGFpbikpOwogCiAgICAgICAgIHJlc3VsdCA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UobG9j
a2VyLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgRUNNQU1vZGU6OnN0cmljdCgpLCBwcm9wZXJ0
eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOwpAQCAtOTkzLDcgKzEwMTgsMTUgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeSgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90
LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQuY29kZSgpKTsKLSAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJl
U3R1YkFzSnVtcChzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJU
YWc+KHJlc3VsdC5jb2RlKCkpKTsKKworICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAg
ICAgICAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWw6CisgICAgICAgICAgICAgICAgSW5saW5lQWNj
ZXNzOjpyZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFs
OgorICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcEluQWNjZXNz
Tm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMTAwNywxMiAr
MTA0MCwxMiBAQCB2b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYgogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAKLSAgICBpZiAodHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVw
T25DYWNoZSkgeworICAgIGlmICh0cnlDYWNoZUluQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvLCBraW5k
KSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNl
V2l0aEdlbmVyaWMsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyhnbG9iYWxPYmplY3QtPnZtKCkpLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgICAgIGlm
IChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpCi0gICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkR2VuZXJpYyk7CisgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlJZEdlbmVyaWMpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOworICAgICAgICAg
ICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5
VmFsR2VuZXJpYyk7CiAgICAgfQogfQogCkBAIC0xMDM4LDcgKzEwNzEsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVDaGVja1ByaXZhdGVCcmFuZCgKICAgICAgICAgYm9vbCBp
c0Jhc2VQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6Q2hlY2tQcml2
YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVudCwgaXNC
YXNlUHJvcGVydHkpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3
Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZUNoZWNrUHJpdmF0ZUJyYW5kKHZtLCBjb2RlQmxvY2ss
IGJyYW5kSUQsIHN0cnVjdHVyZSk7CisgICAgICAgIFJlZjxBY2Nlc3NDYXNlPiBuZXdDYXNlID0g
QWNjZXNzQ2FzZTo6Y3JlYXRlQ2hlY2tQcml2YXRlQnJhbmQodm0sIGNvZGVCbG9jaywgYnJhbmRJ
RCwgc3RydWN0dXJlKTsKIAogICAgICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNl
KGxvY2tlciwgZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJh
bmRJRCwgV1RGTW92ZShuZXdDYXNlKSk7CiAKQEAgLTEwNDYsNyArMTA3OSw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKAogICAgICAgICAgICAg
TE9HX0lDKChJQ0V2ZW50OjpDaGVja1ByaXZhdGVCcmFuZFJlcGxhY2VXaXRoSnVtcCwgc3RydWN0
dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIGlzQmFzZVByb3BlcnR5KSk7CiAKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotICAgICAgICAgICAgSW5saW5lQWNjZXNz
OjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91
dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOworICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpy
ZXdpcmVTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0
dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNv
ZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDYwLDcgKzEwOTMsNyBAQCB2b2lkIHJl
cGF0Y2hDaGVja1ByaXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jawogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKIAogICAgIGlmICh0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBicmFuZElELCBzdHViSW5mbykgPT0gR2l2ZVVwT25D
YWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJp
Yyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3Bl
cmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljKTsKIH0KIAogc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKApAQCAtMTA5Nyw3ICsxMTMwLDcgQEAgc3Rh
dGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlU2V0UHJpdmF0ZUJyYW5kKAogICAgICAgICBi
b29sIGlzQmFzZVByb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpTZXRQ
cml2YXRlQnJhbmRBZGRBY2Nlc3NDYXNlLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVu
dCwgaXNCYXNlUHJvcGVydHkpKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVNldFByaXZhdGVCcmFuZCh2bSwgY29kZUJs
b2NrLCBicmFuZElELCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CisgICAgICAgIFJlZjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlU2V0UHJpdmF0ZUJyYW5kKHZt
LCBjb2RlQmxvY2ssIGJyYW5kSUQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKIAogICAg
ICAgICByZXN1bHQgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGxvY2tlciwgZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIEVDTUFNb2RlOjpzdHJpY3QoKSwgYnJhbmRJRCwgV1RGTW92ZShuZXdDYXNl
KSk7CiAKQEAgLTExMDUsNyArMTEzOCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVNldFByaXZhdGVCcmFuZCgKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6U2V0UHJp
dmF0ZUJyYW5kUmVwbGFjZVdpdGhKdW1wLCBvbGRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLCBpZGVu
dCwgaXNCYXNlUHJvcGVydHkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LmNvZGUoKSk7Ci0gICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0
dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFn
PihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTExMTksNyArMTE1Miw3IEBAIHZvaWQgcmVwYXRjaFNldFBy
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAK
ICAgICBpZiAodHJ5Q2FjaGVTZXRQcml2YXRlQnJhbmQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgIGJyYW5kSUQsIHN0dWJJbmZvKSA9PSBHaXZlVXBP
bkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHVi
SW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJp
Yyk7CisgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3Bl
cmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYyk7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUluc3RhbmNlT2YoCkBAIC0xMTM5LDcgKzExNzIsNyBAQCBzdGF0aWMgSW5s
aW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jZU9mKAogICAgICAgICAKICAgICAgICAgSlND
ZWxsKiB2YWx1ZSA9IHZhbHVlVmFsdWUuYXNDZWxsKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdmFsdWUtPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPiBuZXdDYXNlOworICAgICAgICBSZWZQdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZTsK
ICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgcHJvdG90eXBlVmFsdWUpOwogICAgICAgICBpZiAocHJvdG90eXBlKSB7CiAgICAgICAgICAg
ICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdmFsdWUpKSB7CkBAIC0xMTczLDEw
ICsxMjA2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5zdGFuY2VPZigK
ICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5zdGFuY2VPZlJlcGxhY2VXaXRoSnVtcCwg
c3RydWN0dXJlLT5jbGFzc0luZm8oKSwgSWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwotCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0
Y2hhYmxlSnVtcCgpLAotICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CisgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6
OnJld2lyZVN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywg
c3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQu
Y29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMTkxLDcgKzEyMjEsNyBAQCB2
b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKAogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKICAgICBpZiAodHJ5Q2FjaGVJbnN0YW5jZU9mKGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCB2YWx1ZVZhbHVlLCBwcm90b3R5cGVWYWx1ZSwgc3R1YkluZm8sIHdhc0Zv
dW5kKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5zdGFu
Y2VPZkdlbmVyaWMpOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKTsKIH0KIAogc3RhdGljIHZvaWQgbGlu
a1Nsb3dQYXRoVG8oVk0mLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBjb2RlUmVmKQpAQCAtMTIwOCw3ICsxMjM4
LDcgQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbykKIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2FsbExpbmtJbmZvKTsKICAg
ICBsaW5rU2xvd1BhdGhUbyh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwotICAgIGNh
bGxMaW5rSW5mby5zZXRTbG93U3R1YihHQ0F3YXJlSklUU3R1YlJvdXRpbmU6OmNyZWF0ZSh2aXJ0
dWFsVGh1bmssIHZtKSk7CisgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRT
dHViUm91dGluZTo6Y3JlYXRlKHZtLCB2aXJ0dWFsVGh1bmspKTsKIH0KIAogc3RhdGljIEpTQ2Vs
bCogd2ViQXNzZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKQEAgLTEzMjYsNyArMTM1Niw3IEBA
IHN0YXRpYyB2b2lkIGxpbmtWaXJ0dWFsRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZpcnR1YWxUaHVua0Zvcih2bSwgY2Fs
bExpbmtJbmZvKTsKICAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8sIHZpcnR1YWxUaHVu
ayk7Ci0gICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKEdDQXdhcmVKSVRTdHViUm91dGluZTo6
Y3JlYXRlKHZpcnR1YWxUaHVuaywgdm0pKTsKKyAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIo
R0NBd2FyZUpJVFN0dWJSb3V0aW5lOjpjcmVhdGUodm0sIHZpcnR1YWxUaHVuaykpOwogICAgIGNh
bGxMaW5rSW5mby5zZXRDbGVhcmVkQnlWaXJ0dWFsKCk7CiB9CiAKQEAgLTE2NDcsMTQgKzE2Nzcs
MjYgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDYWwKIAogdm9pZCByZXNldEdldEJ5KENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEdldEJ5S2luZCBraW5k
KQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNs
b3dQYXRoQ2FsbExvY2F0aW9uLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtp
bmQpKTsKLSAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKGtpbmQp
KTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsOgorICAg
IGNhc2UgR2V0QnlLaW5kOjpXaXRoVGhpczoKKyAgICBjYXNlIEdldEJ5S2luZDo6VHJ5OgorICAg
IGNhc2UgR2V0QnlLaW5kOjpEaXJlY3Q6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZhdGVOYW1l
QnlJZDoKKyAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2Rl
QmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeUtpbmQ6Ok5v
cm1hbEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKKyAgICAgICAgSW5s
aW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNv
ZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgcmVz
ZXRQdXRCeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCiB7CiAgICAgdXNpbmcgRnVuY3Rpb25UeXBlID0gZGVjbHR5cGUoJm9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVu
Y3Rpb24gPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdl
dChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKS5leGVjdXRhYmxlQWRk
cmVzcygpKTsKKyAgICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RnVuY3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1
YkluZm8pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIEZ1bmN0aW9uVHlwZSBvcHRpbWl6ZWRG
dW5jdGlvbjsKICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9w
dGltaXplKQogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRTdHJp
Y3RPcHRpbWl6ZTsKQEAgLTE2NzEsNDggKzE3MTMsNDkgQEAgdm9pZCByZXNldFB1dEJ5SUQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICAgICAg
b3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1p
emU7CiAgICAgfQogCi0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKLSAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LCBvcHRpbWl6ZWRGdW5jdGlvbik7CisgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJ
bkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldERlbEJ5KENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBr
aW5kKQogewogICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQotICAgICAgICBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2Nh
dGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKKyAgICAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUp
OwogICAgIGVsc2UKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1Yklu
Zm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKLX0KLQotc3RhdGljIHZvaWQgcmVzZXRQYXRjaGFi
bGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKLXsKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0
aFN0YXJ0TG9jYXRpb24pOworICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOworICAgIElubGluZUFjY2Vz
czo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ss
IHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKIHsKLSAgICBpZiAoa2lu
ZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwo
Y29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUpOwotICAgIGVsc2UKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlWYWxP
cHRpbWl6ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHN3aXRjaCAoa2luZCkgeworICAg
IGNhc2UgSW5CeUtpbmQ6Ok5vcm1hbDoKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2Rl
QmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgICAgIElubGlu
ZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgICAgICBy
ZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkluQnlWYWxP
cHRpbWl6ZSk7CisgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NO
b3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogfQogCi12b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogewotICAgIHJlc2V0UGF0Y2hhYmxlSnVtcChzdHViSW5m
byk7CisgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcGVyYXRp
b25JbnN0YW5jZU9mT3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1w
SW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAog
dm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkNoZWNrUHJp
dmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChz
dHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKKyAgICByZXBhdGNoU2xv
d1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
T3B0aW1pemUpOworICAgIElubGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RV
c2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogdm9pZCByZXNldFNl
dFByaXZhdGVCcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJ
bmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZSk7Ci0gICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBzdHViSW5m
by5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOworICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJs
b2NrLCBzdHViSW5mbywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOworICAgIElu
bGluZUFjY2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhj
b2RlQmxvY2ssIHN0dWJJbmZvKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKFZNJiB2bSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBKU09iamVjdCogY2FsbGVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRl
eCA5MjhjOTliMTI5MTlhMWEwMWEzNDJhNjVmNzg1YzRlNDZhMGUxZmY3Li41OWExNWI5MGVjOTQx
YjAxZmY4NjE1NzU4Y2I3MWQ3NWYyZWVlMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guaApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0
dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5SUQoQ29kZUJsb2NrKiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXREZWxCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIERlbEJ5S2luZCk7CiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIEluQnlLaW5kKTsKLXZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVy
ZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0SW5zdGFuY2VPZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxv
Y2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggNDE2MzI0ODE5MjVjNDU1YzA3ZmU2YmIzMmYzMTM2OWE3
NGE5NGE5Mi4uOWQyM2MyNjEyYTEzZWU5OTBkNzMxYTAyNGI1MzA3YjA2YjM3YWZmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTQzMyw2ICs0MzMsMTEg
QEAgdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKICAgICBPcHRpb25z
Ojp1c2VDb25jdXJyZW50R0MoKSA9IGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoIWlzQVJNNjQo
KSkKKyAgICAgICAgT3B0aW9uczo6dXNlRGF0YUlDKCkgPSBmYWxzZTsKKyAgICBpZiAoIU9wdGlv
bnM6OnVzZURhdGFJQygpKQorICAgICAgICBPcHRpb25zOjp1c2VEYXRhSUNJbk9wdGltaXppbmdK
SVQoKSA9IGZhbHNlOworCiAgICAgLy8gQXQgaW5pdGlhbGl6YXRpb24gdGltZSwgd2UgbWF5IGRl
Y2lkZSB0aGF0IHVzZUpJVCBzaG91bGQgYmUgZmFsc2UgZm9yIGFueQogICAgIC8vIG51bWJlciBv
ZiByZWFzb25zIChpbmNsdWRpbmcgZmFpbGluZyB0byBhbGxvY2F0ZSBKSVQgbWVtb3J5KSwgYW5k
IHRoZXJlZm9yZSwKICAgICAvLyB3aWxsIC8gc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGVuYWJsZSBh
bnkgSklUIHJlbGF0ZWQgc2VydmljZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaAppbmRleCBjOWRlNmE4YTM4YzExYjY5Mzc2MTljMWU1OTRhZDE0NTFiM2Yx
YTk5Li40MDhmYmI2OWNjYjA5YTExM2QxMjIzY2MyNDU1ZWQ2NmQzYTViOTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUzOCw2ICs1MzgsOCBA
QCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIHVz
ZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29s
LCB1c2VUb3BMZXZlbEF3YWl0LCB0cnVlLCBOb3JtYWwsICJhbGxvdyB0aGUgYXdhaXQga2V5d29y
ZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLiIpIFwKICAgICB2KEJvb2wsIHZlcmJvc2VF
eGVjdXRhYmxlUG9vbEFsbG9jYXRpb24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2
KEJvb2wsIHVzZURhdGFJQywgaXNBUk02NCgpLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJv
b2wsIHVzZURhdGFJQ0luT3B0aW1pemluZ0pJVCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAog
CiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCmluZGV4IDhkMDdhMjc1NzgzMzQwYmVhNGUxMGRk
YTQ5MTYzZDEzYjQ5ODNmMTIuLmI4ZGQ0Y2JkNWQyODEwMTU3ZjlhOTliZDljYjBmMDU1MWEzNmQ5
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRh
YmxlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJ1Y3R1cmU7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotdHlwZWRlZiB1aW50MzJfdCBTdHJ1Y3R1cmVJRDsKK3Vz
aW5nIFN0cnVjdHVyZUlEID0gdWludDMyX3Q7CiAKIGlubGluZSBTdHJ1Y3R1cmVJRCBudWtlZFN0
cnVjdHVyZUlEQml0KCkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIFN0cnVjdHVyZUlEIGRl
Y29udGFtaW5hdGUoU3RydWN0dXJlSUQgaWQpCiAgICAgcmV0dXJuIGlkICYgfm51a2VkU3RydWN0
dXJlSURCaXQoKTsKIH0KICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotdHlwZWRlZiBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZUlEOwordXNpbmcgU3RydWN0dXJlSUQgPSBTdHJ1Y3R1cmUqOwogCiBp
bmxpbmUgU3RydWN0dXJlSUQgbnVrZWRTdHJ1Y3R1cmVJREJpdCgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggYmVhYzg2ZWIwZWI4Y2Y1MTM4ZWZiZmRjMzgyMzQ3NDJi
OGNiZGUxMS4uNGMxYmU0MTgxZmQyNzk4MzQ4MGZiYjk1YjczZTU0MTVjN2Y0YzZmNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCiAj
aW5jbHVkZSAiQWdncmVnYXRlRXJyb3IuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVk
ZSAiQmlnSW50T2JqZWN0LmgiCkBAIC01NjcsNiArNTY4LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqIHJ1bkxvb3AsIGJvb2wqIHN1Y2Nl
c3MpCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVu
Y3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxG
dW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIG1fc2hhcmVk
SklUU3R1YnMgPSBtYWtlVW5pcXVlPFNoYXJlZEpJVFN0dWJTZXQ+KCk7CiAgICAgfQogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCiAKQEAgLTY1NSw2ICs2NTcsMTAgQEAgVk06On5WTSgpCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2NyYXRjaEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIFZNTWFsbG9jOjpmcmVlKG1fc2NyYXRjaEJ1ZmZlcnNbaV0pOwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoSklUKQorICAgIG1fc2hhcmVkSklUU3R1YnMgPSBudWxscHRyOworI2VuZGlmCiB9CiAK
IHZvaWQgVk06OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWRDYWxsYmFjayh2b2lkKiBhcmd1bWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGU5ZTA2YTc2NWFjNmJiMGNkYTIz
YjRlNWZhNmY2N2QwZjJhNjFkNTUuLjQyMGRlYzBiOGZlNTgyYmU3NjVkMmJhYzYyNTg3MzdmNDNi
ZjZlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTc1LDYgKzE3NSw3IEBA
IGNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OwogY2xhc3MgU2FtcGxpbmdQcm9maWxlcjsKICNl
bmRpZgogY2xhc3MgU2hhZG93Q2hpY2tlbjsKK2NsYXNzIFNoYXJlZEpJVFN0dWJTZXQ7CiBjbGFz
cyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBTb3VyY2VQ
cm92aWRlckNhY2hlOwpAQCAtODQ2LDExICs4NDcsMTMgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsK
ICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJz
OwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJU3R1YihU
aHVua0dlbmVyYXRvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZEpJVFN0dWJTZXQ+IG1f
c2hhcmVkSklUU3R1YnM7CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShGVExf
SklUKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxGVEw6OlRodW5rcz4gZnRsVGh1bmtzOwogI2VuZGlm
CisKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIGdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
LCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNWNmMDYwYTFmMzljMjc3NzBjZDI0YmMxNDQ4ZDQ2OWQwMGI5MTk1
YS4uZDQzYzI2NDY3NzA1NjBkNGEwMzkxZmY2N2RmMDY4ODI3YjRmZjFiYiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDIxLTA2LTA4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gVXNlIERhdGFJQyBmb3IgQWNjZXNzQ2FzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkgYW5kIEZpbGlwIFBpemxvLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czoKKwogMjAyMS0wNi0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBXZWJLaXQgc3VwcG9ydCBmb3IgTGl2ZSBUZXh0
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMv
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBlNjE0MWI1ZTcyNDlhMGQzM2MwMzIy
NTkyM2NlZTAxNzJkYTVmMGQzLi45Y2NkYTE4MzIyYzc2YzJkZDliNzdhOTIzY2UyZDFjOTNjODhl
MDcxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTU1Miw3ICs1NTIsNyBAQCBC
QVNFX09QVElPTlMgPSBbIi0tdXNlRlRMSklUPWZhbHNlIiwgIi0tdXNlRnVuY3Rpb25Eb3RBcmd1
bWVudHM9dHJ1ZSIsICItLXZhbGlkYQogRUFHRVJfT1BUSU9OUyA9IFsiLS10aHJlc2hvbGRGb3JK
SVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9sZEZvckpJVFNvb249MTAiLCAiLS10aHJlc2hv
bGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRl
ckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJl
c2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0
aW1pemVTb29uPTIwIiwgIi0tdGhyZXNob2xkRm9yT01HT3B0aW1pemVBZnRlcldhcm1VcD0yMCIs
ICItLXRocmVzaG9sZEZvck9NR09wdGltaXplU29vbj0yMCIsICItLW1heGltdW1FdmFsQ2FjaGVh
YmxlU291cmNlTGVuZ3RoPTE1MDAwMCIsICItLXVzZUVhZ2VyQ29kZUJsb2NrSmV0dGlzb25UaW1p
bmc9dHJ1ZSIsICItLXJlcGF0Y2hCdWZmZXJpbmdDb3VudGRvd249MCJdCiAjIE5PVEU6IFRlc3Rz
IHJlbHkgb24gdGhpcyB1c2luZyBzY3JpYmJsZUZyZWVDZWxscy4KIE5PX0NKSVRfT1BUSU9OUyA9
IFsiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIiwgIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJt
VXA9MTAwIiwgIi0tc2NyaWJibGVGcmVlQ2VsbHM9dHJ1ZSJdCi1CM08xX09QVElPTlMgPSBbIi0t
ZGVmYXVsdEIzT3B0TGV2ZWw9MSJdCitCM08xX09QVElPTlMgPSBbIi0tZGVmYXVsdEIzT3B0TGV2
ZWw9MSIsICItLXVzZURhdGFJQ0luT3B0aW1pemluZ0pJVD0xIl0KIEIzTzBfT1BUSU9OUyA9IFsi
LS1tYXhERkdOb2Rlc0luQmFzaWNCbG9ja0ZvclByZWNpc2VBbmFseXNpcz0xMDAiLCAiLS1kZWZh
dWx0QjNPcHRMZXZlbD0wIl0KIEZUTF9PUFRJT05TID0gWyItLXVzZUZUTEpJVD10cnVlIl0KIEZP
UkNFX0xMSU5UX0VYSVRfT1BUSU9OUyA9IFsiLS1mb3JjZU9TUkV4aXRUb0xMSW50PXRydWUiXQpA
QCAtMTYxOSw3ICsxNjE5LDcgQEAgZGVmIHJ1bk5vaXN5VGVzdE5vQ0pJVAogZW5kCiAKIGRlZiBy
dW5Ob2lzeVRlc3ROb0NKSVRCM08xCi0gICAgcnVuTm9pc3lUZXN0KCJmdGwtbm8tY2ppdCIsICIt
LXZhbGlkYXRlQnl0ZWNvZGU9dHJ1ZSIsICItLXZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZT10cnVl
IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIEIzTzFfT1BUSU9OUykpCisgICAg
cnVuTm9pc3lUZXN0KCJmdGwtbm8tY2ppdC1iM28xIiwgIi0tdmFsaWRhdGVCeXRlY29kZT10cnVl
IiwgIi0tdmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlPXRydWUiLCAqKEZUTF9PUFRJT05TICsgTk9f
Q0pJVF9PUFRJT05TICsgQjNPMV9PUFRJT05TKSkKIGVuZAogCiBkZWYgcnVuTm9pc3lUZXN0RWFn
ZXJOb0NKSVQK
</data>
<flag name="commit-queue"
          id="452580"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>